Exemplo n.º 1
0
    /// <summary>
    /// 获取灯具 DMX 模式
    /// </summary>
    private static void GetDmxModes(GDTF_Data data)
    {
        if (dmxModes == null)
        {
            Debug.Log("Not Found DmxModes Node!");
            return;
        }

        if (dmxModes.HasChildNodes)
        {
            // 获取所有 DMX 模式
            foreach (XmlNode dmxModeNode in dmxModes)
            {
                // 如果当前模式下包含子节点
                if (dmxModeNode.HasChildNodes)
                {
                    XmlNode dmxChannelsNode = FindChildNode(dmxModeNode, "DMXChannels");
                    // 查找 DMXChannels 节点
                    if (dmxChannelsNode != null)
                    {
                        // 创建 DMXModesData 对象
                        GDTF_DmxModesData modeData = new GDTF_DmxModesData()
                        {
                            dmxModeName     = GetNodeAttribute(dmxModeNode, "Name"),
                            dmxModeGeometry = GetNodeAttribute(dmxModeNode, "Geometry")
                        };

                        // 为该模式添加通道信息
                        GetDmxModeChannels(dmxChannelsNode, modeData, data);
                        data.dmxModes.Add(modeData);
                    }
                }
            }
        }
    }
Exemplo n.º 2
0
    /// <summary>
    ///  获取当前模式下 DMX 通道信息
    /// </summary>
    /// <param name="dmxChannelsNode">DMX Channels 节点</param>
    /// <param name="modeData">DMX Mode 对象</param>
    /// <param name="data">GDTF Data 对象</param>
    private static void GetDmxModeChannels(XmlNode dmxChannelsNode, GDTF_DmxModesData modeData, GDTF_Data data)
    {
        // 如果 DMXChannels 节点下存在 DMXChannel
        if (dmxChannelsNode.HasChildNodes)
        {
            foreach (XmlNode dmxChannel in dmxChannelsNode)
            {
                // 如果 DMXChannel 下存在子节点
                if (dmxChannel.HasChildNodes)
                {
                    // 如果当前 DMXChannel 下存在 LogicalChannel 节点
                    XmlNode logicalChannelNode = FindChildNode(dmxChannel, "LogicalChannel");
                    if (logicalChannelNode != null)
                    {
                        // 创建 DMXChannelData 对象
                        GDTF_DmxChannel channel = new GDTF_DmxChannel()
                        {
                            dmxBreak = Convert.ToInt32(GetNodeAttribute(dmxChannel, "DMXBreak")),
                            dmxBit   = GetDmxValueResolution(GetNodeAttribute(dmxChannel, "Default")),
                            deafault = GetDmxValue(GetNodeAttribute(dmxChannel, "Default")),
                            geometry = GetNodeAttribute(dmxChannel, "Geometry"),
                            offset   = XmlSplitToIntArray(GetNodeAttribute(dmxChannel, "Offset"))
                        };

                        // 为该 DMX Mode 添加 DMXChannel
                        modeData.channelsData.Add(channel);
                        GetDmxLogicalChannel(dmxChannel, channel, data);
                    }
                }
            }
        }
    }
    /// <summary>
    /// 根据灯具名称开始加载配置信息
    /// </summary>
    public void LoadConfig()
    {
        // 如果 fixtureName 为空 或者 Dictionary 中没有该灯具信息 则跳出函数
        if (gdtfFileName == null || gdtfFileName == string.Empty)
        {
            return;
        }
        if (!GDTF_ResourcesLoader.GetFixtures().ContainsKey(gdtfFileName))
        {
            return;
        }

        // 获取该灯具的所有资源文件信息
        fileInfo = GDTF_ResourcesLoader.GetFileInfo(gdtfFileName);

        // 添加灯具缩略图
        fixtureThumbanil = Resources.Load <Texture2D>(fileInfo.thumbnail.filePath);
        // 添加灯具灯库信息
        descriptionData = GDTF_DescriptionReader.GetGdtfData(fileInfo.description.filePath);

        // 添加灯具基本信息
        model         = descriptionData.fixtureType.ShortName;
        gdtfDataVer   = descriptionData.fixtureType.GDTFDataVersion;
        fixtureType   = descriptionData.fixtureType.FixtureType;
        fixtureTypeID = descriptionData.fixtureType.FixtureTypeID;
        manufacturer  = descriptionData.fixtureType.Manufacturer;

        descriptionData.dmxModes.ForEach(mode => { if (mode.dmxModeName == dmxModeName)
                                                   {
                                                       dmxMode = mode;
                                                   }
                                         });

        if (goboTextures.Count > 0)
        {
            goboTextures.Clear();
        }

        for (int i = 0; i < fileInfo.wheels.Length; i++)
        {
            goboTextures.Add(fileInfo.wheels[i].fileName, Resources.Load <Texture2D>(fileInfo.wheels[i].filePath));
        }
    }