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; } }
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(); }
public AsePaletteEntry(AseReader reader) { Flags = reader.ReadWORD(); Red = reader.ReadBYTE(); Green = reader.ReadBYTE(); Blue = reader.ReadBYTE(); Alpha = reader.ReadBYTE(); if (HasName) { Name = reader.ReadSTRING(); } }
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; } }