mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-28 19:55:48 +03:00
149 lines
6.6 KiB
C++
149 lines
6.6 KiB
C++
#include "cficontroller.h"
|
|
|
|
CfiController::CfiController(UpdateController* updateController, QObject *parent) :
|
|
QObject(parent),
|
|
updateController(updateController)
|
|
{
|
|
|
|
}
|
|
|
|
CfiController::~CfiController()
|
|
{
|
|
|
|
}
|
|
|
|
void CfiController::lockAccessToCfiXML()
|
|
{
|
|
mtxAccess.lock();
|
|
}
|
|
|
|
void CfiController::unLockAccessToCfiXML()
|
|
{
|
|
mtxAccess.unlock();
|
|
}
|
|
|
|
bool CfiController::parsingCfiXML()
|
|
{
|
|
QMutexLocker locker(&mtxAccess);
|
|
|
|
if(!updateController)
|
|
return false;
|
|
|
|
QString pathCfiListFile = updateController->getPathAdditionalFile(cfiListFileName);
|
|
|
|
QDomDocument docCfiListDOM;
|
|
if(! Tools::loadXMLtoDOM(pathCfiListFile, &docCfiListDOM))
|
|
return false;
|
|
|
|
QDomElement CFIObjectsElement = docCfiListDOM.firstChildElement("CFIObjects");
|
|
if(CFIObjectsElement.isNull())
|
|
return false;
|
|
|
|
listCfiObjects.clear();
|
|
|
|
//Parsing
|
|
QDomElement oneCFIObjectElement = CFIObjectsElement.firstChildElement();
|
|
if(oneCFIObjectElement.isNull())
|
|
return true;
|
|
|
|
QString name;
|
|
|
|
do
|
|
{
|
|
name = oneCFIObjectElement.nodeName();
|
|
|
|
if(name == "CFIObject")
|
|
{
|
|
CfiObject cfiObj;
|
|
|
|
//атрибуты CFIObject
|
|
QDomNamedNodeMap nodeMapOneCFIObject = oneCFIObjectElement.attributes();
|
|
cfiObj.setId(nodeMapOneCFIObject.namedItem("id").nodeValue().toInt());
|
|
cfiObj.setIsChanged(nodeMapOneCFIObject.namedItem("isChanged").nodeValue() == "True" ? true : false);
|
|
|
|
//childs CFIObject
|
|
QDomElement cfiName_Element = oneCFIObjectElement.elementsByTagName("cfiName").at(0).toElement();
|
|
cfiObj.setCfiName(cfiName_Element.text());
|
|
QDomElement cfi_Element = oneCFIObjectElement.elementsByTagName("cfi").at(0).toElement();
|
|
cfiObj.setCfi(cfi_Element.text());
|
|
QDomElement zoneName_Element = oneCFIObjectElement.elementsByTagName("zoneName").at(0).toElement();
|
|
cfiObj.setZoneName(zoneName_Element.text());
|
|
QDomElement goName_Element = oneCFIObjectElement.elementsByTagName("goName").at(0).toElement();
|
|
cfiObj.setGoName(goName_Element.text());
|
|
|
|
//child CFIObject : SetCameraPos
|
|
SetCameraPos setCamPos;
|
|
QDomElement setcamerapos_Element = oneCFIObjectElement.elementsByTagName("setcamerapos").at(0).toElement();
|
|
//атрибуты setcamerapos
|
|
QDomNamedNodeMap nodeMapSetcamerapos = setcamerapos_Element.attributes();
|
|
setCamPos.set = nodeMapSetcamerapos.namedItem("set").nodeValue() == "True" ? true : false;
|
|
setCamPos.fast = nodeMapSetcamerapos.namedItem("fast").nodeValue() == "True" ? true : false;
|
|
setCamPos.specialPanel = nodeMapSetcamerapos.namedItem("specialPanel").nodeValue() == "True" ? true : false;
|
|
|
|
setCamPos.cameraMode = nodeMapSetcamerapos.namedItem("cameraMode").nodeValue();
|
|
setCamPos.state = nodeMapSetcamerapos.namedItem("state").nodeValue();
|
|
setCamPos.panelName = nodeMapSetcamerapos.namedItem("panelName").nodeValue();
|
|
|
|
setCamPos.prevCamOffsetMARposY = nodeMapSetcamerapos.namedItem("prevCamOffsetMARposY").nodeValue().toFloat();
|
|
setCamPos.camOffsetMARposY = nodeMapSetcamerapos.namedItem("camOffsetMARposY").nodeValue().toFloat();
|
|
setCamPos.prevCharControlerHeight = nodeMapSetcamerapos.namedItem("prevCharControlerHeight").nodeValue().toFloat();
|
|
setCamPos.charControlerHeight = nodeMapSetcamerapos.namedItem("charControlerHeight").nodeValue().toFloat();
|
|
setCamPos.FOV = nodeMapSetcamerapos.namedItem("FOV").nodeValue().toFloat();
|
|
setCamPos.moveSpeed = nodeMapSetcamerapos.namedItem("moveSpeed").nodeValue().toFloat();
|
|
setCamPos.projectionSize = nodeMapSetcamerapos.namedItem("projectionSize").nodeValue().toFloat();
|
|
setCamPos.offset = nodeMapSetcamerapos.namedItem("offset").nodeValue().toFloat();
|
|
setCamPos.prevPlayerRot = nodeMapSetcamerapos.namedItem("prevPlayerRot").nodeValue().toFloat();
|
|
|
|
//childs setcamerapos
|
|
QDomElement loc_Element;
|
|
loc_Element = setcamerapos_Element.elementsByTagName("axesClamp").at(0).toElement();
|
|
setCamPos.axesClamp = getXYfromElement(loc_Element);
|
|
loc_Element = setcamerapos_Element.elementsByTagName("prevPlayerPos").at(0).toElement();
|
|
setCamPos.prevPlayerPos = getXYZfromElement(loc_Element);
|
|
loc_Element = setcamerapos_Element.elementsByTagName("playerPos").at(0).toElement();
|
|
setCamPos.playerPos = getXYZfromElement(loc_Element);
|
|
loc_Element = setcamerapos_Element.elementsByTagName("playerRot").at(0).toElement();
|
|
setCamPos.playerRot = getXYZfromElement(loc_Element);
|
|
loc_Element = setcamerapos_Element.elementsByTagName("prevCamRot").at(0).toElement();
|
|
setCamPos.prevCamRot = getXYZfromElement(loc_Element);
|
|
loc_Element = setcamerapos_Element.elementsByTagName("camRot").at(0).toElement();
|
|
setCamPos.camRot = getXYZfromElement(loc_Element);
|
|
loc_Element = setcamerapos_Element.elementsByTagName("goCenter").at(0).toElement();
|
|
setCamPos.goCenter = getXYZfromElement(loc_Element);
|
|
loc_Element = setcamerapos_Element.elementsByTagName("playerMARpos").at(0).toElement();
|
|
setCamPos.playerMARpos = getXYZfromElement(loc_Element);
|
|
loc_Element = setcamerapos_Element.elementsByTagName("playerMARrot").at(0).toElement();
|
|
setCamPos.playerMARrot = getXYZfromElement(loc_Element);
|
|
loc_Element = setcamerapos_Element.elementsByTagName("camMARrot").at(0).toElement();
|
|
setCamPos.camMARrot = getXYZfromElement(loc_Element);
|
|
loc_Element = setcamerapos_Element.elementsByTagName("playerPosRelativeToThePanel").at(0).toElement();
|
|
setCamPos.playerPosRelativeToThePanel = getXYZfromElement(loc_Element);
|
|
|
|
cfiObj.setSetCameraPos(setCamPos);
|
|
|
|
listCfiObjects.append(cfiObj);
|
|
}
|
|
}while (! (oneCFIObjectElement = oneCFIObjectElement.nextSiblingElement()).isNull());
|
|
|
|
return true;
|
|
}
|
|
|
|
QVector3D CfiController::getXYZfromElement(QDomElement element)
|
|
{
|
|
QVector3D vector3D;
|
|
QDomNamedNodeMap nodeMap = element.attributes();
|
|
vector3D.setX(nodeMap.namedItem("x").nodeValue().toFloat());
|
|
vector3D.setY(nodeMap.namedItem("y").nodeValue().toFloat());
|
|
vector3D.setZ(nodeMap.namedItem("z").nodeValue().toFloat());
|
|
return vector3D;
|
|
}
|
|
|
|
QVector2D CfiController::getXYfromElement(QDomElement element)
|
|
{
|
|
QVector2D vector2D;
|
|
QDomNamedNodeMap nodeMap = element.attributes();
|
|
vector2D.setX(nodeMap.namedItem("x").nodeValue().toFloat());
|
|
vector2D.setY(nodeMap.namedItem("y").nodeValue().toFloat());
|
|
return vector2D;
|
|
}
|