//--------------------------------------------------------------------- void SceneResource::processSceneNodeContent(const Util::XmlNode * snNode, SceneNodePtr & sceneNode, bool isChild) const { WHISPERWIND_ASSERT(snNode); /// node property { Util::String posStr(mXmlReader->getAttribute(snNode, "position")); XMVECTOR posVec = Util::StringToVector(posStr, 3); Util::String orientStr(mXmlReader->getAttribute(snNode, "orientation")); XMVECTOR orientVec = Util::StringToVector(orientStr, 4); if (!isChild) { sceneNode->setPosition(posVec); sceneNode->setOrientation(orientVec); } else { sceneNode->setRelativePosition(posVec); sceneNode->setRelativeOrientation(orientVec); } } const Util::XmlNode * snChildNode = mXmlReader->getFirstNode(snNode, "child_node"); while (snChildNode) { processChildSceneNode(snChildNode, sceneNode); snChildNode = mXmlReader->getNextSiblingNode(snChildNode); } const Util::XmlNode * soNode = mXmlReader->getFirstNode(snNode, "object"); while (soNode) { processSceneObject(soNode, sceneNode); soNode = mXmlReader->getNextSiblingNode(soNode); } const Util::XmlNode * lightNode = mXmlReader->getFirstNode(snNode, "light"); while (lightNode) { processLight(lightNode, sceneNode); lightNode = mXmlReader->getNextSiblingNode(lightNode); } const Util::XmlNode * trackNode = mXmlReader->getFirstNode(snNode, "node_track"); while (trackNode) { processNodeTrack(trackNode, sceneNode); trackNode = mXmlReader->getNextSiblingNode(trackNode); } }
//--------------------------------------------------------------------- void SceneResource::processCamera(const Util::XmlNode * cameraNode) const { CameraPtr camera; /// params { Util::String nearClipStr(mXmlReader->getAttribute(cameraNode, "near_clip")); Util::real nearClip = boost::lexical_cast<Util::real>(nearClipStr); Util::String farClipStr(mXmlReader->getAttribute(cameraNode, "far_clip")); Util::real farClip = boost::lexical_cast<Util::real>(farClipStr); Util::String viewportRectStr(mXmlReader->getAttribute(cameraNode, "viewport_rect")); XMVECTOR viewportRect = Util::StringToVector(viewportRectStr, 4); camera = boost::make_shared<Camera>(nearClip, farClip, Util::UintPair(XMVectorGetIntX(viewportRect), XMVectorGetIntY(viewportRect)), Util::UintPair(XMVectorGetIntZ(viewportRect), XMVectorGetIntW(viewportRect))); IF_NULL_EXCEPTION(camera, "Camera creat failed!"); } /// postion { Util::String posStr(mXmlReader->getAttribute(cameraNode, "position")); camera->setPosition(Util::StringToVector(posStr, 3)); } /// lookat { Util::String str(mXmlReader->getAttribute(cameraNode, "lookat")); camera->lookAt(Util::StringToVector(str, 3)); } /// movespeed { Util::String str(mXmlReader->getAttribute(cameraNode, "move_speed")); camera->setMoveSpeed(boost::lexical_cast<Util::real>(str)); } EngineManager::getSingleton().setCamera(camera); }
void MessageChar(char character, int pos) { std::string posStr(std::to_string(pos)); std::string chrStr(std::to_string(character)); MessageBox(NULL, chrStr.c_str(), posStr.c_str(), MB_OK); }