/// <summary> /// Reads direct information from track /// </summary> /// <param name="reader"></param> /// <param name="flags"></param> /// <returns></returns> private object ReadDirect(SSBHParser reader, uint flags) { if (CheckFlag(flags, 0x00FF, ANIM_TRACKFLAGS.Transform)) { var Transform = new AnimTrackTransform() { SX = reader.ReadSingle(), SY = reader.ReadSingle(), SZ = reader.ReadSingle(), RX = reader.ReadSingle(), RY = reader.ReadSingle(), RZ = reader.ReadSingle(), RW = reader.ReadSingle(), X = reader.ReadSingle(), Y = reader.ReadSingle(), Z = reader.ReadSingle(), CompensateScale = reader.ReadInt32() }; return(Transform); } if (CheckFlag(flags, 0x00FF, ANIM_TRACKFLAGS.Texture)) { return(new AnimTrackTexture() { UnkFloat1 = reader.ReadSingle(), UnkFloat2 = reader.ReadSingle(), UnkFloat3 = reader.ReadSingle(), UnkFloat4 = reader.ReadSingle(), Unknown = reader.ReadInt32() }); } if (CheckFlag(flags, 0x00FF, ANIM_TRACKFLAGS.Float)) { return(reader.ReadSingle()); } if (CheckFlag(flags, 0x00FF, ANIM_TRACKFLAGS.PatternIndex)) { return(reader.ReadInt32()); } if (CheckFlag(flags, 0x00FF, ANIM_TRACKFLAGS.Boolean)) { return(reader.ReadByte() == 1); } if (CheckFlag(flags, 0x00FF, ANIM_TRACKFLAGS.Vector4)) { return(new AnimTrackCustomVector4(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle())); } return(null); }