コード例 #1
0
void mdlWriter::WriteBone(scene::BoneNode* bone,OS::IStream* stream)
{
	core::stringc tmpStr;
	OS::StreamWriter writer(stream);

	MDLLoaderV0::JoinHeader jointHeader;

	core::string_to_char(bone->getNodeName(),tmpStr);
	jointHeader.index=bone->getID();
	
	jointHeader.position=bone->getPosition();
	jointHeader.rotation=bone->getOrintation();
	jointHeader.scale=bone->getScale();

	jointHeader.basePosition=bone->getBasePosition();
	jointHeader.baseRotation=bone->getBaseOrintation();
	jointHeader.baseScale=bone->getScale();

	jointHeader.childCount=bone->getSubBones().size();
	writer.binWriteString(tmpStr);
	stream->write(&jointHeader,sizeof(jointHeader));

	const scene::BonesList&bones= bone->getSubBones();
	scene::BonesList::const_iterator it=bones.begin();

	for(;it!=bones.end();++it)
	{
		WriteBone(*it,stream);
	}
}
コード例 #2
0
    void LegacyAvatarSerializer::WriteBoneModifierSet(QDomDocument& dest, QDomElement& dest_elem, const BoneModifierSet& bones)
    {
        QDomElement parameter = dest.createElement("dynamic_animation_parameter");
        QDomElement modifier = dest.createElement("dynamic_animation");
        
        SetAttribute(parameter, "name", bones.name_);
        SetAttribute(parameter, "position", bones.value_);
        SetAttribute(modifier, "name", bones.name_);

        QDomElement base_animations = dest.createElement("base_animations");
        modifier.appendChild(base_animations);
        
        QDomElement bonelist = dest.createElement("bones");
        for (uint i = 0; i < bones.modifiers_.size(); ++i)
        {
            QDomElement bone = WriteBone(dest, bones.modifiers_[i]);
            bonelist.appendChild(bone);
        }
        modifier.appendChild(bonelist);
        
        if (!dest_elem.isNull())
        {
            dest_elem.appendChild(parameter);
            dest_elem.appendChild(modifier);
        }
        else
        {
            dest.appendChild(parameter);
            dest.appendChild(modifier);
        }
    }
コード例 #3
0
void mdlWriter::WriteSkeleton(scene::Skeleton*skeleton,OS::IStream* stream)
{
	core::stringc tmpStr;

	OS::StreamWriter writer(stream);
	MDLLoaderV0::SkeletonHeader skHeader;

	core::string_to_char(skeleton->getResourceName(),tmpStr);
	writer.binWriteString(tmpStr);
	skHeader.rootsCount=skeleton->getRootBonesCount();

	stream->write(&skHeader,sizeof(skHeader));

	for(int i=0;i<skHeader.rootsCount;++i)
	{
		scene::BoneNode* bone=skeleton->getRootBone(i);
		WriteBone(bone,stream);
	}
}