public AseFrameTagEntry(AseReader reader)
        {
            FromFrame = reader.ReadWORD();
            ToFrame   = reader.ReadWORD();
            LoopAnimationDirection = (LoopAnimationDirection)reader.ReadBYTE();

            // Ignore next 8 bytes
            reader.ReadBYTEs(8);

            ColorRGB = reader.ReadBYTEs(3);

            // Ignore a byte
            reader.ReadBYTE();

            Name = reader.ReadSTRING();

            // "OneShot" loop hack
            if (Name.StartsWith("[") && Name.EndsWith("]"))
            {
                Name      = Name.Remove(0, 1);
                Name      = Name.Remove(Name.Length - 1, 1);
                IsOneShot = true;
            }
            else
            {
                IsOneShot = false;
            }
        }
Example #2
0
        public AseLayerChunk(AseFrame frame, AseReader reader)
            : base(frame)
        {
            Flags      = (LayerChunkFlags)reader.ReadWORD();
            Type       = (LayerType)reader.ReadWORD();
            ChildLevel = reader.ReadWORD();

            // Ignore next two words
            reader.ReadWORD();
            reader.ReadWORD();

            BlendMode = (BlendMode)reader.ReadWORD();
            Opacity   = reader.ReadBYTE();

            if ((frame.AseFile.Header.Flags & HeaderFlags.HasLayerOpacity) == 0)
            {
                // Assume full opacity
                Opacity = 255;
            }

            // Ignore next three bytes
            reader.ReadBYTEs(3);

            Name = reader.ReadSTRING();
        }
Example #3
0
        public AsePaletteEntry(AseReader reader)
        {
            Flags = reader.ReadWORD();
            Red   = reader.ReadBYTE();
            Green = reader.ReadBYTE();
            Blue  = reader.ReadBYTE();
            Alpha = reader.ReadBYTE();

            if (HasName)
            {
                Name = reader.ReadSTRING();
            }
        }
Example #4
0
        public AseSliceChunk(AseFrame frame, AseReader reader)
            : base(frame)
        {
            NumSliceKeys = reader.ReadDWORD();
            Flags        = (SliceFlags)reader.ReadDWORD();

            // Ignore next dword
            reader.ReadDWORD();

            Name = reader.ReadSTRING();

            Entries = Enumerable.Repeat <AseSliceEntry>(null, (int)NumSliceKeys).ToList();
            for (int i = 0; i < (int)NumSliceKeys; i++)
            {
                Entries[i] = new AseSliceEntry(reader, Flags);
            }
        }
        public AseUserDataChunk(AseFrame frame, AseReader reader)
            : base(frame)
        {
            Flags = (UserDataFlags)reader.ReadDWORD();

            if ((Flags & UserDataFlags.HasText) != 0)
            {
                Text = reader.ReadSTRING();
            }

            if ((Flags & UserDataFlags.HasColor) != 0)
            {
                ColorRGBA = reader.ReadBYTEs(4);
            }

            // Place the user data in the last chunk
            if (reader.LastChunk != null)
            {
                reader.LastChunk.UserText  = Text;
                reader.LastChunk.UserColor = ColorRGBA;
            }
        }