コード例 #1
0
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 ;
}