Example #1
0
void plVertCoder::IEncodeByte(hsStream* S, unsigned int vertsLeft, int chan,
                              const unsigned char* src, unsigned int stride) {
    if (fColors[chan].fCount == 0) {
        ICountBytes(vertsLeft, src + chan, stride, fColors[chan].fCount, fColors[chan].fSame);
        unsigned short count = fColors[chan].fCount;
        if (fColors[chan].fSame)
            count |= 0x8000;
        S->writeShort(count);
        count &= 0x7FFF;
        if (fColors[chan].fSame)
            S->writeByte(src[chan]);
    }
    if (!fColors[chan].fSame)
        S->writeByte(src[chan]);
    fColors[chan].fCount--;
}
Example #2
0
inline void plVertCoder::IEncodeByte(hsStream* s, const int chan, const uint32_t vertsLeft, const uint8_t*& src, const uint32_t stride)
{
    if( !fColors[chan].fCount )
    {
        ICountBytes(vertsLeft, src, stride, fColors[chan].fCount, fColors[chan].fSame);

        uint16_t cnt = fColors[chan].fCount;
        if( fColors[chan].fSame )
            cnt |= kSameMask;
        s->WriteLE16(cnt);

        if( fColors[chan].fSame )
            s->WriteByte(*src);
    }

    if( !fColors[chan].fSame )
        s->WriteByte(*src);
    
    src++;
    fColors[chan].fCount--;
}