public void Node_AddMaterial_SetsMaterialScene() { // given: var scene = new FbxScene(""); var root = scene.GetRootNode(); var node = new FbxNode(""); var mat = new FbxSurfacePhong(""); root.AddChild(node); // require: Assert.AreEqual(4, scene.GetSrcObjectCount()); Assert.AreEqual(scene.GetRootNode(), scene.GetSrcObject(0)); Assert.AreEqual(scene.GetGlobalSettings(), scene.GetSrcObject(1)); Assert.AreEqual(scene.GetAnimationEvaluator(), scene.GetSrcObject(2)); Assert.AreEqual(node, scene.GetSrcObject(3)); Assert.AreEqual(0, scene.GetDstObjectCount()); Assert.AreEqual(2, scene.GetNodeCount()); Assert.AreEqual(scene.GetRootNode(), scene.GetNode(0)); Assert.AreEqual(node, scene.GetNode(1)); Assert.AreEqual(0, node.GetSrcObjectCount()); Assert.AreEqual(2, node.GetDstObjectCount()); Assert.AreEqual(root, node.GetDstObject(0)); Assert.AreEqual(scene, node.GetDstObject(1)); Assert.AreEqual(scene, node.GetScene()); Assert.AreEqual(0, node.GetMaterialCount()); Assert.AreEqual(0, mat.GetSrcObjectCount()); Assert.AreEqual(0, mat.GetDstObjectCount()); Assert.AreEqual(null, mat.GetScene()); // when: node.AddMaterial(mat); // then: Assert.AreEqual(5, scene.GetSrcObjectCount()); Assert.AreEqual(mat, scene.GetSrcObject(4)); Assert.AreEqual(2, scene.GetNodeCount()); Assert.AreEqual(scene.GetRootNode(), scene.GetNode(0)); Assert.AreEqual(node, scene.GetNode(1)); Assert.AreEqual(1, node.GetSrcObjectCount()); Assert.AreEqual(mat, node.GetSrcObject(0)); Assert.AreEqual(1, node.GetMaterialCount()); Assert.AreEqual(mat, node.GetMaterial(0)); Assert.AreEqual(0, mat.GetSrcObjectCount()); Assert.AreEqual(2, mat.GetDstObjectCount()); Assert.AreEqual(node, mat.GetDstObject(0)); Assert.AreEqual(scene, mat.GetDstObject(1)); Assert.AreEqual(scene, mat.GetScene()); }
private void CheckSceneHelper(FbxNode node, FbxMesh mesh, FbxSurfaceMaterial material) { if (node == null) { return; } Assert.AreEqual(mesh, node.GetMesh()); int matIndex = node.GetMaterialIndex(m_materialName); Assert.GreaterOrEqual(matIndex, 0); Assert.AreEqual(material, node.GetMaterial(matIndex)); for (int i = 0; i < node.GetChildCount(); i++) { // recurse through the hierarchy CheckSceneHelper(node.GetChild(i), mesh, material); } }
protected override void CheckScene(FbxScene scene) { base.CheckScene(scene); FbxNode rootNode = scene.GetRootNode().GetChild(0); Assert.IsNotNull(rootNode); FbxMesh sharedMesh = rootNode.GetMesh(); Assert.IsNotNull(sharedMesh); Assert.AreEqual(m_meshName, sharedMesh.GetName()); int matIndex = rootNode.GetMaterialIndex(m_materialName); Assert.GreaterOrEqual(matIndex, 0); FbxSurfaceMaterial sharedMat = rootNode.GetMaterial(matIndex); Assert.IsNotNull(sharedMat); // check that the mesh is the same for all children CheckSceneHelper(rootNode, sharedMesh, sharedMat); }