public M2Track(BinaryReader br, uint version, bool simple = false) { Type = br.ReadEnum <InterpolationType>(); GlobalSeqId = br.ReadInt16(); if (version < 264) { InterpolationRanges = br.ReadM2Array <CiRange>(version); LegacyTimestamps = br.ReadM2Array <uint>(version); } else { Timestamps = br.ReadM2Array <M2Array <uint> >(version); } if (simple) { return; } if (version < 264) { LegacyValues = br.ReadM2Array <T>(version); } else { Values = br.ReadM2Array <M2Array <T> >(version); } }
public M2SkinProfile(BinaryReader br, uint build) { VertexIndicies = br.ReadM2Array <ushort>(build); Triangles = br.ReadM2Array <ushort>(build); VertexProperties = br.ReadM2Array <C4bVector>(build); Sections = br.ReadM2Array <M2SkinSection>(build); RenderBatches = br.ReadM2Array <M2Batch>(build); BoneCountMax = br.ReadUInt32(); }
public M2(BinaryReader br) { Magic = br.ReadString(4); Version = br.ReadUInt32(); InternalName = br.ReadM2Array <byte>(Version)?.AsString(); GlobalFlags = br.ReadEnum <GlobalFlags>(); GlobalSequenceTimestamps = br.ReadM2Array <uint>(Version); Sequences = br.ReadM2Array <M2Sequence>(Version); SequenceLookup = br.ReadM2Array <short>(Version); PlayableAnimationLookup = br.ReadM2Array <M2PlayableAnimationLookup>(Version); Bones = br.ReadM2Array <M2Bone>(Version); KeyBoneLookup = br.ReadM2Array <KeyBone>(Version); Vertices = br.ReadM2Array <M2Vertex>(Version); SkinProfiles = br.ReadM2Array <M2SkinProfile>(Version); Colors = br.ReadM2Array <M2Color>(Version); Textures = br.ReadM2Array <M2Texture>(Version); TextureWeights = br.ReadM2Array <FixedPoint_0_15>(Version); TextureFlipbook = br.ReadM2Array <byte>(Version); TextureTransforms = br.ReadM2Array <M2TextureTransform>(Version); TextureReplacementLookup = br.ReadM2Array <short>(Version); Materials = br.ReadM2Array <M2Material>(Version); BoneLookup = br.ReadM2Array <short>(Version); TextureLookup = br.ReadM2Array <short>(Version); TexUnitLookup = br.ReadM2Array <short>(Version); TransparencyLookup = br.ReadM2Array <short>(Version); TexTransformsLookup = br.ReadM2Array <short>(Version); BoundingBox = br.ReadStruct <CExtent>(); CollisionBox = br.ReadStruct <CExtent>(); CollisionTriangles = br.ReadM2Array <ushort>(Version); CollisionVertices = br.ReadM2Array <C3Vector>(Version); CollisionNormals = br.ReadM2Array <C3Vector>(Version); Attachments = br.ReadM2Array <M2Attachment>(Version); AttachmentLookupTable = br.ReadM2Array <ushort>(Version); Events = br.ReadM2Array <M2Event>(Version); Lights = br.ReadM2Array <M2Light>(Version); Cameras = br.ReadM2Array <M2Camera>(Version); CameraLookupTable = br.ReadM2Array <short>(Version); Ribbons = br.ReadM2Array <M2Ribbon>(Version); Particles = br.ReadM2Array <M2Particle>(Version); if (TextureFlipbook != null) { throw new Exception("TextureFlipbook has data"); } }
public M2Ribbon(BinaryReader br, uint build) { RibbonId = br.ReadInt32(); BoneIndex = br.ReadUInt32(); Position = br.ReadStruct <C3Vector>(); TextureLookup = br.ReadM2Array <short>(build); MaterialLookup = br.ReadM2Array <short>(build); ColorTrack = new M2Track <CRGB>(br, build); AlphaTrack = new M2Track <FixedPoint_0_15>(br, build); HeightAboveTrack = new M2Track <float>(br, build); HeightBelowTrack = new M2Track <float>(br, build); EdgesPerSecond = br.ReadSingle(); EdgeLifetime = br.ReadSingle(); Gravity = br.ReadSingle(); TextureRows = br.ReadUInt16(); TextureCols = br.ReadUInt16(); TextureSlotTrack = new M2Track <ushort>(br, build); VisbilityTrack = new M2Track <bool>(br, build); }
public M2Particle(BinaryReader br, uint build) { ParticleId = br.ReadInt32(); Flags = (Particle_Flags)br.ReadUInt32(); Position = br.ReadStruct <C3Vector>(); BoneIndex = br.ReadUInt16(); TextureIndex = br.ReadUInt16(); GeometryMdl = br.ReadM2Array <byte>(build)?.AsString(); RecursionMdl = br.ReadM2Array <byte>(build)?.AsString(); BlendMode = br.ReadUInt16(); EmitterType = br.ReadEnum <EmitterType>(); ParticleType = br.ReadEnum <ParticleType>(); CellType = br.ReadEnum <CellType>(); PriorityPlane = br.ReadInt16(); Rows = br.ReadUInt16(); Cols = br.ReadUInt16(); SpeedTrack = new M2Track <float>(br, build); VariationTrack = new M2Track <float>(br, build); LatitudeTrack = new M2Track <float>(br, build); LongitudeTrack = new M2Track <float>(br, build); GravityTrack = new M2Track <float>(br, build); LifeTrack = new M2Track <float>(br, build); EmissionRateTrack = new M2Track <float>(br, build); WidthTrack = new M2Track <float>(br, build); LengthTrack = new M2Track <float>(br, build); ZSourceTrack = new M2Track <float>(br, build); MiddleTime = br.ReadSingle(); StartColor = br.ReadStruct <CImVector>(); MiddleColor = br.ReadStruct <CImVector>(); EndColor = br.ReadStruct <CImVector>(); StartScale = br.ReadSingle(); MiddleScale = br.ReadSingle(); EndScale = br.ReadSingle(); LifespanUVAnimStart = br.ReadUInt16(); LifespanUVAnimEnd = br.ReadUInt16(); LifespanUVAnimRepeat = br.ReadUInt16(); DecayUVAnimStart = br.ReadUInt16(); DecayUVAnimEnd = br.ReadUInt16(); DecayUVAnimRepeat = br.ReadUInt16(); TailUVAnimStart = br.ReadUInt16(); TailUVAnimEnd = br.ReadUInt16(); TailDecayUVAnimStart = br.ReadUInt16(); TailDecayUVAnimEnd = br.ReadUInt16(); // unverified TailLength = br.ReadSingle(); TwinkleFPS = br.ReadSingle(); TwinklePercent = br.ReadSingle(); TwinkleScaleMin = br.ReadSingle(); TwinkleScaleMax = br.ReadSingle(); IvelScale = br.ReadSingle(); Drag = br.ReadSingle(); Spin = br.ReadSingle(); TumblexMin = br.ReadSingle(); TumblexMax = br.ReadSingle(); TumbleyMin = br.ReadSingle(); TumbleyMax = br.ReadSingle(); TumblezMin = br.ReadSingle(); TumblezMax = br.ReadSingle(); WindVector = br.ReadStruct <C3Vector>(); WindTime = br.ReadSingle(); FollowSpeed1 = br.ReadSingle(); FollowScale1 = br.ReadSingle(); FollowSpeed2 = br.ReadSingle(); FollowScale2 = br.ReadSingle(); Splines = br.ReadM2Array <C3Vector>(build); EnabledIn = new M2Track <bool>(br, build); }