@@ -5406,15 +5406,15 @@ void GdtfDmxChannel::OnReadFromNode(const IXMLFileNodePtr& pNode)
54065406 TXString defVal;
54075407 if (pNode->GetNodeAttributeValue (XML_GDTF_DMXChannelFuntionDefault, defVal) == kVCOMError_NoError )
54085408 {
5409- GdtfConverter::ConvertDMXValue (defVal, pNode, this ->GetChannelBitResolution (), fDefaultValue_old );
5409+ GdtfConverter::ConvertDMXValue (defVal, pNode, this ->GetChannelBitResolution (), fDefaultValue_old , this -> IsVirtual () );
54105410 }
54115411 // ------------------------------------------------------------------------------------
54125412
54135413 //
54145414 TXString highlight;
54155415 if (VCOM_SUCCEEDED (pNode->GetNodeAttributeValue (XML_GDTF_DMXChannelHighlight, highlight) ))
54165416 {
5417- GdtfConverter::ConvertDMXValue (highlight, pNode, this ->GetChannelBitResolution (), fHeighlight , fHeighlightNone );
5417+ GdtfConverter::ConvertDMXValue (highlight, pNode, this ->GetChannelBitResolution (), fHeighlight , fHeighlightNone , this -> IsVirtual () );
54185418 }
54195419
54205420 pNode->GetNodeAttributeValue (XML_GDTF_DMXChannelGeometry, fUnresolvedGeomRef );
@@ -6114,11 +6114,14 @@ void GdtfDmxChannelFunction::OnReadFromNode(const IXMLFileNodePtr& pNode)
61146114 // ------------------------------------------------------------------------------------
61156115 // Print node attributes
61166116 EGdtfChannelBitResolution channelReso = fParentLogicalChannel ->GetParentDMXChannel ()->GetChannelBitResolution ();
6117+ bool isVirtual = fParentLogicalChannel ->GetParentDMXChannel ()->IsVirtual ();
61176118
61186119 pNode->GetNodeAttributeValue (XML_GDTF_DMXChannelFuntionName, fName );
61196120 pNode->GetNodeAttributeValue (XML_GDTF_DMXChannelFuntionOriginalAttribute, fOrignalAttribute );
6120- TXString defaultValue; pNode->GetNodeAttributeValue (XML_GDTF_DMXChannelFuntionDefault, defaultValue); GdtfConverter::ConvertDMXValue (defaultValue, pNode, channelReso,fDefaultValue );
6121- TXString dmxFrom; pNode->GetNodeAttributeValue (XML_GDTF_DMXChannelFuntionDMXFrom, dmxFrom); GdtfConverter::ConvertDMXValue (dmxFrom, pNode, channelReso,fAdressStart );
6121+ bool noneValue_defaultValue = false ;
6122+ TXString defaultValue; pNode->GetNodeAttributeValue (XML_GDTF_DMXChannelFuntionDefault, defaultValue); GdtfConverter::ConvertDMXValue (defaultValue, pNode, channelReso,fDefaultValue , noneValue_defaultValue, isVirtual);
6123+ bool noneValue_dmxFrom = false ;
6124+ TXString dmxFrom; pNode->GetNodeAttributeValue (XML_GDTF_DMXChannelFuntionDMXFrom, dmxFrom); GdtfConverter::ConvertDMXValue (dmxFrom, pNode, channelReso,fAdressStart , noneValue_dmxFrom, isVirtual);
61226125 TXString physFrom; pNode->GetNodeAttributeValue (XML_GDTF_DMXChannelFuntionPhysicalFrom, physFrom); GdtfConverter::ConvertDouble (physFrom, pNode, fPhysicalStart );
61236126 TXString physTo; pNode->GetNodeAttributeValue (XML_GDTF_DMXChannelFuntionPhysicalTo, physTo); GdtfConverter::ConvertDouble (physTo, pNode, fPhysicalEnd );
61246127 TXString realFade; pNode->GetNodeAttributeValue (XML_GDTF_DMXChannelFuntionRealFade, realFade); GdtfConverter::ConvertDouble (realFade, pNode, fRealFade );
@@ -6415,13 +6418,13 @@ DmxValue GdtfDmxChannelFunction::GetModeMasterDmxEnd() const
64156418 return fDmxModeEnd ;
64166419}
64176420
6418- void GdtfDmxChannelFunction::ResolveModeMasterDmx (EGdtfChannelBitResolution resolution)
6421+ void GdtfDmxChannelFunction::ResolveModeMasterDmx (EGdtfChannelBitResolution resolution, bool isVirtual )
64196422{
64206423 IXMLFileNodePtr node;
64216424 this ->GetNode (node);
64226425
6423- GdtfConverter::ConvertDMXValue (fUnresolvedDmxModeStart , node, resolution, fDmxModeStart );
6424- GdtfConverter::ConvertDMXValue (fUnresolvedDmxModeEnd ,node, resolution, fDmxModeEnd );
6426+ GdtfConverter::ConvertDMXValue (fUnresolvedDmxModeStart , node, resolution, fDmxModeStart , isVirtual );
6427+ GdtfConverter::ConvertDMXValue (fUnresolvedDmxModeEnd ,node, resolution, fDmxModeEnd , isVirtual );
64256428}
64266429
64276430void GdtfDmxChannelFunction::SetModeMaster_Channel (GdtfDmxChannel* channel)
@@ -6660,8 +6663,10 @@ void GdtfDmxChannelSet::OnReadFromNode(const IXMLFileNodePtr& pNode)
66606663 pNode->GetNodeAttributeValue (XML_GDTF_DMXChannelSetName, fUniqueName );
66616664
66626665 EGdtfChannelBitResolution channelReso = fParentChnlFunction ->GetParentDMXChannel ()->GetChannelBitResolution ();
6666+ bool isVirtual = fParentChnlFunction ->GetParentDMXChannel ()->IsVirtual ();
6667+ bool noneValue = false ;
66636668
6664- TXString dmxfrom; pNode->GetNodeAttributeValue (XML_GDTF_DMXChannelSetDMXFrom, dmxfrom); fValid = GdtfConverter::ConvertDMXValue (dmxfrom, pNode, channelReso, fDmxStart );
6669+ TXString dmxfrom; pNode->GetNodeAttributeValue (XML_GDTF_DMXChannelSetDMXFrom, dmxfrom); fValid = GdtfConverter::ConvertDMXValue (dmxfrom, pNode, channelReso, fDmxStart , noneValue, isVirtual );
66656670 TXString wheelId; pNode->GetNodeAttributeValue (XML_GDTF_DMXChannelSetWheelSlotIndexRef, wheelId); GdtfConverter::ConvertInteger (wheelId, pNode, fWheelSlotIdx );
66666671
66676672
@@ -8383,7 +8388,7 @@ void GdtfFixture::ResolveMacroRefs(GdtfDmxModePtr dmxMode)
83838388 {
83848389
83858390 DmxValue dmxVal = 0 ;
8386- GdtfConverter::ConvertDMXValue (value->GetUnresolvedDMXValue (), node, value->GetDMXChannel ()->GetChannelBitResolution (), dmxVal);
8391+ GdtfConverter::ConvertDMXValue (value->GetUnresolvedDMXValue (), node, value->GetDMXChannel ()->GetChannelBitResolution (), dmxVal, false );
83878392 value->SetValue (dmxVal);
83888393 }
83898394 else
@@ -8420,7 +8425,7 @@ void GdtfFixture::ResolveMacroRefs(GdtfDmxModePtr dmxMode)
84208425 value->GetNode (node);
84218426
84228427 DmxValue dmxVal = 0 ;
8423- GdtfConverter::ConvertDMXValue (value->GetUnresolvedDMXValue (), node, channelFunction->GetParentDMXChannel ()->GetChannelBitResolution (), dmxVal);
8428+ GdtfConverter::ConvertDMXValue (value->GetUnresolvedDMXValue (), node, channelFunction->GetParentDMXChannel ()->GetChannelBitResolution (), dmxVal, false );
84248429 value->SetDmxValue (dmxVal);
84258430 }
84268431 }
@@ -8500,13 +8505,15 @@ void GdtfFixture::ResolveDMXModeMasters()
85008505 {
85018506 bool resolved = false ;
85028507 EGdtfChannelBitResolution resolution = EGdtfChannelBitResolution::eGdtfChannelBitResolution_8;
8508+ bool isVirtual = false ;
85038509
85048510 GdtfDmxChannelPtr channelPtr = getDmxChannelByRef (unresolvedModeMaster, mode);
85058511 if (! resolved && channelPtr)
85068512 {
85078513 function->SetModeMaster_Channel (channelPtr);
85088514 resolved = true ;
8509- resolution = channelPtr->GetChannelBitResolution ();
8515+ resolution = channelPtr->GetChannelBitResolution ();
8516+ isVirtual = channelPtr->IsVirtual ();
85108517 }
85118518
85128519 GdtfDmxChannelFunctionPtr functionPtr = getDmxFunctionByRef (unresolvedModeMaster, mode);
@@ -8515,10 +8522,11 @@ void GdtfFixture::ResolveDMXModeMasters()
85158522 function->SetModeMaster_Function (functionPtr);
85168523 resolved = true ;
85178524 resolution = functionPtr->GetParentDMXChannel ()->GetChannelBitResolution ();
8525+ isVirtual = functionPtr->GetParentDMXChannel ()->IsVirtual ();
85188526 }
85198527
85208528 ASSERTN (kEveryone , resolved);
8521- if (resolved) { function->ResolveModeMasterDmx (resolution); }
8529+ if (resolved) { function->ResolveModeMasterDmx (resolution, isVirtual ); }
85228530 else
85238531 {
85248532 IXMLFileNodePtr node;
0 commit comments