diff --git a/src/Implementation/CMediaRessourceVectorImpl.cpp b/src/Implementation/CMediaRessourceVectorImpl.cpp index 7fa782e3..0502b8c7 100644 --- a/src/Implementation/CMediaRessourceVectorImpl.cpp +++ b/src/Implementation/CMediaRessourceVectorImpl.cpp @@ -976,6 +976,74 @@ VectorworksMVR::VCOMError VectorworksMVR::CMediaRessourceVectorImpl::CreateProje return kVCOMError_NoError; } +VectorworksMVR::VCOMError VectorworksMVR::CMediaRessourceVectorImpl::CreateListeningPlane(const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outlisteningPlane) +{ + //--------------------------------------------------------------------------- + // Read Container + CSceneObjImpl* pContainer = static_cast(addToContainer); + + ASSERTN(kEveryone, pContainer != nullptr); + if ( ! pContainer) { return kVCOMError_NoValidContainerObj; } + + + SceneData::SceneDataObjWithMatrixPtr obj = nullptr; + ESceneObjType type = ESceneObjType::Layer; + pContainer->GetPointer(obj, type); + + if( ! VectorworksMVR::MvrUtil::isContainerType(type)) { return kVCOMError_NoValidContainerObj; } + + SceneData::SceneDataGroupObjPtr group = static_cast(obj); + + ASSERTN(kEveryone, group != nullptr); + if ( ! group) { return kVCOMError_NoValidContainerObj; } + + //--------------------------------------------------------------------------- + // Create the obj + VWFC::Tools::VWUUID uuid (guid.a,guid.b,guid.c,guid.d); + TXString nameStr ( name ); + + VWTransformMatrix ma; + GdtfUtil::ConvertMatrix(offset, ma); + + SceneData::SceneDataListeningPlaneObjPtr ptr = fExchangeObj.CreateListeningPlane(uuid, ma, nameStr, group); + + //--------------------------------------------------------------------------- + // Initialize Object + CSceneObjImpl* pListeningPlane = nullptr; + + // Query Interface + if (VCOM_SUCCEEDED(VWQueryInterface(IID_SceneObject, (IVWUnknown**) & pListeningPlane))) + { + // Check Casting + CSceneObjImpl* pResultInterface = static_cast(pListeningPlane); + if (pResultInterface) + { + pResultInterface->SetPointer(ptr, GetExchangeObj()); + } + else + { + pResultInterface->Release(); + pResultInterface = nullptr; + return kVCOMError_NoInterface; + } + } + + //--------------------------------------------------------------------------- + // Check Incoming Object + if (*outlisteningPlane) + { + (*outlisteningPlane)->Release(); + *outlisteningPlane = NULL; + } + + //--------------------------------------------------------------------------- + // Set Out Value + *outlisteningPlane = pListeningPlane; + + return kVCOMError_NoError; +} + + VectorworksMVR::VCOMError VectorworksMVR::CMediaRessourceVectorImpl::Close() { //------------------------------------------------------------------ diff --git a/src/Implementation/CMediaRessourceVectorImpl.h b/src/Implementation/CMediaRessourceVectorImpl.h index 4a5db374..5bc0772b 100644 --- a/src/Implementation/CMediaRessourceVectorImpl.h +++ b/src/Implementation/CMediaRessourceVectorImpl.h @@ -55,16 +55,17 @@ namespace VectorworksMVR // Then you can generate all other objects - virtual VCOMError VCOM_CALLTYPE CreateLayerObject( const MvrUUID& guid, MvrString name, ISceneObj** outLayerObj); - virtual VCOMError VCOM_CALLTYPE CreateGroupObject( const MvrUUID& guid, const STransformMatrix& offset, ISceneObj* addToContainer, ISceneObj** outGroupObj); - virtual VCOMError VCOM_CALLTYPE CreateGroupObject( const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outGroupObj); - virtual VCOMError VCOM_CALLTYPE CreateFixture( const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outFixture); - virtual VCOMError VCOM_CALLTYPE CreateSceneObject( const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outSceneObj); - virtual VCOMError VCOM_CALLTYPE CreateFocusPoint( const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outFocusPoint); - virtual VCOMError VCOM_CALLTYPE CreateTruss( const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outTruss); - virtual VCOMError VCOM_CALLTYPE CreateSupport( const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outSupport); - virtual VCOMError VCOM_CALLTYPE CreateVideoScreen( const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outVideoScreen); - virtual VCOMError VCOM_CALLTYPE CreateProjector( const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outProjector); + virtual VCOMError VCOM_CALLTYPE CreateLayerObject( const MvrUUID& guid, MvrString name, ISceneObj** outLayerObj); + virtual VCOMError VCOM_CALLTYPE CreateGroupObject( const MvrUUID& guid, const STransformMatrix& offset, ISceneObj* addToContainer, ISceneObj** outGroupObj); + virtual VCOMError VCOM_CALLTYPE CreateGroupObject( const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outGroupObj); + virtual VCOMError VCOM_CALLTYPE CreateFixture( const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outFixture); + virtual VCOMError VCOM_CALLTYPE CreateSceneObject( const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outSceneObj); + virtual VCOMError VCOM_CALLTYPE CreateFocusPoint( const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outFocusPoint); + virtual VCOMError VCOM_CALLTYPE CreateTruss( const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outTruss); + virtual VCOMError VCOM_CALLTYPE CreateSupport( const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outSupport); + virtual VCOMError VCOM_CALLTYPE CreateVideoScreen( const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outVideoScreen); + virtual VCOMError VCOM_CALLTYPE CreateProjector( const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outProjector); + virtual VCOMError VCOM_CALLTYPE CreateListeningPlane( const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outListeningPlane); // Add the end call to write the file to disk virtual VCOMError VCOM_CALLTYPE Close(); diff --git a/src/Implementation/CSceneObjImpl.cpp b/src/Implementation/CSceneObjImpl.cpp index 1da2d4f1..cabbab34 100644 --- a/src/Implementation/CSceneObjImpl.cpp +++ b/src/Implementation/CSceneObjImpl.cpp @@ -1984,6 +1984,46 @@ VectorworksMVR::VCOMError VectorworksMVR::CSceneObjImpl::GetVideoScreenSource(IS return kVCOMError_NoError; } +// ------------------------------------------------------------------------------------------------------------------------------------------ +// Listening Plane +VectorworksMVR::VCOMError VectorworksMVR::CSceneObjImpl::SetAudioDescriptionFile(MvrString fileName) +{ + // Check if this is initialized + ASSERTN(kEveryone,fPtr); + if( ! fPtr) return kVCOMError_NotInitialized; + + // Check the type is right + ASSERTN(kEveryone,fType == ESceneObjType::ListeningPlane); + if( fType != ESceneObjType::ListeningPlane) return kVCOMError_Failed; + + // Try to cast + SceneData::SceneDataListeningPlaneObjPtr listeningPlane = static_cast(fPtr); + if( ! listeningPlane) return kVCOMError_Failed; + + listeningPlane->SetAudioDescriptionFile(fileName); + + return kVCOMError_NoError; +} + +VectorworksMVR::VCOMError VectorworksMVR::CSceneObjImpl::GetAudioDescriptionFile( MvrString& outFileName ) +{ + // Check if this is initialized + ASSERTN( kEveryone, fPtr ); + if ( !fPtr ) return kVCOMError_NotInitialized; + + // Check the type is right + ASSERTN( kEveryone, fType == ESceneObjType::ListeningPlane ); + if ( fType != ESceneObjType::ListeningPlane ) return kVCOMError_Failed; + + // Try to cast + SceneData::SceneDataListeningPlaneObjPtr listeningPlane = static_cast( fPtr ); + if ( !listeningPlane ) return kVCOMError_Failed; + + outFileName = listeningPlane->GetAudioDescriptionFile(); + + return kVCOMError_NoError; +} + //------------------------------------------------------------------------------------------------------------------------------------------ // Projector VectorworksMVR::VCOMError VectorworksMVR::CSceneObjImpl::SetProjectorSource(MvrString value, MvrString linkedGeometry, GdtfDefines::ESourceType type) @@ -2152,15 +2192,16 @@ void VectorworksMVR::CSceneObjImpl::SetPointer(SceneData::SceneDataObjWithMatrix switch (pointer->GetObjectType()) { - case SceneData::eLayer: fType = ESceneObjType::Layer; break; - case SceneData::eGroup: fType = ESceneObjType::Group; break; - case SceneData::eTruss: fType = ESceneObjType::Truss; break; - case SceneData::eSupport: fType = ESceneObjType::Support; break; - case SceneData::eFixture: fType = ESceneObjType::Fixture; break; - case SceneData::eFocusPoint: fType = ESceneObjType::FocusPoint; break; - case SceneData::eSceneObject: fType = ESceneObjType::SceneObj; break; - case SceneData::eVideoScreen: fType = ESceneObjType::VideoScreen; break; - case SceneData::eProjector: fType = ESceneObjType::Projector; break; + case SceneData::eLayer: fType = ESceneObjType::Layer; break; + case SceneData::eGroup: fType = ESceneObjType::Group; break; + case SceneData::eTruss: fType = ESceneObjType::Truss; break; + case SceneData::eSupport: fType = ESceneObjType::Support; break; + case SceneData::eFixture: fType = ESceneObjType::Fixture; break; + case SceneData::eFocusPoint: fType = ESceneObjType::FocusPoint; break; + case SceneData::eSceneObject: fType = ESceneObjType::SceneObj; break; + case SceneData::eVideoScreen: fType = ESceneObjType::VideoScreen; break; + case SceneData::eProjector: fType = ESceneObjType::Projector; break; + case SceneData::eListeningPlane: fType = ESceneObjType::ListeningPlane; break; default: DSTOP((kEveryone, "Unexpected input!")); diff --git a/src/Implementation/CSceneObjImpl.h b/src/Implementation/CSceneObjImpl.h index 40aceba1..d1484183 100644 --- a/src/Implementation/CSceneObjImpl.h +++ b/src/Implementation/CSceneObjImpl.h @@ -112,6 +112,8 @@ namespace VectorworksMVR virtual VCOMError VCOM_CALLTYPE GetConnectionAt(size_t at, IConnection** outConnection); virtual VCOMError VCOM_CALLTYPE CreateConnection(MvrString own, MvrString other, MvrUUID ToObject, IConnection** addedObj); + virtual VCOMError VCOM_CALLTYPE SetAudioDescriptionFile( MvrString fileName ); + virtual VCOMError VCOM_CALLTYPE GetAudioDescriptionFile( MvrString& outFileName ); // Implementation public: diff --git a/src/Include/IMediaRessourceVectorInterface.h b/src/Include/IMediaRessourceVectorInterface.h index 2c3266e8..406a2c83 100644 --- a/src/Include/IMediaRessourceVectorInterface.h +++ b/src/Include/IMediaRessourceVectorInterface.h @@ -327,6 +327,7 @@ namespace VectorworksMVR Fixture, Projector, Support, + ListeningPlane }; class DYNAMIC_ATTRIBUTE ISceneObj : public IVWUnknown @@ -404,6 +405,10 @@ namespace VectorworksMVR virtual VCOMError VCOM_CALLTYPE SetVideoScreenSource(MvrString value, MvrString linkedGeometry, GdtfDefines::ESourceType) = 0; virtual VCOMError VCOM_CALLTYPE GetVideoScreenSource(ISource** outSource) = 0; + // Listening Plane + virtual VCOMError VCOM_CALLTYPE SetAudioDescriptionFile(MvrString value) = 0; + virtual VCOMError VCOM_CALLTYPE GetAudioDescriptionFile(MvrString& outValue) = 0; + // Projector virtual VCOMError VCOM_CALLTYPE SetProjectorSource(MvrString value, MvrString linkedGeometry, GdtfDefines::ESourceType) = 0; virtual VCOMError VCOM_CALLTYPE GetProjectorSource(ISource** outSource) = 0; @@ -450,16 +455,17 @@ namespace VectorworksMVR virtual VCOMError VCOM_CALLTYPE CreateMappingDefinitionObject( const MvrUUID& guid, MvrString name, IMappingDefinition** outMapDef) = 0; // Then you can generate all other objects - virtual VCOMError VCOM_CALLTYPE CreateLayerObject( const MvrUUID& guid, MvrString name, ISceneObj** outLayerObj) = 0; - virtual VCOMError VCOM_CALLTYPE CreateGroupObject( const MvrUUID& guid, const STransformMatrix& offset, ISceneObj* addToContainer, ISceneObj** outGroupObj) = 0; - virtual VCOMError VCOM_CALLTYPE CreateGroupObject( const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outGroupObj) = 0; - virtual VCOMError VCOM_CALLTYPE CreateFixture( const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outFixture) = 0; - virtual VCOMError VCOM_CALLTYPE CreateSceneObject( const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outSceneObj) = 0; - virtual VCOMError VCOM_CALLTYPE CreateFocusPoint( const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outFocusPoint) = 0; - virtual VCOMError VCOM_CALLTYPE CreateVideoScreen( const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outVideoScreen) = 0; - virtual VCOMError VCOM_CALLTYPE CreateTruss( const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outTruss) = 0; - virtual VCOMError VCOM_CALLTYPE CreateSupport( const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outSupport) = 0; - virtual VCOMError VCOM_CALLTYPE CreateProjector( const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outProjector) = 0; + virtual VCOMError VCOM_CALLTYPE CreateLayerObject( const MvrUUID& guid, MvrString name, ISceneObj** outLayerObj) = 0; + virtual VCOMError VCOM_CALLTYPE CreateGroupObject( const MvrUUID& guid, const STransformMatrix& offset, ISceneObj* addToContainer, ISceneObj** outGroupObj) = 0; + virtual VCOMError VCOM_CALLTYPE CreateGroupObject( const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outGroupObj) = 0; + virtual VCOMError VCOM_CALLTYPE CreateFixture( const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outFixture) = 0; + virtual VCOMError VCOM_CALLTYPE CreateSceneObject( const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outSceneObj) = 0; + virtual VCOMError VCOM_CALLTYPE CreateFocusPoint( const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outFocusPoint) = 0; + virtual VCOMError VCOM_CALLTYPE CreateVideoScreen( const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outVideoScreen) = 0; + virtual VCOMError VCOM_CALLTYPE CreateTruss( const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outTruss) = 0; + virtual VCOMError VCOM_CALLTYPE CreateSupport( const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outSupport) = 0; + virtual VCOMError VCOM_CALLTYPE CreateProjector( const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outProjector) = 0; + virtual VCOMError VCOM_CALLTYPE CreateListeningPlane( const MvrUUID& guid, const STransformMatrix& offset, MvrString name, ISceneObj* addToContainer, ISceneObj** outListeningPlane) = 0; // Add the end call to write the file to disk virtual VCOMError VCOM_CALLTYPE Close() = 0; diff --git a/src/Prefix/CommonPrefix.h b/src/Prefix/CommonPrefix.h index 702244d1..21bf3bd2 100644 --- a/src/Prefix/CommonPrefix.h +++ b/src/Prefix/CommonPrefix.h @@ -245,6 +245,8 @@ #define XML_Val_ProjectorObjectProjection "Projection" #define XML_Val_ProjectorObjectScaleHandling "ScaleHandling" +#define XML_Val_ListeningPlaneObjectNodeName "ListeningPlane" + #define XML_Val_SymbolObjectNodeName "Symbol" #define XML_Val_GuidSymdefAttrName "symdef" diff --git a/src/SceneDataExchange.cpp b/src/SceneDataExchange.cpp index b231634f..03468f2e 100644 --- a/src/SceneDataExchange.cpp +++ b/src/SceneDataExchange.cpp @@ -2796,6 +2796,49 @@ void SceneDataProjectorObj::OnReadFromNode(const IXMLFileNodePtr& pNode, SceneDa } +// ---------------------------------------------------------------------------------------------------------------------------------- +// SceneDataListeningPlaneObj +SceneDataListeningPlaneObj::SceneDataListeningPlaneObj(const SceneDataGUID& guid) : SceneDataGroupObj(guid) +{ +} + +SceneDataListeningPlaneObj::~SceneDataListeningPlaneObj() +{ +} + +const TXString& SceneDataListeningPlaneObj::GetAudioDescriptionFile() const +{ + return fAudioDescriptionFile; +} + +void SceneDataListeningPlaneObj::SetAudioDescriptionFile( const TXString& value ) +{ + fAudioDescriptionFile = value; +} + +TXString SceneDataListeningPlaneObj::GetNodeName() +{ + return TXString(XML_Val_ListeningPlaneObjectNodeName); +} + +ESceneDataObjectType SceneDataListeningPlaneObj::GetObjectType() +{ + return ESceneDataObjectType::eListeningPlane; +} + +void SceneDataListeningPlaneObj::OnPrintToFile(IXMLFileNodePtr pNode, SceneDataExchange* exchange) +{ + SceneDataObjWithMatrix::OnPrintToFile( pNode, exchange ); + + pNode->SetNodeAttributeValue("AudioDescriptionFile", fAudioDescriptionFile); +} + +void SceneDataListeningPlaneObj::OnReadFromNode(const IXMLFileNodePtr& pNode, SceneDataExchange* exchange) +{ + SceneDataObjWithMatrix::OnReadFromNode( pNode, exchange ); + + pNode->GetNodeAttributeValue("AudioDescriptionFile", fAudioDescriptionFile); +} // ---------------------------------------------------------------------------------------------------------------------------------- // SceneDataSymbolObj @@ -3444,6 +3487,29 @@ SceneDataProjectorObjPtr SceneDataExchange::ReadProjector(const SceneDataGUID& g return newProjectorObj; } +SceneDataListeningPlaneObjPtr SceneDataExchange::CreateListeningPlane(const SceneDataGUID& guid, const VWTransformMatrix& offset, const TXString& name, SceneDataGroupObjPtr addToContainer) +{ + SceneDataListeningPlaneObjPtr newListeningPlaneObj = new SceneDataListeningPlaneObj(guid); + addToContainer->AddObject(newListeningPlaneObj); + + newListeningPlaneObj->setName(name); + newListeningPlaneObj->SetTransformMatrix(offset); + + return newListeningPlaneObj; +} + +SceneDataListeningPlaneObjPtr SceneDataExchange::ReadListeningPlane(const SceneDataGUID& guid,const IXMLFileNodePtr& node, SceneDataGroupObjPtr addToContainer) +{ + if ( CheckAbort() ) return nullptr; + + SceneDataListeningPlaneObjPtr newListeningPlaneObj = new SceneDataListeningPlaneObj(guid); + addToContainer->AddObject(newListeningPlaneObj); + + newListeningPlaneObj->ReadFromNode(node, this); + + return newListeningPlaneObj; +} + SceneDataSymbolObjPtr SceneDataExchange::CreateSymbol(const SceneDataGUID& guid, const VWTransformMatrix& offset, SceneDataSymDefObjPtr symDef) { SceneDataSymbolObjPtr newSymbolObj = new SceneDataSymbolObj(guid); @@ -4067,14 +4133,15 @@ void SceneDataExchange::ReadChildObjs(const IXMLFileNodePtr& node, SceneDataGrou { SceneDataObjWithMatrixPtr obj = nullptr; - if ( nodeName == XML_Val_FixtureNodeName) { obj = ReadFixture( SceneDataGUID(groupUuid),objNode, addToContainer); } - else if ( nodeName == XML_Val_SceneObjectNodeName) { obj = ReadSceneryObject( SceneDataGUID(groupUuid),objNode, addToContainer); } - else if ( nodeName == XML_Val_FocusPointObjectNodeName) { obj = ReadFocusPoint( SceneDataGUID(groupUuid),objNode, addToContainer); } - else if ( nodeName == XML_Val_TrussObjectNodeName) { obj = ReadTruss( SceneDataGUID(groupUuid),objNode, addToContainer); } - else if ( nodeName == XML_Val_VideoScreenObjectNodeName) { obj = ReadVideoScreen( SceneDataGUID(groupUuid),objNode, addToContainer); } - else if ( nodeName == XML_Val_SupportObjectNodeName) { obj = ReadSupport( SceneDataGUID(groupUuid),objNode, addToContainer); } - else if ( nodeName == XML_Val_ProjectorObjectNodeName) { obj = ReadProjector( SceneDataGUID(groupUuid),objNode, addToContainer); } - else if ( nodeName == XML_Val_GroupNodeName) { obj = ProcessGroup(objNode, addToContainer); } + if ( nodeName == XML_Val_FixtureNodeName) { obj = ReadFixture( SceneDataGUID(groupUuid), objNode, addToContainer); } + else if ( nodeName == XML_Val_SceneObjectNodeName) { obj = ReadSceneryObject( SceneDataGUID(groupUuid), objNode, addToContainer); } + else if ( nodeName == XML_Val_FocusPointObjectNodeName) { obj = ReadFocusPoint( SceneDataGUID(groupUuid), objNode, addToContainer); } + else if ( nodeName == XML_Val_TrussObjectNodeName) { obj = ReadTruss( SceneDataGUID(groupUuid), objNode, addToContainer); } + else if ( nodeName == XML_Val_VideoScreenObjectNodeName) { obj = ReadVideoScreen( SceneDataGUID(groupUuid), objNode, addToContainer); } + else if ( nodeName == XML_Val_SupportObjectNodeName) { obj = ReadSupport( SceneDataGUID(groupUuid), objNode, addToContainer); } + else if ( nodeName == XML_Val_ProjectorObjectNodeName) { obj = ReadProjector( SceneDataGUID(groupUuid), objNode, addToContainer); } + else if ( nodeName == XML_Val_ListeningPlaneObjectNodeName ) { obj = ReadListeningPlane( SceneDataGUID(groupUuid), objNode, addToContainer); } + else if ( nodeName == XML_Val_GroupNodeName) { obj = ProcessGroup(objNode, addToContainer); } auto grp = dynamic_cast(obj); if (grp) diff --git a/src/SceneDataExchange.h b/src/SceneDataExchange.h index afbacc24..4993215e 100644 --- a/src/SceneDataExchange.h +++ b/src/SceneDataExchange.h @@ -47,6 +47,7 @@ namespace SceneData eVideoScreen = 7, eProjector = 8, eSupport = 9, + eListeningPlane = 10, eSymDef = -1, eProviderObj = -2, ePosition = -3, @@ -937,6 +938,30 @@ namespace SceneData }; typedef SceneDataProjectorObj* SceneDataProjectorObjPtr; + // ---------------------------------------------------------------------------------------------------------------------------------- + // SceneDataListeningPlaneObj + class SceneDataListeningPlaneObj : public SceneDataGroupObj + { + + public: + SceneDataListeningPlaneObj(const SceneDataGUID& guid); + virtual ~SceneDataListeningPlaneObj(); + + virtual const TXString& GetAudioDescriptionFile() const; + virtual void SetAudioDescriptionFile(const TXString& value); + + private: + TXString fAudioDescriptionFile; + + virtual TXString GetNodeName(); + virtual ESceneDataObjectType GetObjectType(); + + virtual void OnPrintToFile(IXMLFileNodePtr pNode, SceneDataExchange* exchange); + virtual void OnReadFromNode(const IXMLFileNodePtr& pNode, SceneDataExchange* exchange); + + }; + typedef SceneDataListeningPlaneObj* SceneDataListeningPlaneObjPtr; + // ---------------------------------------------------------------------------------------------------------------------------------- // SceneDataSymbolObj class SceneDataSymbolObj : public SceneDataGeoInstanceObj @@ -1057,17 +1082,17 @@ namespace SceneData SceneDataMappingDefinitionObjPtr CreateMappingDefinitionObject(const SceneDataGUID& guid, const TXString& name); - SceneDataLayerObjPtr CreateLayerObject( const SceneDataGUID& guid, const TXString& name); - SceneDataGroupObjPtr CreateGroupObject( const SceneDataGUID& guid, const VWTransformMatrix& offset, SceneDataGroupObjPtr addToContainer); - SceneDataGroupObjPtr CreateGroupObject( const SceneDataGUID& guid, const VWTransformMatrix& offset, const TXString& name, SceneDataGroupObjPtr addToContainer); - SceneDataFixtureObjPtr CreateFixture( const SceneDataGUID& guid, const VWTransformMatrix& offset, const TXString& name, SceneDataGroupObjPtr addToContainer); - SceneDataSceneryObjPtr CreateSceneryObject(const SceneDataGUID& guid, const VWTransformMatrix& offset, const TXString& name, SceneDataGroupObjPtr addToContainer); - SceneDataFocusPointObjPtr CreateFocusPoint( const SceneDataGUID& guid, const VWTransformMatrix& offset, const TXString& name, SceneDataGroupObjPtr addToContainer); - SceneDataTrussObjPtr CreateTruss( const SceneDataGUID& guid, const VWTransformMatrix& offset, const TXString& name, SceneDataGroupObjPtr addToContainer); - SceneDataSupportObjPtr CreateSupport( const SceneDataGUID& guid, const VWTransformMatrix& offset, const TXString& name, SceneDataGroupObjPtr addToContainer); - SceneDataVideoScreenObjPtr CreateVideoScreen( const SceneDataGUID& guid, const VWTransformMatrix& offset, const TXString& name, SceneDataGroupObjPtr addToContainer); - SceneDataProjectorObjPtr CreateProjector( const SceneDataGUID& guid, const VWTransformMatrix& offset, const TXString& name, SceneDataGroupObjPtr addToContainer); - + SceneDataLayerObjPtr CreateLayerObject( const SceneDataGUID& guid, const TXString& name); + SceneDataGroupObjPtr CreateGroupObject( const SceneDataGUID& guid, const VWTransformMatrix& offset, SceneDataGroupObjPtr addToContainer); + SceneDataGroupObjPtr CreateGroupObject( const SceneDataGUID& guid, const VWTransformMatrix& offset, const TXString& name, SceneDataGroupObjPtr addToContainer); + SceneDataFixtureObjPtr CreateFixture( const SceneDataGUID& guid, const VWTransformMatrix& offset, const TXString& name, SceneDataGroupObjPtr addToContainer); + SceneDataSceneryObjPtr CreateSceneryObject( const SceneDataGUID& guid, const VWTransformMatrix& offset, const TXString& name, SceneDataGroupObjPtr addToContainer); + SceneDataFocusPointObjPtr CreateFocusPoint( const SceneDataGUID& guid, const VWTransformMatrix& offset, const TXString& name, SceneDataGroupObjPtr addToContainer); + SceneDataTrussObjPtr CreateTruss( const SceneDataGUID& guid, const VWTransformMatrix& offset, const TXString& name, SceneDataGroupObjPtr addToContainer); + SceneDataSupportObjPtr CreateSupport( const SceneDataGUID& guid, const VWTransformMatrix& offset, const TXString& name, SceneDataGroupObjPtr addToContainer); + SceneDataVideoScreenObjPtr CreateVideoScreen( const SceneDataGUID& guid, const VWTransformMatrix& offset, const TXString& name, SceneDataGroupObjPtr addToContainer); + SceneDataProjectorObjPtr CreateProjector( const SceneDataGUID& guid, const VWTransformMatrix& offset, const TXString& name, SceneDataGroupObjPtr addToContainer); + SceneDataListeningPlaneObjPtr CreateListeningPlane( const SceneDataGUID& guid, const VWTransformMatrix& offset, const TXString& name, SceneDataGroupObjPtr addToContainer); // --------------------------------------------------------------------------------------------------------------------- // Read calls @@ -1079,15 +1104,16 @@ namespace SceneData SceneDataMappingDefinitionObjPtr ReadMappingDefinitionObject(const IXMLFileNodePtr& node); - SceneDataLayerObjPtr ReadLayerObject( const SceneDataGUID& guid,const IXMLFileNodePtr& node); - SceneDataGroupObjPtr ReadGroupObject( const SceneDataGUID& guid,const IXMLFileNodePtr& node, SceneDataGroupObjPtr addToContainer); - SceneDataFixtureObjPtr ReadFixture( const SceneDataGUID& guid,const IXMLFileNodePtr& node, SceneDataGroupObjPtr addToContainer); - SceneDataSceneryObjPtr ReadSceneryObject( const SceneDataGUID& guid,const IXMLFileNodePtr& node, SceneDataGroupObjPtr addToContainer); - SceneDataFocusPointObjPtr ReadFocusPoint( const SceneDataGUID& guid,const IXMLFileNodePtr& node, SceneDataGroupObjPtr addToContainer); - SceneDataTrussObjPtr ReadTruss( const SceneDataGUID& guid,const IXMLFileNodePtr& node, SceneDataGroupObjPtr addToContainer); - SceneDataSupportObjPtr ReadSupport( const SceneDataGUID& guid,const IXMLFileNodePtr& node, SceneDataGroupObjPtr addToContainer); - SceneDataVideoScreenObjPtr ReadVideoScreen( const SceneDataGUID& guid,const IXMLFileNodePtr& node, SceneDataGroupObjPtr addToContainer); - SceneDataProjectorObjPtr ReadProjector( const SceneDataGUID& guid,const IXMLFileNodePtr& node, SceneDataGroupObjPtr addToContainer); + SceneDataLayerObjPtr ReadLayerObject( const SceneDataGUID& guid, const IXMLFileNodePtr& node); + SceneDataGroupObjPtr ReadGroupObject( const SceneDataGUID& guid, const IXMLFileNodePtr& node, SceneDataGroupObjPtr addToContainer); + SceneDataFixtureObjPtr ReadFixture( const SceneDataGUID& guid, const IXMLFileNodePtr& node, SceneDataGroupObjPtr addToContainer); + SceneDataSceneryObjPtr ReadSceneryObject( const SceneDataGUID& guid, const IXMLFileNodePtr& node, SceneDataGroupObjPtr addToContainer); + SceneDataFocusPointObjPtr ReadFocusPoint( const SceneDataGUID& guid, const IXMLFileNodePtr& node, SceneDataGroupObjPtr addToContainer); + SceneDataTrussObjPtr ReadTruss( const SceneDataGUID& guid, const IXMLFileNodePtr& node, SceneDataGroupObjPtr addToContainer); + SceneDataSupportObjPtr ReadSupport( const SceneDataGUID& guid, const IXMLFileNodePtr& node, SceneDataGroupObjPtr addToContainer); + SceneDataVideoScreenObjPtr ReadVideoScreen( const SceneDataGUID& guid, const IXMLFileNodePtr& node, SceneDataGroupObjPtr addToContainer); + SceneDataProjectorObjPtr ReadProjector( const SceneDataGUID& guid, const IXMLFileNodePtr& node, SceneDataGroupObjPtr addToContainer); + SceneDataListeningPlaneObjPtr ReadListeningPlane( const SceneDataGUID& guid, const IXMLFileNodePtr& node, SceneDataGroupObjPtr addToContainer ); // --------------------------------------------------------------------------------------------------------------------- // Write calls