Esempio n. 1
0
Magic3D::XMLElement* Magic3D::Object::save(XMLElement* root)
{
    if (root)
    {
        saveString(root, M3D_OBJECT_XML_NAME,        getName());
        saveString(root, M3D_OBJECT_XML_SCRIPT,      getScript());
        saveString(root, M3D_OBJECT_XML_PARENT,      getParent() ? getParent()->getName().c_str() : M3D_XML_NULL);
        saveString(root, M3D_OBJECT_XML_PARENT_BONE, getParentBone() ? getParentBone()->getName().c_str() : M3D_XML_NULL);

        saveBool(root,   M3D_OBJECT_XML_PARENT_POSITION, isParentPosition());
        saveBool(root,   M3D_OBJECT_XML_PARENT_ROTATION, isParentRotation());
        saveBool(root,   M3D_OBJECT_XML_PARENT_SCALE, isParentScale());

        saveInt(root,    M3D_OBJECT_XML_RENDER,    getRender());
        saveInt(root,    M3D_OBJECT_XML_TYPE,      getType());
        saveInt(root,    M3D_OBJECT_XML_FLAG,      getFlag());
        saveInt(root,    M3D_OBJECT_XML_BILLBOARD, getBillboard());

        saveBool(root,   M3D_OBJECT_XML_ENABLED,  isEnabled());
        saveBool(root,   M3D_OBJECT_XML_VISIBLE,  isVisible());
        saveBool(root,   M3D_OBJECT_XML_ZORDER,   isZOrder());
        saveBool(root,   M3D_OBJECT_XML_PICK,     isPickable());

        saveVector3(root, M3D_OBJECT_XML_POSITION, getPosition());
        saveVector4(root, M3D_OBJECT_XML_ROTATION, Vector4(getRotation()));
        saveVector3(root, M3D_OBJECT_XML_SCALE,    getScale());

        saveBool(root,    M3D_OBJECT_XML_SCRIPTED,  isScripted());

        std::vector<Mesh*>::const_iterator it_m = meshes.begin();
        while (it_m != meshes.end())
        {
            Mesh* mesh = *it_m++;

            XMLElement* meshtXML = root->GetDocument()->NewElement( M3D_MESH_XML );
            meshtXML->SetAttribute("materials", (int)mesh->getMaterials()->size());
            root->LinkEndChild( meshtXML );

            mesh->save(meshtXML);
        }

        PhysicsObject::save(root);
    }
    return root;
}
Esempio n. 2
0
std::vector<lo_message> ShapeNode::getState () const
{
	// inherit state from base class
	std::vector<lo_message> ret = GroupNode::getState();

	lo_message msg;
	osg::Vec3 v;
	osg::Vec4 v4;

	//std::cout << "in getState. shape=" << shape << ", textureName=" << textureName << std::endl;

	msg = lo_message_new();
	lo_message_add(msg, "si", "setBillboard", getBillboard());
	ret.push_back(msg);
	
	msg = lo_message_new();
	v4 = this->getColor();
	lo_message_add(msg, "sffff", "setColor", v4.x(), v4.y(), v4.z(), v4.w());
	ret.push_back(msg);

	msg = lo_message_new();
	lo_message_add(msg,  "ss", "setTextureFromFile", texturePath.c_str());
	ret.push_back(msg);

	msg = lo_message_new();
	lo_message_add(msg,  "ss", "setStateSet", getStateSet());
	ret.push_back(msg);

	msg = lo_message_new();
	lo_message_add(msg, "si", "setRenderBin", getRenderBin());
	ret.push_back(msg);

	msg = lo_message_new();
	lo_message_add(msg, "si", "setLighting", getLighting());
	ret.push_back(msg);

	// put this one last:	
	msg = lo_message_new();
	lo_message_add(msg, "si", "setShape", getShape());
	ret.push_back(msg);

	return ret;
}