Exemplo n.º 1
0
        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();
 }
Exemplo n.º 3
0
        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");
            }
        }
Exemplo n.º 4
0
 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);
 }