/// <summary> /// Initializes all parameters of the chunk without performing any load operation. /// </summary> /// <param name="parent">The parent large terrain file of this chunk</param> /// <param name="baseFile">The MPQ-file which contains the general information about placement and doodads</param> /// <param name="texFile">The MPQ-stream which contains all the texture related information (MCLY, MCAL, ...)</param> /// <param name="offset">The offset inside baseFile and texFile where this chunks MCNK is located</param> public ADTChunk(ADTFile parent, Stormlib.MPQFile baseFile, Utils.StreamedMpq texFile, ChunkOffset offset) { mFile = baseFile; mTexFile = texFile; mOffset = offset; mParent = parent; }
public M2AnimationBone(M2Bone bone, M2BoneAnimator Anim, Stormlib.MPQFile f, uint[] gs, Stormlib.MPQFile[] Anims) { Animator = Anim; fileInfo = bone; var ap = new M2Animator<Vector3, Vector3>(fileInfo.Translation, f, gs, Anims); ap.Load(); ap.SelectedAnim = 0; AnimPos = new PositionAnimator(ap); AnimPos.MaxTime = TimeSpan.FromMilliseconds(Anim.Animations[0].Length); ap = new M2Animator<Vector3, Vector3>(fileInfo.Scaling, f, gs, Anims); ap.Load(); ap.SelectedAnim = 0; AnimScale = new PositionAnimator(ap); AnimScale.Default = new Vector3(1, 1, 1); AnimScale.MaxTime = TimeSpan.FromMilliseconds(Anim.Animations[0].Length); var ar = new M2Animator<Quaternion16, Quaternion>(fileInfo.Rotation, f, gs, Anims); ar.Load(); ar.SelectedAnim = 0; AnimRot = new RotationAnimator(ar); AnimRot.MaxTime = TimeSpan.FromMilliseconds(Anim.Animations[0].Length); }
public ADTChunk(ADTFile parent, Stormlib.MPQFile file, MCIN info) { mParent = parent; mFile = file; mInfo = info; }
public M2BoneAnimator(Stormlib.MPQFile file, M2Info parent) { string AnimPath = parent.FileDirectory + parent.ModelName; M2Animation[] anims = new M2Animation[parent.Header.nAnimations]; file.Position = parent.Header.ofsAnimations; file.Read(anims); Stormlib.MPQFile[] AnimFiles = new Stormlib.MPQFile[parent.Header.nAnimations]; for (int i = 0; i < parent.Header.nAnimations; ++i) { string full = AnimPath + anims[i].AnimationID.ToString("D4") + "-" + anims[i].SubAnimationID.ToString("D2") + ".anim"; if (Stormlib.MPQFile.Exists(full)) { Console.WriteLine(full); AnimFiles[i] = new Stormlib.MPQFile(full); } } Animations.AddRange(anims); this.file = file; var bones = new M2Bone[parent.Header.nBones]; file.Position = parent.Header.ofsBones; file.Read(bones); foreach (var bone in bones) { M2AnimationBone ab = new M2AnimationBone(bone, this, file, parent.GlobalSequences, AnimFiles); Bones.Add(ab); ab.BoneIndex = Bones.Count - 1; } foreach (var bone in Bones) { bone.Init(); } }
private void SkipChunk(Stormlib.MPQFile file) { uint size = file.Read<uint>(); file.Position += size; }
private string ReadSignature(Stormlib.MPQFile file) { byte[] bytes = file.Read(4); bytes = bytes.Reverse().ToArray(); return Encoding.UTF8.GetString(bytes); }