public Submesh3D Clone() { var clone = new Submesh3D(); clone.Mesh = Mesh.ShallowClone(); clone.BoneNames = new List <string>(BoneNames); clone.BoneBindPoses = new List <Matrix44>(BoneBindPoses); clone.Material = Material.Clone(); clone.Owner = null; return(clone); }
public void TestRP_CombineAPI() { // AEL: I am not sure if we should test more here or if it is sufficient to check if reactions happened or not? BasicReactionSupporter brs = new BasicReactionSupporter(); Initialize(brs); IMaterial m1 = brs.MyMaterialCatalog["Hydrochloric Acid"].CreateMass(10, 20); IMaterial m2 = brs.MyMaterialCatalog["Caustic Soda"].CreateMass(12, 44); IMaterial m3 = brs.MyMaterialCatalog["Nitrous Acid"].CreateMass(2, 60); IMaterial resultA; ArrayList observedReactions, observedReactionInstances; _Debug.WriteLine("Part A : Reaction should happen..."); bool reactionAHappened = brs.MyReactionProcessor.CombineMaterials(new IMaterial[] { m1.Clone(), m2.Clone(), m3.Clone() }, out resultA, out observedReactions, out observedReactionInstances); //bool reactionHappened = brs.MyReactionProcessor.CombineMaterials(new IMaterial[]{m1,m2,m3},out result, out observedReactions, out observedReactionInstances); _Debug.WriteLine("Engine says that reactions " + (reactionAHappened?"happened.":"didn't happen.")); _Debug.WriteLine("\r\nObserved Reactions"); foreach (Reaction r in observedReactions) { _Debug.WriteLine(r.ToString()); } _Debug.WriteLine("\r\nObserved Reaction Instances"); foreach (ReactionInstance ri in observedReactionInstances) { _Debug.WriteLine(ri.ToString()); } _Debug.WriteLine("\r\nMixture"); _Debug.WriteLine(resultA.ToString()); IMaterial resultB; _Debug.WriteLine("Part B : Reaction should not happen..."); bool reactionBHappened = brs.MyReactionProcessor.CombineMaterials(new IMaterial[] { m1.Clone(), m3.Clone() }, out resultB, out observedReactions, out observedReactionInstances); _Debug.WriteLine("Engine says that reactions " + (reactionBHappened?"happened.":"didn't happen.")); _Debug.WriteLine("\r\nObserved Reactions"); foreach (Reaction r in observedReactions) { _Debug.WriteLine(r.ToString()); } _Debug.WriteLine("\r\nObserved Reaction Instances"); foreach (ReactionInstance ri in observedReactionInstances) { _Debug.WriteLine(ri.ToString()); } _Debug.WriteLine("\r\nMixture"); _Debug.WriteLine(resultB.ToString()); _Debug.Assert(!reactionBHappened, "Reaction B should not have happened"); }