Beispiel #1
0
        protected void WriteDynamicColors()
        {
            List <DynamicColor> colors = FindAllObjectsOfType <DynamicColor>();

            DynaBuffer.WriteUInt32(colors.Count);
            foreach (DynamicColor color in colors)
            {
                DynaBuffer.WriteULongPascalString(color.Name);

                for (int c = 0; c < 4; c++)
                {
                    DynamicColor.ChannelParams chan = color.Channels[c];


                    DynaBuffer.WriteFloat(chan.MinValue);
                    DynaBuffer.WriteFloat(chan.MinValue);

                    DynaBuffer.WriteUInt32(chan.Sinusoids.Count);

                    foreach (var p in chan.Sinusoids)
                    {
                        DynaBuffer.WriteFloat(p.Period);
                        DynaBuffer.WriteFloat(p.Offset);
                        DynaBuffer.WriteFloat(p.Weight);
                    }

                    DynaBuffer.WriteUInt32(chan.ClampUps.Count);
                    foreach (var p in chan.ClampUps)
                    {
                        DynaBuffer.WriteFloat(p.Period);
                        DynaBuffer.WriteFloat(p.Offset);
                        DynaBuffer.WriteFloat(p.Width);
                    }

                    DynaBuffer.WriteUInt32(chan.ClampDowns.Count);
                    foreach (var p in chan.ClampDowns)
                    {
                        DynaBuffer.WriteFloat(p.Period);
                        DynaBuffer.WriteFloat(p.Offset);
                        DynaBuffer.WriteFloat(p.Width);
                    }

                    DynaBuffer.WriteUInt32(chan.Sequence.Values.Count);
                    if (chan.Sequence.Values.Count > 0)
                    {
                        DynaBuffer.WriteFloat(chan.Sequence.Period);
                        DynaBuffer.WriteFloat(chan.Sequence.Offset);

                        foreach (var p in chan.Sequence.Values)
                        {
                            DynaBuffer.WriteByte(p);
                        }
                    }
                }
            }
        }
Beispiel #2
0
        protected List <BasicObject> UnpackDynamicColors()
        {
            List <BasicObject> items = new List <BasicObject>();

            UInt32 count = ReadUInt32();

            for (int i = 0; i < count; i++)
            {
                DynamicColor color = new DynamicColor();
                items.Add(color);
                color.Name = ReadULongPascalString();
                for (int c = 0; c < 4; c++)
                {
                    DynamicColor.ChannelParams chan = color.Channels[c];

                    chan.MinValue = ReadFloat();
                    chan.MinValue = ReadFloat();

                    UInt32 len = ReadUInt32();
                    for (int s = 0; s < len; s++)
                    {
                        SinusoidParams p = new SinusoidParams();
                        p.Period = ReadFloat();
                        p.Offset = ReadFloat();
                        p.Weight = ReadFloat();
                        chan.Sinusoids.Add(p);
                    }

                    len = ReadUInt32();
                    for (int s = 0; s < len; s++)
                    {
                        ClampParams p = new ClampParams();
                        p.Period = ReadFloat();
                        p.Offset = ReadFloat();
                        p.Width  = ReadFloat();
                        chan.ClampUps.Add(p);
                    }

                    len = ReadUInt32();
                    for (int s = 0; s < len; s++)
                    {
                        ClampParams p = new ClampParams();
                        p.Period = ReadFloat();
                        p.Offset = ReadFloat();
                        p.Width  = ReadFloat();
                        chan.ClampDowns.Add(p);
                    }

                    len = ReadUInt32();
                    if (len > 0)
                    {
                        chan.Sequence.Period = ReadFloat();
                        chan.Sequence.Offset = ReadFloat();

                        for (int s = 0; s < len; s++)
                        {
                            chan.Sequence.Values.Add(ReadByte());
                        }
                    }
                }
            }

            return(items);
        }