worked on insttest

This commit is contained in:
aap
2015-12-24 23:31:36 +01:00
parent 723807cec1
commit cc1a83acda
7 changed files with 208 additions and 51 deletions

View File

@@ -1064,7 +1064,6 @@ saUninstanceCB(ps2::MatPipeline *pipe, Geometry *geo, uint32 flags[], Mesh *mesh
norms += 4;
wghts += 4;
}
}
static void
@@ -1205,7 +1204,7 @@ saInstanceCB(MatPipeline *pipe, Geometry *g, Mesh *m, uint8 **data)
ADCData *adc = PLUGINOFFSET(ADCData, g, adcOffset);
for(int i = 0; i < nelem(pipe->attribs); i++){
PipeAttribute *a = pipe->attribs[i];
rw::PipeAttribute *a = pipe->attribs[i];
if(a == &saXYZADC)
instanceSAPositions(g, m, adc->adcFormatted ? adc->adcBits : NULL,
(int16*)data[i], vertScale);

View File

@@ -1212,6 +1212,12 @@ debugadc(Geometry *g, MeshHeader *mh, ADCData *adc)
return n;
}
// TODO
void
convertADC(Geometry *g)
{
}
// Not optimal but works
void
unconvertADC(Geometry *g)
@@ -1310,11 +1316,12 @@ readADC(Stream *stream, int32, void *object, int32 offset, int32)
ADCData *adc = PLUGINOFFSET(ADCData, object, offset);
assert(findChunk(stream, ID_ADC, NULL, NULL));
adc->numBits = stream->readI32();
adc->adcFormatted = 1;
if(adc->numBits == 0){
adc->adcFormatted = 0;
adc->adcBits = NULL;
adc->numBits = 0;
return;
}
adc->adcFormatted = 1;
int32 size = adc->numBits+3 & ~3;
adc->adcBits = new int8[size];
stream->read(adc->adcBits, size);
@@ -1357,7 +1364,7 @@ getSizeADC(void *object, int32 offset, int32)
Geometry *geometry = (Geometry*)object;
ADCData *adc = PLUGINOFFSET(ADCData, object, offset);
if(!adc->adcFormatted)
return -1;
return 0;
if(geometry->geoflags & Geometry::NATIVE)
return 16;
return 16 + (adc->numBits+3 & ~3);

View File

@@ -147,6 +147,7 @@ struct ADCData
extern int32 adcOffset;
void registerADCPlugin(void);
void convertADC(Geometry *g);
void unconvertADC(Geometry *geo);
void allocateADC(Geometry *geo);