public void LoadWarLionTest() { RmvRigidModel model = new RmvRigidModel(GetLionMeshData(), "UnitTestModel"); // Header Assert.AreEqual("RMV2", model.Header.FileType); Assert.AreEqual(4, model.Header.LodCount); Assert.AreEqual("bigcat04", model.Header.SkeletonName); Assert.AreEqual(7, model.Header.Version); // Lod headers Assert.AreEqual(4, model.LodHeaders.Length); Assert.AreEqual(3, model.LodHeaders[0].MeshCount); Assert.AreEqual(85530, model.LodHeaders[0].TotalLodIndexSize); Assert.AreEqual(357696, model.LodHeaders[0].TotalLodVertexSize); Assert.AreEqual(3, model.LodHeaders[1].MeshCount); Assert.AreEqual(55584, model.LodHeaders[1].TotalLodIndexSize); Assert.AreEqual(266848, model.LodHeaders[1].TotalLodVertexSize); Assert.AreEqual(2, model.LodHeaders[2].MeshCount); Assert.AreEqual(10890, model.LodHeaders[2].TotalLodIndexSize); Assert.AreEqual(71148, model.LodHeaders[2].TotalLodVertexSize); Assert.AreEqual(2, model.LodHeaders[3].MeshCount); Assert.AreEqual(6492, model.LodHeaders[3].TotalLodIndexSize); Assert.AreEqual(50316, model.LodHeaders[3].TotalLodVertexSize); // MeshList }
public void LoadEditableModel(PackFile file) { var rmv = new RmvRigidModel(file.DataSource.ReadData(), file.Name); EditableMeshNode.SetModel(rmv, _resourceLibary, _animationView.Player, GeometryGraphicsContextFactory.CreateInstance(_resourceLibary.GraphicsDevice)); _animationView.SetActiveSkeleton(rmv.Header.SkeletonName); }
public Rmv2ModelNode(RmvRigidModel model, ResourceLibary resourceLib, string name, AnimationPlayer animationPlayer, IGeometryGraphicsContextFactory contextFactory) : base(name) { Name = name; for (int lodIndex = 0; lodIndex < 4; lodIndex++) { var lodNode = new Rmv2LodNode("Lod " + lodIndex, lodIndex) { IsVisible = lodIndex == 0 }; AddObject(lodNode); } SetModel(model, resourceLib, animationPlayer, contextFactory); }
private byte[] GetBytesToSave() { var isAllVisible = _editableMeshNode.AreAllNodesVisible(); bool onlySaveVisible = false; if (isAllVisible == false) { if (MessageBox.Show("Only save visible nodes?", "", MessageBoxButton.YesNo) == MessageBoxResult.Yes) { onlySaveVisible = true; } } var bytes = _editableMeshNode.Save(onlySaveVisible); var reloadedModel = new RmvRigidModel(bytes, "reloadedFile"); return(bytes); }
public void SaveWarLion() { var originalMeshBytes = GetLionMeshData(); RmvRigidModel model = new RmvRigidModel(originalMeshBytes, "UnitTestModel"); using (MemoryStream ms = new MemoryStream()) { using (BinaryWriter writer = new BinaryWriter(ms)) model.SaveToByteArray(writer); var savedMeshBytes = ms.ToArray(); Assert.AreEqual(originalMeshBytes.Length, savedMeshBytes.Length); for (int i = 0; i < originalMeshBytes.Length; i++) { Assert.AreEqual(originalMeshBytes[i], savedMeshBytes[i]); } } }
Rmv2ModelNode LoadRigidMesh(PackFile file, ref ISceneNode parent, AnimationPlayer player, ref string skeletonName) { var rmvModel = new RmvRigidModel(file.DataSource.ReadData(), file.Name); var model = new Rmv2ModelNode(rmvModel, _resourceLibary, Path.GetFileName(rmvModel.FileName), player, GeometryGraphicsContextFactory.CreateInstance(_device)); if (parent == null) { parent = model; } else { parent.AddObject(model); } if (!string.IsNullOrWhiteSpace(rmvModel.Header.SkeletonName)) { skeletonName = rmvModel.Header.SkeletonName; } return(model); }
public void SetModel(RmvRigidModel model, ResourceLibary resourceLibary, AnimationPlayer animationPlayer, IGeometryGraphicsContextFactory contextFactory) { Model = model; for (int lodIndex = 0; lodIndex < model.Header.LodCount; lodIndex++) { if (lodIndex >= Children.Count) { AddObject(new Rmv2LodNode("Lod " + lodIndex, lodIndex)); } var lodNode = Children[lodIndex]; for (int modelIndex = 0; modelIndex < model.LodHeaders[lodIndex].MeshCount; modelIndex++) { var node = new Rmv2MeshNode(model.MeshList[lodIndex][modelIndex], contextFactory.Create(), resourceLibary, animationPlayer); node.LodIndex = lodIndex; lodNode.AddObject(node); } } }
public void UpdateOffsets() { var meshData = GetLionMeshData(); RmvRigidModel model = new RmvRigidModel(meshData, "UnitTestModel"); model.UpdateOffsets(); using (MemoryStream ms = new MemoryStream()) { using (BinaryWriter writer = new BinaryWriter(ms)) model.SaveToByteArray(writer); var bits = ms.ToArray(); Assert.AreEqual(meshData.Length, bits.Length); for (int i = 0; i < meshData.Length; i++) { Assert.AreEqual(meshData[i], bits[i]); } } }