summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorleo2001-01-28 15:19:31 +0000
committerleo2001-01-28 15:19:31 +0000
commit1b876e81d536ed4ca9fd4eb2c49ed5e72c40032d (patch)
treeea0a01ff9425ef9c9d97d1ce7a8a104b227c1d08 /common
parent807910891d43ec08f101425641894fe90063e11f (diff)
Use new variables types
git-svn-id: http://svn.leocad.org/trunk@229 c7d43263-9d01-0410-8a33-9dba5d9f93d6
Diffstat (limited to 'common')
-rw-r--r--common/file.cpp8
-rw-r--r--common/matrix.cpp293
-rw-r--r--common/pieceinf.cpp521
3 files changed, 400 insertions, 422 deletions
diff --git a/common/file.cpp b/common/file.cpp
index 70521a3..435c6c8 100644
--- a/common/file.cpp
+++ b/common/file.cpp
@@ -39,7 +39,7 @@ unsigned long File::ReadShort (void* pBuf, unsigned long nCount)
#ifdef LC_BIG_ENDIAN
unsigned long i;
- unsigned short* val = (unsigned short*)pBuf, x;
+ lcuint16* val = (lcuint16*)pBuf, x;
for (i = 0; i < read; i++)
{
@@ -61,7 +61,7 @@ unsigned long File::ReadLong (void* pBuf, unsigned long nCount)
#ifdef LC_BIG_ENDIAN
unsigned long i;
- unsigned long* val = (unsigned long*)pBuf, x;
+ lcuint32* val = (lcuint32*)pBuf, x;
for (i = 0; i < read; i++)
{
@@ -147,7 +147,7 @@ unsigned long File::WriteShort (const void* pBuf, unsigned long nCount)
{
#ifdef LC_BIG_ENDIAN
unsigned long wrote = 0, i;
- unsigned short* val = (unsigned short*)pBuf, x;
+ lcuint16* val = (lcuint16*)pBuf, x;
for (i = 0; i < nCount; i++)
{
@@ -167,7 +167,7 @@ unsigned long File::WriteLong (const void* pBuf, unsigned long nCount)
{
#ifdef LC_BIG_ENDIAN
unsigned long wrote = 0, i;
- unsigned long* val = (unsigned long*)pBuf, x;
+ lcuint32* val = (lcuint32*)pBuf, x;
for (i = 0; i < nCount; i++)
{
diff --git a/common/matrix.cpp b/common/matrix.cpp
index 7051cc5..73e80f6 100644
--- a/common/matrix.cpp
+++ b/common/matrix.cpp
@@ -1,4 +1,5 @@
-// Matrix class
+//
+// 4x4 Matrix class
//
#include <memory.h>
@@ -7,29 +8,30 @@
#include "matrix.h"
#include "file.h"
#include "defines.h"
-#include "config.h"
+
+// =============================================================================
+// static functions
static float Identity[16] = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 };
// Perform a 4x4 matrix multiplication (product = a x b).
// WARNING: (product != b) assumed
-static void matmul(float *product, const float *a, const float *b)
+static void matmul (float *product, const float *a, const float *b)
{
- int i;
+ int i;
-// #define M(row,col) m[col*4+row]
#define A(row,col) a[(col<<2)+row]
#define B(row,col) b[(col<<2)+row]
#define P(row,col) product[(col<<2)+row]
- for (i = 0; i < 4; i++)
- {
- float ai0=A(i,0), ai1=A(i,1), ai2=A(i,2), ai3=A(i,3);
- P(i,0) = ai0 * B(0,0) + ai1 * B(1,0) + ai2 * B(2,0) + ai3 * B(3,0);
- P(i,1) = ai0 * B(0,1) + ai1 * B(1,1) + ai2 * B(2,1) + ai3 * B(3,1);
- P(i,2) = ai0 * B(0,2) + ai1 * B(1,2) + ai2 * B(2,2) + ai3 * B(3,2);
- P(i,3) = ai0 * B(0,3) + ai1 * B(1,3) + ai2 * B(2,3) + ai3 * B(3,3);
- }
+ for (i = 0; i < 4; i++)
+ {
+ float ai0=A(i,0), ai1=A(i,1), ai2=A(i,2), ai3=A(i,3);
+ P(i,0) = ai0 * B(0,0) + ai1 * B(1,0) + ai2 * B(2,0) + ai3 * B(3,0);
+ P(i,1) = ai0 * B(0,1) + ai1 * B(1,1) + ai2 * B(2,1) + ai3 * B(3,1);
+ P(i,2) = ai0 * B(0,2) + ai1 * B(1,2) + ai2 * B(2,2) + ai3 * B(3,2);
+ P(i,3) = ai0 * B(0,3) + ai1 * B(1,3) + ai2 * B(2,3) + ai3 * B(3,3);
+ }
#undef A
#undef B
@@ -37,62 +39,56 @@ static void matmul(float *product, const float *a, const float *b)
}
// Generate a 4x4 transformation matrix from rotation parameters.
-static void rotation_matrix(double angle, float x, float y, float z, float m[] )
-{
- float s, c, mag, xx, yy, zz, xy, yz, zx, xs, ys, zs, one_c;
-
- s = (float)sin (angle * DTOR);
- c = (float)cos (angle * DTOR);
- mag = (float)sqrt(x*x + y*y + z*z);
-
- if (mag == 0)
- {
- // generate an identity matrix and return
- memcpy(m, Identity, sizeof(float[16]));
- return;
- }
-
- x /= mag;
- y /= mag;
- z /= mag;
-
- xx = x * x;
- yy = y * y;
- zz = z * z;
- xy = x * y;
- yz = y * z;
- zx = z * x;
- xs = x * s;
- ys = y * s;
- zs = z * s;
- one_c = 1.0f - c;
-
- m[0] = (one_c * xx) + c;
- m[4] = (one_c * xy) - zs;
- m[8] = (one_c * zx) + ys;
- m[12]= 0;
-
- m[1] = (one_c * xy) + zs;
- m[5] = (one_c * yy) + c;
- m[9] = (one_c * yz) - xs;
- m[13]= 0;
-
- m[2] = (one_c * zx) - ys;
- m[6] = (one_c * yz) + xs;
- m[10]= (one_c * zz) + c;
- m[14]= 0;
-
- m[3] = 0;
- m[7] = 0;
- m[11]= 0;
- m[15]= 1;
-}
-/*
-double PointDistance (double x1, double y1, double z1, double x2, double y2, double z2)
+static void rotation_matrix (double angle, float x, float y, float z, float m[] )
{
- return sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)+(z2-z1)*(z2-z1));
+ float s, c, mag, xx, yy, zz, xy, yz, zx, xs, ys, zs, one_c;
+
+ s = (float)sin (angle * DTOR);
+ c = (float)cos (angle * DTOR);
+ mag = (float)sqrt(x*x + y*y + z*z);
+
+ if (mag == 0)
+ {
+ // generate an identity matrix and return
+ memcpy (m, Identity, sizeof(float[16]));
+ return;
+ }
+
+ x /= mag;
+ y /= mag;
+ z /= mag;
+
+ xx = x * x;
+ yy = y * y;
+ zz = z * z;
+ xy = x * y;
+ yz = y * z;
+ zx = z * x;
+ xs = x * s;
+ ys = y * s;
+ zs = z * s;
+ one_c = 1.0f - c;
+
+ m[0] = (one_c * xx) + c;
+ m[4] = (one_c * xy) - zs;
+ m[8] = (one_c * zx) + ys;
+ m[12]= 0;
+
+ m[1] = (one_c * xy) + zs;
+ m[5] = (one_c * yy) + c;
+ m[9] = (one_c * yz) - xs;
+ m[13]= 0;
+
+ m[2] = (one_c * zx) - ys;
+ m[6] = (one_c * yz) + xs;
+ m[10]= (one_c * zz) + c;
+ m[14]= 0;
+
+ m[3] = 0;
+ m[7] = 0;
+ m[11]= 0;
+ m[15]= 1;
}
-*/
// =============================================================================
// Matrix class
@@ -178,42 +174,24 @@ Matrix::~Matrix()
{
}
-#ifdef LC_BIG_ENDIAN
-
-float __LittleFloat (float l)
-{
- union { unsigned char b[4]; float f; } in, out;
-
- in.f = l;
- out.b[0] = in.b[3];
- out.b[1] = in.b[2];
- out.b[2] = in.b[1];
- out.b[3] = in.b[0];
-
- return out.f;
-}
-#else
-#define __LittleFloat(a) a
-#endif
-
// Expand from the .bin file
void Matrix::FromPacked (const float *mat)
{
- m[0] = __LittleFloat (mat[0]);
- m[1] = __LittleFloat (mat[1]);
- m[2] = __LittleFloat (mat[2]);
+ m[0] = mat[0];
+ m[1] = mat[1];
+ m[2] = mat[2];
m[3] = 0.0f;
- m[4] = __LittleFloat (mat[3]);
- m[5] = __LittleFloat (mat[4]);
- m[6] = __LittleFloat (mat[5]);
+ m[4] = mat[3];
+ m[5] = mat[4];
+ m[6] = mat[5];
m[7] = 0.0f;
- m[8] = __LittleFloat (mat[6]);
- m[9] = __LittleFloat (mat[7]);
- m[10] = __LittleFloat (mat[8]);
+ m[8] = mat[6];
+ m[9] = mat[7];
+ m[10] = mat[8];
m[11] = 0.0f;
- m[12] = __LittleFloat (mat[9]);
- m[13] = __LittleFloat (mat[10]);
- m[14] = __LittleFloat (mat[11]);
+ m[12] = mat[9];
+ m[13] = mat[10];
+ m[14] = mat[11];
m[15] = 0.0f;
}
@@ -222,78 +200,81 @@ void Matrix::FromFloat (const float* mat)
memcpy (&m[0], mat, sizeof(float[16]));
}
-void Matrix::LoadIdentity()
+void Matrix::LoadIdentity ()
{
memcpy (&m[0], &Identity, sizeof(float[16]));
}
-void Matrix::Multiply(Matrix& m1, Matrix& m2)
+void Matrix::Multiply (Matrix& m1, Matrix& m2)
{
matmul (m, m1.m, m2.m);
}
-void Matrix::Rotate(float angle, float x, float y, float z)
+void Matrix::Rotate (float angle, float x, float y, float z)
{
- if (angle == 0.0) return;
- float rm[16];
- rotation_matrix(angle, x, y, z, rm);
- matmul(rm, rm, m);
- memcpy (&m[0], &rm[0], sizeof(rm));
+ float rm[16];
+
+ if (angle == 0.0)
+ return;
+
+ rotation_matrix(angle, x, y, z, rm);
+ matmul(rm, rm, m);
+ memcpy (&m[0], &rm[0], sizeof(rm));
- for (int i = 0; i < 12; i++)
- if (fabs (m[i]) < .001f)
- m[i] = 0;
+ for (int i = 0; i < 12; i++)
+ if (fabs (m[i]) < .001f)
+ m[i] = 0;
}
-void Matrix::RotateCenter(float angle, float x, float y, float z, float px, float py, float pz)
+void Matrix::RotateCenter (float angle, float x, float y, float z, float px, float py, float pz)
{
- m[12] -= px;
- m[13] -= py;
- m[14] -= pz;
+ m[12] -= px;
+ m[13] -= py;
+ m[14] -= pz;
- Rotate(angle, x, y, z);
+ Rotate (angle, x, y, z);
- m[12] += px;
- m[13] += py;
- m[14] += pz;
+ m[12] += px;
+ m[13] += py;
+ m[14] += pz;
}
-void Matrix::Translate(float x, float y, float z)
+void Matrix::Translate (float x, float y, float z)
{
- m[12] = m[0] * x + m[4] * y + m[8] * z + m[12];
- m[13] = m[1] * x + m[5] * y + m[9] * z + m[13];
- m[14] = m[2] * x + m[6] * y + m[10] * z + m[14];
- m[15] = m[3] * x + m[7] * y + m[11] * z + m[15];
+ m[12] = m[0] * x + m[4] * y + m[8] * z + m[12];
+ m[13] = m[1] * x + m[5] * y + m[9] * z + m[13];
+ m[14] = m[2] * x + m[6] * y + m[10] * z + m[14];
+ m[15] = m[3] * x + m[7] * y + m[11] * z + m[15];
}
-void Matrix::SetTranslation(float x, float y, float z)
+void Matrix::SetTranslation (float x, float y, float z)
{
- m[12] = x;
- m[13] = y;
- m[14] = z;
- m[15] = 1;
+ m[12] = x;
+ m[13] = y;
+ m[14] = z;
+ m[15] = 1;
}
-void Matrix::GetTranslation(float* x, float* y, float* z)
+void Matrix::GetTranslation (float* x, float* y, float* z)
{
- *x = m[12];
- *y = m[13];
- *z = m[14];
+ *x = m[12];
+ *y = m[13];
+ *z = m[14];
}
-void Matrix::GetTranslation(float pos[3])
+void Matrix::GetTranslation (float pos[3])
{
- pos[0] = m[12];
- pos[1] = m[13];
- pos[2] = m[14];
+ pos[0] = m[12];
+ pos[1] = m[13];
+ pos[2] = m[14];
}
-void Matrix::SetTranslation(float pos[3])
+void Matrix::SetTranslation (float pos[3])
{
- m[12] = pos[0];
- m[13] = pos[1];
- m[14] = pos[2];
- m[15] = 1;
+ m[12] = pos[0];
+ m[13] = pos[1];
+ m[14] = pos[2];
+ m[15] = 1;
}
void Matrix::Create(float mx, float my, float mz, float rx, float ry, float rz)
@@ -338,23 +319,27 @@ void Matrix::TransformPoints (float p[], int n)
void Matrix::FromLDraw (const float *f)
{
- float trans[16] = { 1,0,0,0, 0,0,-1,0, 0,1,0,0, 0,0,0,1 };
- float t[16] = { 1,0,0,0, 0,0,1,0, 0,-1,0,0, 0,0,0,1 };
- m[0] = f[3]; m[1] = f[6]; m[2] = f[9];
- m[4] = f[4]; m[5] = f[7]; m[6] = f[10];
- m[8] = f[5]; m[9] = f[8]; m[10]= f[11];
- m[12]= f[0]/25; m[13]= f[1]/25; m[14]= f[2]/25;
- matmul (m, m, t);
- matmul (trans, trans, m);
- memcpy (&m[0], &trans[0], sizeof(m));
+ float trans[16] = { 1,0,0,0, 0,0,-1,0, 0,1,0,0, 0,0,0,1 };
+ float t[16] = { 1,0,0,0, 0,0,1,0, 0,-1,0,0, 0,0,0,1 };
+
+ m[0] = f[3]; m[1] = f[6]; m[2] = f[9];
+ m[4] = f[4]; m[5] = f[7]; m[6] = f[10];
+ m[8] = f[5]; m[9] = f[8]; m[10]= f[11];
+ m[12]= f[0]/25; m[13]= f[1]/25; m[14]= f[2]/25;
+
+ matmul (m, m, t);
+ matmul (trans, trans, m);
+ memcpy (&m[0], &trans[0], sizeof(m));
}
void Matrix::ToLDraw (float *f) const
{
float trans[16] = { 1,0,0,0, 0,0,-1,0, 0,1,0,0, 0,0,0,1 };
float tmp[16] = { 1,0,0,0, 0,0,1,0, 0,-1,0,0, 0,0,0,1 };
+
matmul(tmp, tmp, m);
matmul (tmp, tmp, trans);
+
f[0] = m[12]*25; f[1] = -m[14]*25; f[2] = m[13]*25;
f[3] = tmp[0]; f[4] = tmp[4]; f[5] = tmp[8];
f[6] = tmp[1]; f[7] = tmp[5]; f[8] = tmp[9];
@@ -365,12 +350,12 @@ void Matrix::FileLoad (File& file)
{
float tmp[12];
- file.Read (&tmp, sizeof(tmp));
+ file.ReadLong (&tmp, 12);
- m[0] = tmp[0]; m[1] = tmp[1]; m[2] = tmp[2];
- m[4] = tmp[3]; m[5] = tmp[4]; m[6] = tmp[5];
- m[8] = tmp[6]; m[9] = tmp[7]; m[10]= tmp[8];
- m[12]= tmp[9]; m[13]= tmp[10]; m[14]= tmp[11];
+ m[0] = tmp[0]; m[1] = tmp[1]; m[2] = tmp[2]; m[3] = 0.0f;
+ m[4] = tmp[3]; m[5] = tmp[4]; m[6] = tmp[5]; m[7] = 0.0f;
+ m[8] = tmp[6]; m[9] = tmp[7]; m[10]= tmp[8]; m[11]= 0.0f;
+ m[12]= tmp[9]; m[13]= tmp[10]; m[14]= tmp[11]; m[15]= 1.0f;
}
void Matrix::FileSave (File& file) const
@@ -382,7 +367,7 @@ void Matrix::FileSave (File& file) const
tmp[6] = m[8]; tmp[7] = m[9]; tmp[8] = m[10];
tmp[9] = m[12]; tmp[10]= m[13]; tmp[11]= m[14];
- file.Write (&tmp, sizeof(tmp));
+ file.WriteLong (&tmp, 12);
}
void Matrix::ToEulerAngles (float *rot) const
diff --git a/common/pieceinf.cpp b/common/pieceinf.cpp
index f98e109..d8d02b3 100644
--- a/common/pieceinf.cpp
+++ b/common/pieceinf.cpp
@@ -263,14 +263,14 @@ void PieceInfo::LoadInformation()
{
FileDisk bin;
char filename[LC_MAXPATH];
- void* buf;
- unsigned long verts, *longs, fixverts;
- unsigned char *bytes, *tmp, bt;
- unsigned short *ushorts, sh;
- float scale, shift;
- short* shorts;
CONNECTIONINFO* pConnection;
DRAWGROUP* pGroup;
+ void* buf;
+ lcuint32 verts, *longs, fixverts;
+ lcuint16 *ushorts, sh;
+ lcuint8 *bytes, *tmp, bt;
+ float scale, shift;
+ lcint16* shorts;
int i, j;
// We don't want memory leaks.
@@ -322,37 +322,18 @@ void PieceInfo::LoadInformation()
bin.Read(buf, m_nSize);
bin.Close();
- // hacks to get things working on big endian machines
-#ifdef LC_BIG_ENDIAN
-#define GUINT16(val) ((unsigned short) ( \
- (((unsigned short) (val) & (unsigned short) 0x00ffU) << 8) | \
- (((unsigned short) (val) & (unsigned short) 0xff00U) >> 8)))
-#define GUINT32(val) ((unsigned long) ( \
- (((unsigned long) (val) & (unsigned long) 0x000000ffU) << 24) | \
- (((unsigned long) (val) & (unsigned long) 0x0000ff00U) << 8) | \
- (((unsigned long) (val) & (unsigned long) 0x00ff0000U) >> 8) | \
- (((unsigned long) (val) & (unsigned long) 0xff000000U) >> 24)))
-#define GINT16(val) ((short)GUINT16(val))
-#define GINT32(val) ((long)GUINT32(val))
-#else
-#define GUINT16(val) val
-#define GUINT32(val) val
-#define GINT16(val) val
-#define GINT32(val) val
-#endif
-
shift = 1.0f/(1<<14);
scale = 0.01f;
if (m_nFlags & LC_PIECE_MEDIUM) scale = 0.001f;
if (m_nFlags & LC_PIECE_SMALL) scale = 0.0001f;
- longs = (unsigned long*)buf;
- fixverts = verts = GUINT32(*longs);
+ longs = (lcuint32*)buf;
+ fixverts = verts = LCUINT32(*longs);
bytes = (unsigned char*)(longs + 1);
- bytes += verts * sizeof(short) * 3;
+ bytes += verts * sizeof(lcint16) * 3;
// Read connections
- m_nConnectionCount = GUINT16(*((unsigned short*)bytes));
- bytes += sizeof (unsigned short);
+ m_nConnectionCount = LCUINT16(*((lcuint16*)bytes));
+ bytes += sizeof (lcuint16);
m_pConnections = (CONNECTIONINFO*)malloc (m_nConnectionCount * sizeof(CONNECTIONINFO));
sh = m_nConnectionCount;
@@ -361,18 +342,18 @@ void PieceInfo::LoadInformation()
pConnection->type = *bytes;
bytes++;
- shorts = (short*)bytes;
- pConnection->center[0] = (float)(GINT16(*shorts))*scale;
+ shorts = (lcint16*)bytes;
+ pConnection->center[0] = (float)(LCINT16(*shorts))*scale;
shorts++;
- pConnection->center[1] = (float)(GINT16(*shorts))*scale;
+ pConnection->center[1] = (float)(LCINT16(*shorts))*scale;
shorts++;
- pConnection->center[2] = (float)(GINT16(*shorts))*scale;
+ pConnection->center[2] = (float)(LCINT16(*shorts))*scale;
shorts++;
- pConnection->normal[0] = (float)(GINT16(*shorts))*shift;
+ pConnection->normal[0] = (float)(LCINT16(*shorts))*shift;
shorts++;
- pConnection->normal[1] = (float)(GINT16(*shorts))*shift;
+ pConnection->normal[1] = (float)(LCINT16(*shorts))*shift;
shorts++;
- pConnection->normal[2] = (float)(GINT16(*shorts))*shift;
+ pConnection->normal[2] = (float)(LCINT16(*shorts))*shift;
shorts++;
bytes = (unsigned char*)shorts;
@@ -394,40 +375,40 @@ void PieceInfo::LoadInformation()
strcpy(name, (char*)bytes);
tex->texture = project->FindTexture(name);
- shorts = (short*)(bytes + 8);
+ shorts = (lcint16*)(bytes + 8);
for (i = 0; i < 4; i++)
{
- tex->vertex[i][0] = (float)GINT16(shorts[0])*scale;
- tex->vertex[i][1] = (float)GINT16(shorts[1])*scale;
- tex->vertex[i][2] = (float)GINT16(shorts[2])*scale;
+ tex->vertex[i][0] = (float)LCINT16(shorts[0])*scale;
+ tex->vertex[i][1] = (float)LCINT16(shorts[1])*scale;
+ tex->vertex[i][2] = (float)LCINT16(shorts[2])*scale;
shorts += 3;
}
for (i = 0; i < 4; i++)
{
- tex->coords[i][0] = (float)GINT16(shorts[0]);
- tex->coords[i][1] = (float)GINT16(shorts[1]);
+ tex->coords[i][0] = (float)LCINT16(shorts[0]);
+ tex->coords[i][1] = (float)LCINT16(shorts[1]);
shorts += 2;
}
- bytes += 8 + 20*sizeof(unsigned short);
+ bytes += 8 + 20*sizeof(lcuint16);
}
// Read groups
- m_nGroupCount = GUINT16(*((unsigned short*)bytes));
- bytes += sizeof(unsigned short);
+ m_nGroupCount = LCUINT16(*((lcuint16*)bytes));
+ bytes += sizeof(lcuint16);
m_pGroups = (DRAWGROUP*)malloc(sizeof(DRAWGROUP)*m_nGroupCount);
memset(m_pGroups, 0, sizeof(DRAWGROUP)*m_nGroupCount);
// First we need to know the number of vertexes
tmp = bytes;
sh = m_nGroupCount;
- unsigned long quads = 0;
+ lcuint32 quads = 0;
while (sh--)
{
bt = *bytes;
bytes++;
- bytes += bt*sizeof(unsigned short);
+ bytes += bt*sizeof(lcuint16);
while (*bytes)
{
@@ -435,36 +416,36 @@ void PieceInfo::LoadInformation()
{
if (fixverts > 65535)
{
- unsigned long colors, *p;
- p = (unsigned long*)(bytes + 1);
- colors = GUINT32(*p);
+ lcuint32 colors, *p;
+ p = (lcuint32*)(bytes + 1);
+ colors = LCUINT32(*p);
p++;
while (colors--)
{
p++; // color code
- quads += GUINT32(*p);
- p += GUINT32(*p) + 1;
- p += GUINT32(*p) + 1;
- p += GUINT32(*p) + 1;
+ quads += LCUINT32(*p);
+ p += LCUINT32(*p) + 1;
+ p += LCUINT32(*p) + 1;
+ p += LCUINT32(*p) + 1;
}
bytes = (unsigned char*)p;
}
else
{
- unsigned short colors, *p;
- p = (unsigned short*)(bytes + 1);
- colors = GUINT16(*p);
+ lcuint16 colors, *p;
+ p = (lcuint16*)(bytes + 1);
+ colors = LCUINT16(*p);
p++;
while (colors--)
{
p++; // color code
- quads += GUINT16(*p);
- p += GUINT16(*p) + 1;
- p += GUINT16(*p) + 1;
- p += GUINT16(*p) + 1;
+ quads += LCUINT16(*p);
+ p += LCUINT16(*p) + 1;
+ p += LCUINT16(*p) + 1;
+ p += LCUINT16(*p) + 1;
}
bytes = (unsigned char*)p;
@@ -510,14 +491,14 @@ void PieceInfo::LoadInformation()
m_nFlags &= ~LC_PIECE_LONGDATA;
// Copy the 'fixed' vertexes
- shorts = (short*)(longs + 1);
- for (verts = 0; verts < GUINT32(*longs); verts++)
+ shorts = (lcint16*)(longs + 1);
+ for (verts = 0; verts < LCUINT32(*longs); verts++)
{
- m_fVertexArray[verts*3] = (float)GINT16(*shorts)*scale;
+ m_fVertexArray[verts*3] = (float)LCINT16(*shorts)*scale;
shorts++;
- m_fVertexArray[verts*3+1] = (float)GINT16(*shorts)*scale;
+ m_fVertexArray[verts*3+1] = (float)LCINT16(*shorts)*scale;
shorts++;
- m_fVertexArray[verts*3+2] = (float)GINT16(*shorts)*scale;
+ m_fVertexArray[verts*3+2] = (float)LCINT16(*shorts)*scale;
shorts++;
}
@@ -532,9 +513,9 @@ void PieceInfo::LoadInformation()
pGroup->connections[bt] = 0xFFFF;
while(bt--)
{
- unsigned short tmp = GUINT16(*((unsigned short*)bytes));
+ lcuint16 tmp = LCUINT16(*((lcuint16*)bytes));
pGroup->connections[bt] = tmp;
- bytes += sizeof(unsigned short);
+ bytes += sizeof(lcuint16);
}
// Currently there's only one type of drawinfo (mesh or stud)
@@ -544,29 +525,29 @@ void PieceInfo::LoadInformation()
case LC_MESH:
if (fixverts > 65535)
{
- unsigned long colors, *p;
+ lcuint32 colors, *p;
bytes++;
- p = (unsigned long*)bytes;
- *p = GUINT32(*p);
+ p = (lcuint32*)bytes;
+ *p = LCUINT32(*p);
colors = *p;
p++;
while (colors--)
{
- *p = ConvertColor(GUINT32(*p));
+ *p = ConvertColor(LCUINT32(*p));
p++; // color code
#ifdef LC_BIG_ENDIAN
int f;
- f = GUINT32(*p) + 1;
- while (f--) { *p = GUINT32(*p); p++; };
- f = GUINT32(*p) + 1;
- while (f--) { *p = GUINT32(*p); p++; };
- f = GUINT32(*p) + 1;
- while (f--) { *p = GUINT32(*p); p++; };
+ f = LCUINT32(*p) + 1;
+ while (f--) { *p = LCUINT32(*p); p++; };
+ f = LCUINT32(*p) + 1;
+ while (f--) { *p = LCUINT32(*p); p++; };
+ f = LCUINT32(*p) + 1;
+ while (f--) { *p = LCUINT32(*p); p++; };
#else
- p += GUINT32(*p) + 1;
- p += GUINT32(*p) + 1;
- p += GUINT32(*p) + 1;
+ p += LCUINT32(*p) + 1;
+ p += LCUINT32(*p) + 1;
+ p += LCUINT32(*p) + 1;
#endif
}
@@ -577,25 +558,25 @@ void PieceInfo::LoadInformation()
}
else
{
- unsigned short colors, *p;
+ lcuint16 colors, *p;
bytes++;
- p = (unsigned short*)bytes;
- *p = GUINT16(*p);
+ p = (lcuint16*)bytes;
+ *p = LCUINT16(*p);
colors = *p;
p++;
while (colors--)
{
- *p = ConvertColor(GUINT16(*p));
+ *p = ConvertColor(LCUINT16(*p));
p++; // color code
#ifdef LC_BIG_ENDIAN
int f;
- f = GUINT16(*p) + 1;
- while (f--) { *p = GUINT16(*p); p++; };
- f = GUINT16(*p) + 1;
- while (f--) { *p = GUINT16(*p); p++; };
- f = GUINT16(*p) + 1;
- while (f--) { *p = GUINT16(*p); p++; };
+ f = LCUINT16(*p) + 1;
+ while (f--) { *p = LCUINT16(*p); p++; };
+ f = LCUINT16(*p) + 1;
+ while (f--) { *p = LCUINT16(*p); p++; };
+ f = LCUINT16(*p) + 1;
+ while (f--) { *p = LCUINT16(*p); p++; };
#else
p += *p + 1;
p += *p + 1;
@@ -607,11 +588,11 @@ void PieceInfo::LoadInformation()
if (m_nFlags & LC_PIECE_LONGDATA)
{
- pGroup->drawinfo = malloc(i*sizeof(unsigned long)/sizeof(unsigned short));
- longs = (unsigned long*)pGroup->drawinfo;
+ pGroup->drawinfo = malloc(i*sizeof(lcuint32)/sizeof(lcuint16));
+ longs = (lcuint32*)pGroup->drawinfo;
- for (ushorts = (unsigned short*)bytes; ushorts != p; ushorts++, longs++)
- *longs = *ushorts;//GUINT16(*ushorts);
+ for (ushorts = (lcuint16*)bytes; ushorts != p; ushorts++, longs++)
+ *longs = *ushorts;//LCUINT16(*ushorts);
}
else
{
@@ -627,8 +608,11 @@ void PieceInfo::LoadInformation()
{
int size;
Matrix mat;
+
+ for (i = 0; i < 12; i++)
+ ((float*)(bytes+2))[i] = LCFLOAT (((float*)(bytes+2))[i]);
mat.FromPacked ((float*)(bytes+2));
- unsigned short color = ConvertColor(*(bytes+1));
+ lcuint16 color = ConvertColor(*(bytes+1));
// Create the vertexes
for (i = 0; i < SIDES; i++)
@@ -652,8 +636,8 @@ void PieceInfo::LoadInformation()
if (m_nFlags & LC_PIECE_LONGDATA)
{
- pGroup->drawinfo = malloc(sizeof(unsigned long)*size);
- longs = (unsigned long*)pGroup->drawinfo;
+ pGroup->drawinfo = malloc(sizeof(lcuint32)*size);
+ longs = (lcuint32*)pGroup->drawinfo;
longs[0] = 2; // colors
longs[1] = color;
@@ -662,18 +646,18 @@ void PieceInfo::LoadInformation()
for (i = 0; i < SIDES; i++)
{
- longs[3+i*4] = (unsigned long)verts + i;
+ longs[3+i*4] = (lcuint32)verts + i;
if (i == SIDES-1)
{
- longs[4+i*4] = (unsigned long)verts;
- longs[5+i*4] = (unsigned long)verts + SIDES;
+ longs[4+i*4] = (lcuint32)verts;
+ longs[5+i*4] = (lcuint32)verts + SIDES;
}
else
{
- longs[4+i*4] = (unsigned long)verts + i + 1;
- longs[5+i*4] = (unsigned long)verts + SIDES + i + 1;
+ longs[4+i*4] = (lcuint32)verts + i + 1;
+ longs[5+i*4] = (lcuint32)verts + SIDES + i + 1;
}
- longs[6+i*4] = (unsigned long)verts + SIDES + i;
+ longs[6+i*4] = (lcuint32)verts + SIDES + i;
}
j += 4*SIDES;
longs[j] = SIDES*3;
@@ -681,12 +665,12 @@ void PieceInfo::LoadInformation()
for (i = 0; i < SIDES; i++)
{
- longs[j+i*3] = (unsigned short)verts + 2*SIDES;
- longs[1+j+i*3] = (unsigned short)verts + SIDES + i;
+ longs[j+i*3] = (lcuint16)verts + 2*SIDES;
+ longs[1+j+i*3] = (lcuint16)verts + SIDES + i;
if (i == SIDES-1)
- longs[2+j+i*3] = (unsigned short)verts + SIDES;
+ longs[2+j+i*3] = (lcuint16)verts + SIDES;
else
- longs[2+j+i*3] = (unsigned short)verts + SIDES + i + 1;
+ longs[2+j+i*3] = (lcuint16)verts + SIDES + i + 1;
}
j += 3*SIDES;
@@ -698,11 +682,11 @@ void PieceInfo::LoadInformation()
for (i = 0; i < SIDES; i++)
{
- longs[j+i*4] = (unsigned long)verts + i;
+ longs[j+i*4] = (lcuint32)verts + i;
if (i == SIDES-1)
- longs[1+j+i*4] = (unsigned long)verts;
+ longs[1+j+i*4] = (lcuint32)verts;
else
- longs[1+j+i*4] = (unsigned long)verts + i + 1;
+ longs[1+j+i*4] = (lcuint32)verts + i + 1;
longs[2+j+i*4] = longs[j+i*4] + SIDES;
longs[3+j+i*4] = longs[1+j+i*4] + SIDES;
@@ -710,8 +694,8 @@ void PieceInfo::LoadInformation()
}
else
{
- pGroup->drawinfo = malloc(sizeof(unsigned short)*size);
- ushorts = (unsigned short*)pGroup->drawinfo;
+ pGroup->drawinfo = malloc(sizeof(lcuint16)*size);
+ ushorts = (lcuint16*)pGroup->drawinfo;
ushorts[0] = 2; // colors
ushorts[1] = color;
@@ -720,18 +704,18 @@ void PieceInfo::LoadInformation()
for (i = 0; i < SIDES; i++)
{
- ushorts[3+i*4] = (unsigned short)(verts + i);
+ ushorts[3+i*4] = (lcuint16)(verts + i);
if (i == SIDES-1)
{
- ushorts[4+i*4] = (unsigned short)verts;
- ushorts[5+i*4] = (unsigned short)verts + SIDES;
+ ushorts[4+i*4] = (lcuint16)verts;
+ ushorts[5+i*4] = (lcuint16)verts + SIDES;
}
else
{
- ushorts[4+i*4] = (unsigned short)verts + i + 1;
- ushorts[5+i*4] = (unsigned short)verts + SIDES + i + 1;
+ ushorts[4+i*4] = (lcuint16)verts + i + 1;
+ ushorts[5+i*4] = (lcuint16)verts + SIDES + i + 1;
}
- ushorts[6+i*4] = (unsigned short)verts + SIDES + i;
+ ushorts[6+i*4] = (lcuint16)verts + SIDES + i;
}
j += 4*SIDES;
ushorts[j] = SIDES*3;
@@ -739,12 +723,12 @@ void PieceInfo::LoadInformation()
for (i = 0; i < SIDES; i++)
{
- ushorts[j+i*3] = (unsigned short)verts + 2*SIDES;
- ushorts[1+j+i*3] = (unsigned short)verts + SIDES + i;
+ ushorts[j+i*3] = (lcuint16)verts + 2*SIDES;
+ ushorts[1+j+i*3] = (lcuint16)verts + SIDES + i;
if (i == SIDES-1)
- ushorts[2+j+i*3] = (unsigned short)verts + SIDES;
+ ushorts[2+j+i*3] = (lcuint16)verts + SIDES;
else
- ushorts[2+j+i*3] = (unsigned short)verts + SIDES + i + 1;
+ ushorts[2+j+i*3] = (lcuint16)verts + SIDES + i + 1;
}
j += 3*SIDES;
@@ -756,11 +740,11 @@ void PieceInfo::LoadInformation()
for (i = 0; i < SIDES; i++)
{
- ushorts[j+i*4] = (unsigned short)verts + i;
+ ushorts[j+i*4] = (lcuint16)verts + i;
if (i == SIDES-1)
- ushorts[1+j+i*4] = (unsigned short)verts;
+ ushorts[1+j+i*4] = (lcuint16)verts;
else
- ushorts[1+j+i*4] = (unsigned short)verts + i + 1;
+ ushorts[1+j+i*4] = (lcuint16)verts + i + 1;
ushorts[2+j+i*4] = ushorts[j+i*4] + SIDES;
ushorts[3+j+i*4] = ushorts[1+j+i*4] + SIDES;
@@ -775,8 +759,11 @@ void PieceInfo::LoadInformation()
{
int size;
Matrix mat;
+
+ for (i = 0; i < 12; i++)
+ ((float*)(bytes+2))[i] = LCFLOAT (((float*)(bytes+2))[i]);
mat.FromPacked ((float*)(bytes+2));
- unsigned short color = ConvertColor(*(bytes+1));
+ lcuint16 color = ConvertColor(*(bytes+1));
// Create the vertexes
for (i = 0; i < SIDES; i++)
@@ -808,8 +795,8 @@ void PieceInfo::LoadInformation()
if (m_nFlags & LC_PIECE_LONGDATA)
{
- pGroup->drawinfo = malloc(sizeof(unsigned long)*size);
- longs = (unsigned long*)pGroup->drawinfo;
+ pGroup->drawinfo = malloc(sizeof(lcuint32)*size);
+ longs = (lcuint32*)pGroup->drawinfo;
longs[0] = 2; // colors
longs[1] = color;
@@ -819,54 +806,54 @@ void PieceInfo::LoadInformation()
// outside
for (i = 0; i < SIDES; i++)
{
- longs[j+i*4] = (unsigned long)(verts + SIDES + i);
+ longs[j+i*4] = (lcuint32)(verts + SIDES + i);
if (i == SIDES-1)
{
- longs[j+1+i*4] = (unsigned long)verts + SIDES;
- longs[j+2+i*4] = (unsigned long)verts;
+ longs[j+1+i*4] = (lcuint32)verts + SIDES;
+ longs[j+2+i*4] = (lcuint32)verts;
}
else
{
- longs[j+1+i*4] = (unsigned long)verts + SIDES + i + 1;
- longs[j+2+i*4] = (unsigned long)verts + i + 1;
+ longs[j+1+i*4] = (lcuint32)verts + SIDES + i + 1;
+ longs[j+2+i*4] = (lcuint32)verts + i + 1;
}
- longs[j+3+i*4] = (unsigned long)verts + i;
+ longs[j+3+i*4] = (lcuint32)verts + i;
}
j += 4*SIDES;
// inside
for (i = 0; i < SIDES; i++)
{
- longs[j+i*4] = (unsigned long)(verts + 2*SIDES + i);
+ longs[j+i*4] = (lcuint32)(verts + 2*SIDES + i);
if (i == SIDES-1)
{
- longs[j+1+i*4] = (unsigned long)verts + 2*SIDES;
- longs[j+2+i*4] = (unsigned long)verts + 3*SIDES;
+ longs[j+1+i*4] = (lcuint32)verts + 2*SIDES;
+ longs[j+2+i*4] = (lcuint32)verts + 3*SIDES;
}
else
{
- longs[j+1+i*4] = (unsigned long)verts + 2*SIDES + i + 1;
- longs[j+2+i*4] = (unsigned long)verts + 3*SIDES + i + 1;
+ longs[j+1+i*4] = (lcuint32)verts + 2*SIDES + i + 1;
+ longs[j+2+i*4] = (lcuint32)verts + 3*SIDES + i + 1;
}
- longs[j+3+i*4] = (unsigned long)verts + 3*SIDES + i;
+ longs[j+3+i*4] = (lcuint32)verts + 3*SIDES + i;
}
j += 4*SIDES;
// ring
for (i = 0; i < SIDES; i++)
{
- longs[j+i*4] = (unsigned long)(verts + i);
+ longs[j+i*4] = (lcuint32)(verts + i);
if (i == SIDES-1)
{
- longs[j+1+i*4] = (unsigned long)verts;
- longs[j+2+i*4] = (unsigned long)verts + 3*SIDES;
+ longs[j+1+i*4] = (lcuint32)verts;
+ longs[j+2+i*4] = (lcuint32)verts + 3*SIDES;
}
else
{
- longs[j+1+i*4] = (unsigned long)verts + i + 1;
- longs[j+2+i*4] = (unsigned long)verts + 3*SIDES + i + 1;
+ longs[j+1+i*4] = (lcuint32)verts + i + 1;
+ longs[j+2+i*4] = (lcuint32)verts + 3*SIDES + i + 1;
}
- longs[j+3+i*4] = (unsigned long)verts + 3*SIDES + i;
+ longs[j+3+i*4] = (lcuint32)verts + 3*SIDES + i;
}
j += 4*SIDES;
@@ -880,11 +867,11 @@ void PieceInfo::LoadInformation()
// outside
for (i = 0; i < SIDES; i++)
{
- longs[j+i*4] = (unsigned long)verts + i;
+ longs[j+i*4] = (lcuint32)verts + i;
if (i == SIDES-1)
- longs[1+j+i*4] = (unsigned long)verts;
+ longs[1+j+i*4] = (lcuint32)verts;
else
- longs[1+j+i*4] = (unsigned long)verts + i + 1;
+ longs[1+j+i*4] = (lcuint32)verts + i + 1;
longs[2+j+i*4] = longs[j+i*4] + SIDES;
longs[3+j+i*4] = longs[1+j+i*4] + SIDES;
@@ -894,11 +881,11 @@ void PieceInfo::LoadInformation()
// inside
for (i = 0; i < SIDES; i++)
{
- longs[j+i*4] = (unsigned long)verts + 2*SIDES + i;
+ longs[j+i*4] = (lcuint32)verts + 2*SIDES + i;
if (i == SIDES-1)
- longs[1+j+i*4] = (unsigned long)verts + 2*SIDES;
+ longs[1+j+i*4] = (lcuint32)verts + 2*SIDES;
else
- longs[1+j+i*4] = (unsigned long)verts + 2*SIDES + i + 1;
+ longs[1+j+i*4] = (lcuint32)verts + 2*SIDES + i + 1;
longs[2+j+i*4] = longs[j+i*4] + SIDES;
longs[3+j+i*4] = longs[1+j+i*4] + SIDES;
@@ -906,8 +893,8 @@ void PieceInfo::LoadInformation()
}
else
{
- pGroup->drawinfo = malloc(sizeof(unsigned short)*size);
- ushorts = (unsigned short*)pGroup->drawinfo;
+ pGroup->drawinfo = malloc(sizeof(lcuint16)*size);
+ ushorts = (lcuint16*)pGroup->drawinfo;
ushorts[0] = 2; // colors
ushorts[1] = color;
@@ -917,54 +904,54 @@ void PieceInfo::LoadInformation()
// outside
for (i = 0; i < SIDES; i++)
{
- ushorts[j+i*4] = (unsigned short)(verts + SIDES + i);
+ ushorts[j+i*4] = (lcuint16)(verts + SIDES + i);
if (i == SIDES-1)
{
- ushorts[j+1+i*4] = (unsigned short)verts + SIDES;
- ushorts[j+2+i*4] = (unsigned short)verts;
+ ushorts[j+1+i*4] = (lcuint16)verts + SIDES;
+ ushorts[j+2+i*4] = (lcuint16)verts;
}
else
{
- ushorts[j+1+i*4] = (unsigned short)verts + SIDES + i + 1;
- ushorts[j+2+i*4] = (unsigned short)verts + i + 1;
+ ushorts[j+1+i*4] = (lcuint16)verts + SIDES + i + 1;
+ ushorts[j+2+i*4] = (lcuint16)verts + i + 1;
}
- ushorts[j+3+i*4] = (unsigned short)verts + i;
+ ushorts[j+3+i*4] = (lcuint16)verts + i;
}
j += 4*SIDES;
// inside
for (i = 0; i < SIDES; i++)
{
- ushorts[j+i*4] = (unsigned short)(verts + 3*SIDES + i);
+ ushorts[j+i*4] = (lcuint16)(verts + 3*SIDES + i);
if (i == SIDES-1)
{
- ushorts[j+1+i*4] = (unsigned short)verts + 3*SIDES;
- ushorts[j+2+i*4] = (unsigned short)verts + 2*SIDES;
+ ushorts[j+1+i*4] = (lcuint16)verts + 3*SIDES;
+ ushorts[j+2+i*4] = (lcuint16)verts + 2*SIDES;
}
else
{
- ushorts[j+1+i*4] = (unsigned short)verts + 3*SIDES + i + 1;
- ushorts[j+2+i*4] = (unsigned short)verts + 2*SIDES + i + 1;
+ ushorts[j+1+i*4] = (lcuint16)verts + 3*SIDES + i + 1;
+ ushorts[j+2+i*4] = (lcuint16)verts + 2*SIDES + i + 1;
}
- ushorts[j+3+i*4] = (unsigned short)verts + 2*SIDES + i;
+ ushorts[j+3+i*4] = (lcuint16)verts + 2*SIDES + i;
}
j += 4*SIDES;
// ring
for (i = 0; i < SIDES; i++)
{
- ushorts[j+i*4] = (unsigned short)(verts + i);
+ ushorts[j+i*4] = (lcuint16)(verts + i);
if (i == SIDES-1)
{
- ushorts[j+1+i*4] = (unsigned short)verts;
- ushorts[j+2+i*4] = (unsigned short)verts + 3*SIDES;
+ ushorts[j+1+i*4] = (lcuint16)verts;
+ ushorts[j+2+i*4] = (lcuint16)verts + 3*SIDES;
}
else
{
- ushorts[j+1+i*4] = (unsigned short)verts + i + 1;
- ushorts[j+2+i*4] = (unsigned short)verts + 3*SIDES + i + 1;
+ ushorts[j+1+i*4] = (lcuint16)verts + i + 1;
+ ushorts[j+2+i*4] = (lcuint16)verts + 3*SIDES + i + 1;
}
- ushorts[j+3+i*4] = (unsigned short)verts + 3*SIDES + i;
+ ushorts[j+3+i*4] = (lcuint16)verts + 3*SIDES + i;
}
j += 4*SIDES;
@@ -978,11 +965,11 @@ void PieceInfo::LoadInformation()
// outside
for (i = 0; i < SIDES; i++)
{
- ushorts[j+i*4] = (unsigned short)verts + i;
+ ushorts[j+i*4] = (lcuint16)verts + i;
if (i == SIDES-1)
- ushorts[1+j+i*4] = (unsigned short)verts;
+ ushorts[1+j+i*4] = (lcuint16)verts;
else
- ushorts[1+j+i*4] = (unsigned short)verts + i + 1;
+ ushorts[1+j+i*4] = (lcuint16)verts + i + 1;
ushorts[2+j+i*4] = ushorts[j+i*4] + SIDES;
ushorts[3+j+i*4] = ushorts[1+j+i*4] + SIDES;
@@ -992,11 +979,11 @@ void PieceInfo::LoadInformation()
// inside
for (i = 0; i < SIDES; i++)
{
- ushorts[j+i*4] = (unsigned short)verts + 2*SIDES + i;
+ ushorts[j+i*4] = (lcuint16)verts + 2*SIDES + i;
if (i == SIDES-1)
- ushorts[1+j+i*4] = (unsigned short)verts + 2*SIDES;
+ ushorts[1+j+i*4] = (lcuint16)verts + 2*SIDES;
else
- ushorts[1+j+i*4] = (unsigned short)verts + 2*SIDES + i + 1;
+ ushorts[1+j+i*4] = (lcuint16)verts + 2*SIDES + i + 1;
ushorts[2+j+i*4] = ushorts[j+i*4] + SIDES;
ushorts[3+j+i*4] = ushorts[1+j+i*4] + SIDES;
@@ -1011,8 +998,11 @@ void PieceInfo::LoadInformation()
{
int size;
Matrix mat;
+
+ for (i = 0; i < 12; i++)
+ ((float*)(bytes+2))[i] = LCFLOAT (((float*)(bytes+2))[i]);
mat.FromPacked ((float*)(bytes+2));
- unsigned short color = ConvertColor(*(bytes+1));
+ lcuint16 color = ConvertColor(*(bytes+1));
// Create the vertexes
for (i = 0; i < SIDES; i++)
@@ -1036,8 +1026,8 @@ void PieceInfo::LoadInformation()
if (m_nFlags & LC_PIECE_LONGDATA)
{
- pGroup->drawinfo = malloc(sizeof(unsigned long)*size);
- longs = (unsigned long*)pGroup->drawinfo;
+ pGroup->drawinfo = malloc(sizeof(lcuint32)*size);
+ longs = (lcuint32*)pGroup->drawinfo;
longs[0] = 2; // colors
longs[1] = color;
@@ -1046,18 +1036,18 @@ void PieceInfo::LoadInformation()
for (i = 0; i < SIDES; i++)
{
- longs[3+i*4] = (unsigned long)verts + SIDES + i;
+ longs[3+i*4] = (lcuint32)verts + SIDES + i;
if (i == SIDES-1)
{
- longs[4+i*4] = (unsigned long)verts + SIDES;
- longs[5+i*4] = (unsigned long)verts;
+ longs[4+i*4] = (lcuint32)verts + SIDES;
+ longs[5+i*4] = (lcuint32)verts;
}
else
{
- longs[4+i*4] = (unsigned long)verts + SIDES + i + 1;
- longs[5+i*4] = (unsigned long)verts + i + 1;
+ longs[4+i*4] = (lcuint32)verts + SIDES + i + 1;
+ longs[5+i*4] = (lcuint32)verts + i + 1;
}
- longs[6+i*4] = (unsigned long)verts + i;
+ longs[6+i*4] = (lcuint32)verts + i;
}
j += 4*SIDES;
longs[j] = SIDES*3;
@@ -1066,11 +1056,11 @@ void PieceInfo::LoadInformation()
for (i = 0; i < SIDES; i++)
{
if (i == SIDES-1)
- longs[j+i*3] = (unsigned short)verts + SIDES;
+ longs[j+i*3] = (lcuint16)verts + SIDES;
else
- longs[j+i*3] = (unsigned short)verts + SIDES + i + 1;
- longs[1+j+i*3] = (unsigned short)verts + SIDES + i;
- longs[2+j+i*3] = (unsigned short)verts + 2*SIDES;
+ longs[j+i*3] = (lcuint16)verts + SIDES + i + 1;
+ longs[1+j+i*3] = (lcuint16)verts + SIDES + i;
+ longs[2+j+i*3] = (lcuint16)verts + 2*SIDES;
}
j += 3*SIDES;
@@ -1082,11 +1072,11 @@ void PieceInfo::LoadInformation()
for (i = 0; i < SIDES; i++)
{
- longs[j+i*4] = (unsigned long)verts + i;
+ longs[j+i*4] = (lcuint32)verts + i;
if (i == SIDES-1)
- longs[1+j+i*4] = (unsigned long)verts;
+ longs[1+j+i*4] = (lcuint32)verts;
else
- longs[1+j+i*4] = (unsigned long)verts + i + 1;
+ longs[1+j+i*4] = (lcuint32)verts + i + 1;
longs[2+j+i*4] = longs[j+i*4] + SIDES;
longs[3+j+i*4] = longs[1+j+i*4] + SIDES;
@@ -1094,8 +1084,8 @@ void PieceInfo::LoadInformation()
}
else
{
- pGroup->drawinfo = malloc(sizeof(unsigned short)*size);
- ushorts = (unsigned short*)pGroup->drawinfo;
+ pGroup->drawinfo = malloc(sizeof(lcuint16)*size);
+ ushorts = (lcuint16*)pGroup->drawinfo;
ushorts[0] = 2; // colors
ushorts[1] = color;
@@ -1104,18 +1094,18 @@ void PieceInfo::LoadInformation()
for (i = 0; i < SIDES; i++)
{
- ushorts[3+i*4] = (unsigned short)(verts + SIDES + i);
+ ushorts[3+i*4] = (lcuint16)(verts + SIDES + i);
if (i == SIDES-1)
{
- ushorts[4+i*4] = (unsigned short)verts + SIDES;
- ushorts[5+i*4] = (unsigned short)verts;
+ ushorts[4+i*4] = (lcuint16)verts + SIDES;
+ ushorts[5+i*4] = (lcuint16)verts;
}
else
{
- ushorts[4+i*4] = (unsigned short)verts + SIDES + i + 1;
- ushorts[5+i*4] = (unsigned short)verts + i + 1;
+ ushorts[4+i*4] = (lcuint16)verts + SIDES + i + 1;
+ ushorts[5+i*4] = (lcuint16)verts + i + 1;
}
- ushorts[6+i*4] = (unsigned short)verts + i;
+ ushorts[6+i*4] = (lcuint16)verts + i;
}
j += 4*SIDES;
ushorts[j] = SIDES*3;
@@ -1124,11 +1114,11 @@ void PieceInfo::LoadInformation()
for (i = 0; i < SIDES; i++)
{
if (i == SIDES-1)
- ushorts[j+i*3] = (unsigned short)verts + SIDES;
+ ushorts[j+i*3] = (lcuint16)verts + SIDES;
else
- ushorts[j+i*3] = (unsigned short)verts + SIDES + i + 1;
- ushorts[1+j+i*3] = (unsigned short)verts + SIDES + i;
- ushorts[2+j+i*3] = (unsigned short)verts + 2*SIDES;
+ ushorts[j+i*3] = (lcuint16)verts + SIDES + i + 1;
+ ushorts[1+j+i*3] = (lcuint16)verts + SIDES + i;
+ ushorts[2+j+i*3] = (lcuint16)verts + 2*SIDES;
}
j += 3*SIDES;
@@ -1140,11 +1130,11 @@ void PieceInfo::LoadInformation()
for (i = 0; i < SIDES; i++)
{
- ushorts[j+i*4] = (unsigned short)verts + i;
+ ushorts[j+i*4] = (lcuint16)verts + i;
if (i == SIDES-1)
- ushorts[1+j+i*4] = (unsigned short)verts;
+ ushorts[1+j+i*4] = (lcuint16)verts;
else
- ushorts[1+j+i*4] = (unsigned short)verts + i + 1;
+ ushorts[1+j+i*4] = (lcuint16)verts + i + 1;
ushorts[2+j+i*4] = ushorts[j+i*4] + SIDES;
ushorts[3+j+i*4] = ushorts[1+j+i*4] + SIDES;
@@ -1159,8 +1149,11 @@ void PieceInfo::LoadInformation()
{
int size;
Matrix mat;
+
+ for (i = 0; i < 12; i++)
+ ((float*)(bytes+2))[i] = LCFLOAT (((float*)(bytes+2))[i]);
mat.FromPacked ((float*)(bytes+2));
- unsigned short color = ConvertColor(*(bytes+1));
+ lcuint16 color = ConvertColor(*(bytes+1));
// Create the vertexes
for (i = 0; i < SIDES; i++)
@@ -1192,8 +1185,8 @@ void PieceInfo::LoadInformation()
if (m_nFlags & LC_PIECE_LONGDATA)
{
- pGroup->drawinfo = malloc(sizeof(unsigned long)*size);
- longs = (unsigned long*)pGroup->drawinfo;
+ pGroup->drawinfo = malloc(sizeof(lcuint32)*size);
+ longs = (lcuint32*)pGroup->drawinfo;
longs[0] = 2; // colors
longs[1] = color;
@@ -1203,54 +1196,54 @@ void PieceInfo::LoadInformation()
// outside
for (i = 0; i < SIDES; i++)
{
- longs[j+i*4] = (unsigned long)(verts + i);
+ longs[j+i*4] = (lcuint32)(verts + i);
if (i == SIDES-1)
{
- longs[j+1+i*4] = (unsigned long)verts;
- longs[j+2+i*4] = (unsigned long)verts + SIDES;
+ longs[j+1+i*4] = (lcuint32)verts;
+ longs[j+2+i*4] = (lcuint32)verts + SIDES;
}
else
{
- longs[j+1+i*4] = (unsigned long)verts + i + 1;
- longs[j+2+i*4] = (unsigned long)verts + SIDES + i + 1;
+ longs[j+1+i*4] = (lcuint32)verts + i + 1;
+ longs[j+2+i*4] = (lcuint32)verts + SIDES + i + 1;
}
- longs[j+3+i*4] = (unsigned long)verts + SIDES + i;
+ longs[j+3+i*4] = (lcuint32)verts + SIDES + i;
}
j += 4*SIDES;
// inside
for (i = 0; i < SIDES; i++)
{
- longs[j+i*4] = (unsigned long)(verts + 3*SIDES + i);
+ longs[j+i*4] = (lcuint32)(verts + 3*SIDES + i);
if (i == SIDES-1)
{
- longs[j+1+i*4] = (unsigned long)verts + 3*SIDES;
- longs[j+2+i*4] = (unsigned long)verts + 2*SIDES;
+ longs[j+1+i*4] = (lcuint32)verts + 3*SIDES;
+ longs[j+2+i*4] = (lcuint32)verts + 2*SIDES;
}
else
{
- longs[j+1+i*4] = (unsigned long)verts + 3*SIDES + i + 1;
- longs[j+2+i*4] = (unsigned long)verts + 2*SIDES + i + 1;
+ longs[j+1+i*4] = (lcuint32)verts + 3*SIDES + i + 1;
+ longs[j+2+i*4] = (lcuint32)verts + 2*SIDES + i + 1;
}
- longs[j+3+i*4] = (unsigned long)verts + 2*SIDES + i;
+ longs[j+3+i*4] = (lcuint32)verts + 2*SIDES + i;
}
j += 4*SIDES;
// ring
for (i = 0; i < SIDES; i++)
{
- longs[j+i*4] = (unsigned long)(verts + 3*SIDES + i);
+ longs[j+i*4] = (lcuint32)(verts + 3*SIDES + i);
if (i == SIDES-1)
{
- longs[j+1+i*4] = (unsigned long)verts + 3*SIDES;
- longs[j+2+i*4] = (unsigned long)verts;
+ longs[j+1+i*4] = (lcuint32)verts + 3*SIDES;
+ longs[j+2+i*4] = (lcuint32)verts;
}
else
{
- longs[j+1+i*4] = (unsigned long)verts + 3*SIDES + i + 1;
- longs[j+2+i*4] = (unsigned long)verts + i + 1;
+ longs[j+1+i*4] = (lcuint32)verts + 3*SIDES + i + 1;
+ longs[j+2+i*4] = (lcuint32)verts + i + 1;
}
- longs[j+3+i*4] = (unsigned long)verts + i;
+ longs[j+3+i*4] = (lcuint32)verts + i;
}
j += 4*SIDES;
@@ -1264,11 +1257,11 @@ void PieceInfo::LoadInformation()
// outside
for (i = 0; i < SIDES; i++)
{
- longs[j+i*4] = (unsigned long)verts + i;
+ longs[j+i*4] = (lcuint32)verts + i;
if (i == SIDES-1)
- longs[1+j+i*4] = (unsigned long)verts;
+ longs[1+j+i*4] = (lcuint32)verts;
else
- longs[1+j+i*4] = (unsigned long)verts + i + 1;
+ longs[1+j+i*4] = (lcuint32)verts + i + 1;
longs[2+j+i*4] = longs[j+i*4] + SIDES;
longs[3+j+i*4] = longs[1+j+i*4] + SIDES;
@@ -1278,11 +1271,11 @@ void PieceInfo::LoadInformation()
// inside
for (i = 0; i < SIDES; i++)
{
- longs[j+i*4] = (unsigned long)verts + 2*SIDES + i;
+ longs[j+i*4] = (lcuint32)verts + 2*SIDES + i;
if (i == SIDES-1)
- longs[1+j+i*4] = (unsigned long)verts + 2*SIDES;
+ longs[1+j+i*4] = (lcuint32)verts + 2*SIDES;
else
- longs[1+j+i*4] = (unsigned long)verts + 2*SIDES + i + 1;
+ longs[1+j+i*4] = (lcuint32)verts + 2*SIDES + i + 1;
longs[2+j+i*4] = longs[j+i*4] + SIDES;
longs[3+j+i*4] = longs[1+j+i*4] + SIDES;
@@ -1290,8 +1283,8 @@ void PieceInfo::LoadInformation()
}
else
{
- pGroup->drawinfo = malloc(sizeof(unsigned short)*size);
- ushorts = (unsigned short*)pGroup->drawinfo;
+ pGroup->drawinfo = malloc(sizeof(lcuint16)*size);
+ ushorts = (lcuint16*)pGroup->drawinfo;
ushorts[0] = 2; // colors
ushorts[1] = color;
@@ -1301,54 +1294,54 @@ void PieceInfo::LoadInformation()
// outside
for (i = 0; i < SIDES; i++)
{
- ushorts[j+i*4] = (unsigned short)(verts + i);
+ ushorts[j+i*4] = (lcuint16)(verts + i);
if (i == SIDES-1)
{
- ushorts[j+1+i*4] = (unsigned short)verts;
- ushorts[j+2+i*4] = (unsigned short)verts + SIDES;
+ ushorts[j+1+i*4] = (lcuint16)verts;
+ ushorts[j+2+i*4] = (lcuint16)verts + SIDES;
}
else
{
- ushorts[j+1+i*4] = (unsigned short)verts + i + 1;
- ushorts[j+2+i*4] = (unsigned short)verts + SIDES + i + 1;
+ ushorts[j+1+i*4] = (lcuint16)verts + i + 1;
+ ushorts[j+2+i*4] = (lcuint16)verts + SIDES + i + 1;
}
- ushorts[j+3+i*4] = (unsigned short)verts + SIDES + i;
+ ushorts[j+3+i*4] = (lcuint16)verts + SIDES + i;
}
j += 4*SIDES;
// inside
for (i = 0; i < SIDES; i++)
{
- ushorts[j+i*4] = (unsigned short)(verts + 2*SIDES + i);
+ ushorts[j+i*4] = (lcuint16)(verts + 2*SIDES + i);
if (i == SIDES-1)
{
- ushorts[j+1+i*4] = (unsigned short)verts + 2*SIDES;
- ushorts[j+2+i*4] = (unsigned short)verts + 3*SIDES;
+ ushorts[j+1+i*4] = (lcuint16)verts + 2*SIDES;
+ ushorts[j+2+i*4] = (lcuint16)verts + 3*SIDES;
}
else
{
- ushorts[j+1+i*4] = (unsigned short)verts + 2*SIDES + i + 1;
- ushorts[j+2+i*4] = (unsigned short)verts + 3*SIDES + i + 1;
+ ushorts[j+1+i*4] = (lcuint16)verts + 2*SIDES + i + 1;
+ ushorts[j+2+i*4] = (lcuint16)verts + 3*SIDES + i + 1;
}
- ushorts[j+3+i*4] = (unsigned short)verts + 3*SIDES + i;
+ ushorts[j+3+i*4] = (lcuint16)verts + 3*SIDES + i;
}
j += 4*SIDES;
// ring
for (i = 0; i < SIDES; i++)
{
- ushorts[j+i*4] = (unsigned short)(verts + 3*SIDES + i);
+ ushorts[j+i*4] = (lcuint16)(verts + 3*SIDES + i);
if (i == SIDES-1)
{
- ushorts[j+1+i*4] = (unsigned short)verts + 3*SIDES;
- ushorts[j+2+i*4] = (unsigned short)verts;
+ ushorts[j+1+i*4] = (lcuint16)verts + 3*SIDES;
+ ushorts[j+2+i*4] = (lcuint16)verts;
}
else
{
- ushorts[j+1+i*4] = (unsigned short)verts + 3*SIDES + i + 1;
- ushorts[j+2+i*4] = (unsigned short)verts + i + 1;
+ ushorts[j+1+i*4] = (lcuint16)verts + 3*SIDES + i + 1;
+ ushorts[j+2+i*4] = (lcuint16)verts + i + 1;
}
- ushorts[j+3+i*4] = (unsigned short)verts + i;
+ ushorts[j+3+i*4] = (lcuint16)verts + i;
}
j += 4*SIDES;
@@ -1362,11 +1355,11 @@ void PieceInfo::LoadInformation()
// outside
for (i = 0; i < SIDES; i++)
{
- ushorts[j+i*4] = (unsigned short)verts + i;
+ ushorts[j+i*4] = (lcuint16)verts + i;
if (i == SIDES-1)
- ushorts[1+j+i*4] = (unsigned short)verts;
+ ushorts[1+j+i*4] = (lcuint16)verts;
else
- ushorts[1+j+i*4] = (unsigned short)verts + i + 1;
+ ushorts[1+j+i*4] = (lcuint16)verts + i + 1;
ushorts[2+j+i*4] = ushorts[j+i*4] + SIDES;
ushorts[3+j+i*4] = ushorts[1+j+i*4] + SIDES;
@@ -1376,11 +1369,11 @@ void PieceInfo::LoadInformation()
// inside
for (i = 0; i < SIDES; i++)
{
- ushorts[j+i*4] = (unsigned short)verts + 2*SIDES + i;
+ ushorts[j+i*4] = (lcuint16)verts + 2*SIDES + i;
if (i == SIDES-1)
- ushorts[1+j+i*4] = (unsigned short)verts + 2*SIDES;
+ ushorts[1+j+i*4] = (lcuint16)verts + 2*SIDES;
else
- ushorts[1+j+i*4] = (unsigned short)verts + 2*SIDES + i + 1;
+ ushorts[1+j+i*4] = (lcuint16)verts + 2*SIDES + i + 1;
ushorts[2+j+i*4] = ushorts[j+i*4] + SIDES;
ushorts[3+j+i*4] = ushorts[1+j+i*4] + SIDES;