Erik Hofman writes:
>
> I've basically given up making the cloud loader endian aware. The author
> uses "unsigned char *" to pass different kinds of types into one pass
> from a file into a data array which makes it extremely difficult to
> resolve all the endain issues.
Hmm.... does this help ?
SkyCloud::Load(const SkyArchive &archive,
float rScale, /* = 1.0f */
double latitude, double longitude )
{
unsigned int iNumParticles;
Vec3f vecCenter = Vec3f::ZERO;
archive.FindUInt32("CldNumParticles", &iNumParticles);
archive.FindVec3f("CldCenter", &vecCenter);
Vec3f *pParticlePositions = new Vec3f[iNumParticles];
float *pParticleRadii = new float[iNumParticles];
Vec4f *pParticleColors = new Vec4f[iNumParticles];
unsigned int iNumBytes;
if ( ulIsBigEndian )
{
char *tmp = new char[iNumParticles*sizeof(Vec4f];
archive.FindData("CldParticlePositions", ANY_TYPE, (void**const)&tmp,
&iNumBytes);
float *ftmp = (float *)tmp;
for( i=0; i<iNumParticles; i++)
{
pParticlePositions[i].x = _ulEndianSwap((unsigned int*)(ftmp+0));
pParticlePositions[i].y = _ulEndianSwap((unsigned int*)(ftmp+1));
pParticlePositions[i].z = _ulEndianSwap((unsigned int*)(ftmp+2));
ftmp += 3;
}
archive.FindData("CldParticleRadii", ANY_TYPE, (void**const)&tmp,
&iNumBytes);
ftmp = (float *)tmp;
for( i=0; i<iNumParticles; i++)
{
pParticleRadii[i] = = _ulEndianSwap((unsigned int*)ftmp);
ftmp++;
}
archive.FindData("CldParticleColors", ANY_TYPE, (void**const)&tmp,
&iNumBytes);
ftmp = (float *)tmp;
for( i=0; i<iNumParticles; i++)
{
pParticleColors[i].x = _ulEndianSwap((unsigned int*)(ftmp+0));
pParticleColors[i].y = _ulEndianSwap((unsigned int*)(ftmp+1));
pParticleColors[i].z = _ulEndianSwap((unsigned int*)(ftmp+2));
pParticleColors[i].w = _ulEndianSwap((unsigned int*)(ftmp+3));
ftmp += 4;
}
}
else
{
archive.FindData("CldParticlePositions", ANY_TYPE,
(void**const)&pParticlePositions, &iNumBytes);
archive.FindData("CldParticleRadii", ANY_TYPE,
(void**const)&pParticleRadii, &iNumBytes);
archive.FindData("CldParticleColors", ANY_TYPE,
(void**const)&pParticleColors, &iNumBytes); }
}
.....
}
_______________________________________________
Flightgear-devel mailing list
[EMAIL PROTECTED]
http://mail.flightgear.org/mailman/listinfo/flightgear-devel