- for(i=0; i<NUM_SGI_VERTS; i++) {
- vpos[i] = sgiv[i];
- cgm_vscale(vpos + i, 0.5);
- cgm_vmul_m4v3(vpos + i, mat);
- }
+ switch(mobj->state) {
+ case MOBJ_DROPPING:
+ t = 1.0f - t;
+ case MOBJ_GRABING:
+ if(idx0 == 0) {
+ pos[0] = sgiv[idx0];
+ cgm_vscale(pos, LOGOSCALE);
+ cgm_vmul_m4v3(pos, mobj->xform);
+ cgm_vlerp(caps->end, mobj->idlepos + idx0, pos, t);
+ } else {
+ caps->end[0] = prev_pos;
+ }
+ pos[1] = sgiv[idx1];
+ cgm_vscale(pos + 1, LOGOSCALE);
+ cgm_vmul_m4v3(pos + 1, mobj->xform);
+ cgm_vlerp(caps->end + 1, mobj->idlepos + idx1, pos + 1, t);
+ prev_pos = caps->end[1];
+ /*caps->energy = cgm_lerp(mobj->mot[idx].w, sfsph[idx].w, t);*/
+ break;