Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -77,3 +77,6 @@ build_v8a/

node_modules
output

# Copilot instruction files
copilot-instructions.md
45 changes: 25 additions & 20 deletions src/GDTFManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8702,33 +8702,38 @@ void GdtfFixture::ResolveDmxLogicalChanRefs(GdtfDmxChannelPtr dmxChnl)
geometryName = geoRef->GetName();
}


bool alreadyExists = false;
GdtfDmxModePtr mode = dmxChnl->GetParentMode();
// Allow NoFeature attributes to be linked multiple times to the same geometry
bool isNoFeatureAttribute = (attrPtr == fNoFeature) || (attributeName.EqualNoCase("NoFeature"));
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we have also Dummy attribute :)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And Dummy attributes can be linked multiple times to the same geometry?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will make a separate change, branch issue because for this we need to make changes in the FB as well, since there is no logic there for Dummy attributes to be connected multiple times to the same geometry.


for(GdtfDmxChannelPtr channel : mode->GetChannelArray())
bool alreadyExists = false;
if (!isNoFeatureAttribute)
{
if(CheckAbort()) { return; }
GdtfGeometryPtr currentGeometry = channel->GetGeomRef();
if(currentGeometry == nullptr) { break; }
TXString currentGeometryName = currentGeometry->GetName();
for(GdtfDmxLogicalChannelPtr logicalChannel : channel->GetLogicalChannelArray())
GdtfDmxModePtr mode = dmxChnl->GetParentMode();

for(GdtfDmxChannelPtr channel : mode->GetChannelArray())
{
TXString currentAttributeName = "";
GdtfAttributePtr currentAttribute = logicalChannel->GetAttribute();
if(currentAttribute != nullptr)
if(CheckAbort()) { return; }
GdtfGeometryPtr currentGeometry = channel->GetGeomRef();
if(currentGeometry == nullptr) { break; }
TXString currentGeometryName = currentGeometry->GetName();
for(GdtfDmxLogicalChannelPtr logicalChannel : channel->GetLogicalChannelArray())
{
currentAttributeName = currentAttribute->GetName();
}
TXString currentAttributeName = "";
GdtfAttributePtr currentAttribute = logicalChannel->GetAttribute();
if(currentAttribute != nullptr)
{
currentAttributeName = currentAttribute->GetName();
}

if(geometryName.EqualNoCase(currentGeometryName) && attributeName.EqualNoCase(currentAttributeName))
{
alreadyExists = true;
break;
if(geometryName.EqualNoCase(currentGeometryName) && attributeName.EqualNoCase(currentAttributeName))
{
alreadyExists = true;
break;
}
}
}

if(alreadyExists) { break; }
if(alreadyExists) { break; }
}
}

if(alreadyExists)
Expand Down