size_t plDrawableSpans::buildDIIndex(const hsTArray < std::shared_ptr<plGeometrySpan> >& spans) { plDISpanIndex di_idx; for (size_t i=0; i<spans.getSize(); ++i) { di_idx.fIndices.append(fSourceSpans.find(spans[i])); } size_t result = fDIIndices.getSize(); fDIIndices.append(di_idx); return result; }
void plSpanInstance::setPosDeltas(const hsTArray<hsVector3>& verts) { delete[] fPosDelta; fNumVerts = verts.getSize(); fPosDelta = new unsigned char[fNumVerts * CalcPosStride(fEncoding)]; switch (fEncoding.getCode() & plSpanEncoding::kPosMask) { case plSpanEncoding::kPos888: { unsigned char* pp = fPosDelta; for (unsigned int i=0; i<fNumVerts; i++) { pp[0] = (unsigned char)(verts[i].X / fEncoding.getPosScale()); pp[1] = (unsigned char)(verts[i].Y / fEncoding.getPosScale()); pp[2] = (unsigned char)(verts[i].Z / fEncoding.getPosScale()); pp += 3; } } break; case plSpanEncoding::kPos161616: { unsigned short* pp = (unsigned short*)fPosDelta; for (unsigned int i=0; i<fNumVerts; i++) { pp[0] = (unsigned short)(verts[i].X / fEncoding.getPosScale()); pp[1] = (unsigned short)(verts[i].X / fEncoding.getPosScale()); pp[2] = (unsigned short)(verts[i].X / fEncoding.getPosScale()); pp += 3; } } break; case plSpanEncoding::kPos101010: { unsigned int* pp = (unsigned int*)fPosDelta; for (unsigned int i=0; i<fNumVerts; i++) { *pp = ((unsigned int)(verts[i].Z / fEncoding.getPosScale()) & 0x3F) << 20 | ((unsigned int)(verts[i].Y / fEncoding.getPosScale()) & 0x3F) << 10 | ((unsigned int)(verts[i].X / fEncoding.getPosScale()) & 0x3F); pp++; } } break; case plSpanEncoding::kPos008: { unsigned char* pp = fPosDelta; for (unsigned int i=0; i<fNumVerts; i++) { *pp = (unsigned char)(verts[i].Z / fEncoding.getPosScale()); pp++; } } break; } }
void plLeafController::setEaseControllers(const hsTArray<class plEaseController*>& controllers) { DeallocControllers(); AllocControllers(controllers.getSize()); for (size_t i=0; i<controllers.getSize(); i++) fEaseControllers[i] = controllers[i]; }
void plLeafController::setKeys(const hsTArray<hsKeyFrame*>& keys, unsigned int type) { DeallocKeys(); AllocKeys(keys.getSize(), type); for (size_t i=0; i<keys.getSize(); i++) fKeys[i] = keys[i]; }
void append(const hsTArray<T>& items) { size_t ins = getSize(); incSize(items.getSize()); for (size_t i=0; i<items.getSize(); i++) data[ins + i] = items.get(i); }