void ObjectItem::applyFrameDataFromParent() { QList<FrameData> datas ; for ( int i = 0 ; i < m_frameDatas.size() ; i ++ ) { FrameData data = m_frameDatas[i] ; bool valid ; QMatrix4x4 mat = getDisplayMatrix(data.frame, &valid) ; if ( !valid ) { continue ; } data.applyMatrix(mat) ; datas.append(data) ; } FrameData old ; int frame = getParentFrameMax() ; for ( int i = 0 ; i < frame ; i ++ ) { if ( getFrameDataPtr(i) ) { old = *getFrameDataPtr(i) ; continue ; } FrameData *parent = getParentFrameDataPtr(i) ; if ( !parent ) { continue ; } bool valid ; FrameData data ; data = getDisplayFrameData(i, &valid) ; if ( !valid ) { continue ; } QMatrix4x4 mat = getDisplayMatrix(i, &valid) ; if ( !valid ) { continue ; } data.applyMatrix(mat) ; if ( !(old.frame&0x8000) ) { if ( old.rot_z != data.rot_z ) { for ( int j = old.frame + 1 ; j < data.frame ; j ++ ) { bool b ; FrameData tmp = getDisplayFrameData(j, &b) ; if ( !b ) { continue ; } QMatrix4x4 mat = getDisplayMatrix(j, &b) ; if ( !b ) { continue ; } tmp.applyMatrix(mat); datas.append(tmp) ; } } } old = data ; datas.append(data); } m_frameDatas = datas ; }