internal void ExportMeshFromFrame(ImportedFrame rootFrame, ImportedFrame meshFrame, List <ImportedMesh> meshList, List <ImportedMaterial> materialList, List <ImportedTexture> textureList, bool exportSkins) { var meshNode = _frameToNode[meshFrame]; var mesh = ImportedHelpers.FindMesh(meshFrame.Path, meshList); ExportMesh(rootFrame, materialList, textureList, meshNode, mesh, exportSkins); }
internal void ExportFrame(List <ImportedMesh> meshList, List <ImportedFrame> meshFrames, ImportedFrame rootFrame) { var rootNode = AsFbxGetSceneRootNode(_pContext); Debug.Assert(rootNode != IntPtr.Zero); var nodeStack = new Stack <IntPtr>(); var frameStack = new Stack <ImportedFrame>(); nodeStack.Push(rootNode); frameStack.Push(rootFrame); while (nodeStack.Count > 0) { var parentNode = nodeStack.Pop(); var frame = frameStack.Pop(); var childNode = AsFbxExportSingleFrame(_pContext, parentNode, frame.Path, frame.Name, frame.LocalPosition, frame.LocalRotation, frame.LocalScale); if (meshList != null && ImportedHelpers.FindMesh(frame.Path, meshList) != null) { meshFrames.Add(frame); } _frameToNode.Add(frame, childNode); for (var i = frame.Count - 1; i >= 0; i -= 1) { nodeStack.Push(childNode); frameStack.Push(frame[i]); } } }
private static void SearchHierarchy(ImportedFrame rootFrame, List <ImportedMesh> meshList, HashSet <string> exportFrames) { var frameStack = new Stack <ImportedFrame>(); frameStack.Push(rootFrame); while (frameStack.Count > 0) { var frame = frameStack.Pop(); var meshListSome = ImportedHelpers.FindMesh(frame.Path, meshList); if (meshListSome != null) { var parent = frame; while (parent != null) { exportFrames.Add(parent.Path); parent = parent.Parent; } var boneList = meshListSome.BoneList; if (boneList != null) { foreach (var bone in boneList) { if (!exportFrames.Contains(bone.Path)) { var boneParent = rootFrame.FindFrameByPath(bone.Path); while (boneParent != null) { exportFrames.Add(boneParent.Path); boneParent = boneParent.Parent; } } } } } for (var i = frame.Count - 1; i >= 0; i -= 1) { frameStack.Push(frame[i]); } } }