SSphericalLimitInfo CPhysxSkeleton::GetJointParameterInfo(CXMLTreeNode _XMLObjects) { SSphericalLimitInfo l_sInfo; bool l_bTwistLimitLow = _XMLObjects.ExistsProperty("TwistLimitLow"); bool l_bTwistLimitHigh = _XMLObjects.ExistsProperty("TwistLimitHigh"); l_sInfo.JointSpring = _XMLObjects.ExistsProperty("JointSpring"); l_sInfo.TwistSpring = _XMLObjects.ExistsProperty("TwistSpring"); l_sInfo.SwingSpring = _XMLObjects.ExistsProperty("SwingSpring"); l_sInfo.SwingLimit = _XMLObjects.ExistsProperty("SwingLimit"); if (l_sInfo.JointSpring) { Vect2f l_vJointSpring = _XMLObjects.GetVect2fProperty("JointSpring",v2fZERO,false); l_sInfo.JointSpringValue = l_vJointSpring.x; l_sInfo.JointSpringDamper = l_vJointSpring.y; } if (l_sInfo.TwistSpring) { Vect2f l_vTwistSpring = _XMLObjects.GetVect2fProperty("TwistSpring",v2fZERO,false); l_sInfo.TwistSpringValue = l_vTwistSpring.x; l_sInfo.TwistSpringDamper = l_vTwistSpring.y; } if (l_sInfo.SwingSpring) { Vect2f l_vSwingSpring = _XMLObjects.GetVect2fProperty("SwingSpring",v2fZERO,false); l_sInfo.SwingSpringValue = l_vSwingSpring.x; l_sInfo.SwingSpringDamper = l_vSwingSpring.y; } if (l_sInfo.SwingLimit) { Vect2f l_vSwingLimit = _XMLObjects.GetVect2fProperty("SwingLimit",v2fZERO,false); l_sInfo.SwingValue = l_vSwingLimit.x; l_sInfo.SwingRestitution = l_vSwingLimit.y; } if (l_bTwistLimitLow && l_bTwistLimitHigh) { l_sInfo.TwistLimit = true; Vect2f l_vTwistLimitLow = _XMLObjects.GetVect2fProperty("TwistLimitLow",v2fZERO,false); Vect2f l_vTwistLimitHigh = _XMLObjects.GetVect2fProperty("TwistLimitHigh",v2fZERO,false); l_sInfo.TwistLowValue = l_vTwistLimitLow.x; l_sInfo.TwistLowRestitution = l_vTwistLimitLow.y; l_sInfo.TwistHighValue = l_vTwistLimitHigh.x; l_sInfo.TwistHighRestitution = l_vTwistLimitHigh.y; } else { l_sInfo.TwistLimit = false; } return l_sInfo; }
bool CSceneRendererStep::InitMaterialEffects(CXMLTreeNode& _treeMaterialEffects) { if(!_treeMaterialEffects.Exists()) return false; m_szParticleEffect = _treeMaterialEffects.GetPszISOProperty("particle_effect","",false); if(_treeMaterialEffects.ExistsProperty("static_mesh_effect") && _treeMaterialEffects.ExistsProperty("animated_model_effect")) { m_szStaticMeshEffect = _treeMaterialEffects.GetPszISOProperty("static_mesh_effect","",false); m_szAnimatedModelEffect = _treeMaterialEffects.GetPszISOProperty("animated_model_effect","",false); m_bUseMap = false; }else{ m_bUseMap = true; int l_iNumRenderTargets = _treeMaterialEffects.GetNumChildren(); for(int l_iIndex = 0; l_iIndex < l_iNumRenderTargets;l_iIndex++) { CXMLTreeNode l_pMaterialEffect = _treeMaterialEffects(l_iIndex); if(string(l_pMaterialEffect.GetName()) == "material_effect") { int l_iMaterialType = l_pMaterialEffect.GetIntProperty("material_type",0,false); string l_szEffectName = l_pMaterialEffect.GetPszISOProperty("effect","",false); if(l_szEffectName != "") { m_mapMaterialEffects[l_iMaterialType] = l_szEffectName; }else{ LOGGER->AddNewLog(ELL_WARNING,"CSceneRendererStep::InitMaterialEffects material type %d amb effecte null",l_iMaterialType); } }else if(!l_pMaterialEffect.IsComment()) { LOGGER->AddNewLog(ELL_WARNING,"CSceneRendererStep::InitMaterialEffects element no reconegut %s",l_pMaterialEffect.GetName()); } } } return true; }
bool CPostSceneRendererStep::Init(CXMLTreeNode& _treePostSceneRenderer, const string& _szDefaultRenderTarget, bool _bNeedsEffect) { string l_szEffect = _treePostSceneRenderer.GetPszISOProperty("effect","",!_bNeedsEffect); if(!CRendererStep::Init(_treePostSceneRenderer, _szDefaultRenderTarget)) { LOGGER->AddNewLog(ELL_ERROR,"CPostSceneRendererStep::Init PostSceneRenderer sense nom"); SetOk(false); } else if(l_szEffect == "" && _bNeedsEffect) { LOGGER->AddNewLog(ELL_ERROR,"CPostSceneRendererStep::Init PostSceneRenderer sense effect"); SetOk(false); } else { LOGGER->AddNewLog(ELL_INFORMATION,"CPostSceneRendererStep::Init iniciant %s",GetName().c_str()); CRendererStep::Init(_treePostSceneRenderer, _szDefaultRenderTarget); CXMLTreeNode l_treeSamplers = _treePostSceneRenderer.GetChild("input_samplers"); CXMLTreeNode l_treeRenderTargets = _treePostSceneRenderer.GetChild("render_targets"); if(!InitInputSamplers(l_treeSamplers)) { LOGGER->AddNewLog(ELL_ERROR,"CPostSceneRendererStep::Init error inicialitzant input_samplers"); SetOk(false); } else { m_szEffect = l_szEffect; m_bUseTime = _treePostSceneRenderer.GetBoolProperty("use_time",false,false); if(m_bUseTime) { m_bUseDeltaTime = _treePostSceneRenderer.GetBoolProperty("use_delta_time",false,false); } else { m_bUseDeltaTime = false; } m_bUseCenter = _treePostSceneRenderer.GetBoolProperty("use_center",false,false); string l_szAlignment = _treePostSceneRenderer.GetPszISOProperty("alignment","",false); if(l_szAlignment == "center") { m_Alignment = CENTER; } Vect2f l_fPos = _treePostSceneRenderer.GetVect2fProperty("position",Vect2f(0),false); m_iPos.x = (int) (l_fPos.x * RENDER_MANAGER->GetScreenWidth()); m_iPos.y = (int) (l_fPos.y * RENDER_MANAGER->GetScreenHeight()); if(_treePostSceneRenderer.ExistsProperty("size")) { float l_fSizeX = _treePostSceneRenderer.GetFloatProperty("size",1.0,false); if(_treePostSceneRenderer.GetBoolProperty("absolute_size",false,false)) { m_iSize.x = (int) l_fSizeX; m_iSize.y = m_iSize.x; } else { m_iSize.x = (int) (l_fSizeX * RENDER_MANAGER->GetScreenWidth()); m_iSize.y = m_iSize.x; } if(_treePostSceneRenderer.ExistsProperty("aspect_ratio")) { bool l_bAspectRatio = _treePostSceneRenderer.GetBoolProperty("aspect_ratio",true,false); if(l_bAspectRatio) { m_iSize.y = (int)(m_iSize.x * RENDER_MANAGER->GetScreenHeight()/(float)RENDER_MANAGER->GetScreenWidth()); } } } else if(_treePostSceneRenderer.ExistsProperty("size_x")) { float l_fSizeX = _treePostSceneRenderer.GetFloatProperty("size_x",1.0,false); float l_fSizeY = _treePostSceneRenderer.GetFloatProperty("size_y",1.0,false); if(_treePostSceneRenderer.GetBoolProperty("absolute_size",false,false)) { m_iSize.x = (int) l_fSizeX; m_iSize.y = (int) l_fSizeY; } else { m_iSize.x = (int) (l_fSizeX * RENDER_MANAGER->GetScreenWidth()); m_iSize.y = (int) (l_fSizeY * RENDER_MANAGER->GetScreenHeight()); } } else { m_iSize.x = RENDER_MANAGER->GetScreenWidth(); m_iSize.y = RENDER_MANAGER->GetScreenHeight(); } SetOk(true); } } return IsOk(); }