struct cmesh_vattrib {
int nelem; /* num elements per attribute [1, 4] */
float *data;
- unsigned int count;
+ unsigned int count; /* number of floats in data */
unsigned int vbo;
int vbo_valid, data_valid;
};
nelem = cmsrc->vattr[i].nelem;
cmdest->vattr[i].nelem = nelem;
cmdest->vattr[i].data = varr[i];
- cmdest->vattr[i].count = vcount;
+ cmdest->vattr[i].count = vcount * nelem;
vptr = cmsrc->vattr[i].data + vstart * nelem;
memcpy(cmdest->vattr[i].data, vptr, vcount * nelem * sizeof(float));
cmdest->vattr[i].data_valid = 1;
assert(cmdest->vattr[i].nelem == cmsrc->vattr[i].nelem);
nelem = cmdest->vattr[i].nelem;
origsz = cmdest->nverts * nelem;
- newsz = cmdest->nverts + cmsrc->nverts * nelem;
+ newsz = (cmdest->nverts + cmsrc->nverts) * nelem;
if(!(vptr = realloc(cmdest->vattr[i].data, newsz * sizeof *vptr))) {
return -1;
}
}
+ cmdest->nverts += cmsrc->nverts;
+ cmdest->nfaces += cmsrc->nfaces;
+
cmdest->wire_ibo_valid = 0;
cmdest->aabb_valid = 0;
cmdest->bsph_valid = 0;
cgm_vec3 n, t;
float *vptr;
+ if(!dir_xform) {
+ dir_xform = xform;
+ }
+
for(i=0; i<cm->nverts; i++) {
if(!(vptr = get_vec4(cm, CMESH_ATTR_VERTEX, i, &v))) {
return;