本文整理汇总了C++中Point3::Unify方法的典型用法代码示例。如果您正苦于以下问题:C++ Point3::Unify方法的具体用法?C++ Point3::Unify怎么用?C++ Point3::Unify使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Point3
的用法示例。
在下文中一共展示了Point3::Unify方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: WriteToFile
//[-------------------------------------------------------]
//[ Private virtual PLSceneNode functions ]
//[-------------------------------------------------------]
void PLSceneCellPortal::WriteToFile(XmlElement &cSceneElement, const String &sApplicationDrive, const String &sApplicationDir)
{
// Add scene node
XmlElement *pNodeElement = new XmlElement("Node");
pNodeElement->SetAttribute("Class", GetClassName());
pNodeElement->SetAttribute("Name", GetName());
// Write position, rotation, scale, bounding box and flags
WriteToFilePosRotScaleBoxFlags(*pNodeElement);
// Target cell
pNodeElement->SetAttribute("TargetCell", m_sTargetCell);
// [TODO] Check this again, within the Dungeon-Demo scene, this test fails for one portal...
// Check cell-portal direction and write a warning into the log if the direction looks wrong
float fDot = 0.0f;
PLSceneContainer *pContainer = GetContainer();
if (pContainer) {
// Get world space direction vector from cell-portal to owner cell
Point3 vDir = pContainer->GetWorldSpaceCenter() - m_vCenter;
vDir.Unify();
// Check whether the cell-portal looks into the owner cell
fDot = DotProd(m_vNormal, vDir);
if (fDot < 0.0f)
g_pLog->LogFLine(PLLog::Warning, "%s: The cell-portal doesn't look INTO the cell (%s) it is in!!", GetIGameNode()->GetName(), pContainer->GetName().GetASCII());
}
// Vertices
std::vector<Point3>::size_type nNumOfVertices = m_lstVertices.size();
String sVertices;
if (fDot < 0.0f && g_SEOptions.bCorrectPortals) {
// Invert vertex order
for (std::vector<Point3>::size_type i=nNumOfVertices; i>0; i--) {
const Point3 &vVertex = m_lstVertices[i-1];
if (i)
sVertices += String::Format("%f %f %f ", vVertex.x, vVertex.y, vVertex.z);
else
sVertices += String::Format("%f %f %f", vVertex.x, vVertex.y, vVertex.z);
}
} else {
for (std::vector<Point3>::size_type i=0; i<nNumOfVertices; i++) {
const Point3 &vVertex = m_lstVertices[i];
if (i < nNumOfVertices-1)
sVertices += String::Format("%f %f %f ", vVertex.x, vVertex.y, vVertex.z);
else
sVertices += String::Format("%f %f %f", vVertex.x, vVertex.y, vVertex.z);
}
}
pNodeElement->SetAttribute("Vertices", sVertices);
// Write flexible variables
WriteVariables(*pNodeElement);
// Write modifiers
WriteModifiers(*pNodeElement, sApplicationDrive, sApplicationDir);
// Link node element
cSceneElement.LinkEndChild(*pNodeElement);
}