//// todo - update to create new memory areas //public unsafe static void doAppendMeshBinding(GrannyContext grannyContext, IGrannyFile inputFile, IGrannyFile appendFile) //{ // // UNPACK CURRENT MODEL // IGrannyModel inputModel = inputFile.Models[0]; // GrannyModelWrapper inputModelWrapper = new GrannyModelWrapper(inputModel); // void* m_pkModel_input = inputModelWrapper.m_pkModel; // // UNPACK APPEND MODEL // IGrannyModel appendModel = appendFile.Models[0]; // GrannyModelWrapper appendModelWrapper = new GrannyModelWrapper(appendModel); // void* m_pkModel_app = appendModelWrapper.m_pkModel; // // UNPACK NEW MODEL // IGrannyFile newModelFile = inputFile; // IGrannyModel newModel = newModelFile.Models[0]; // GrannyModelWrapper newModelWrapper = new GrannyModelWrapper(newModel); // void* m_pkModel_new = newModelWrapper.m_pkModel; // // UPDATE NEW MODEL // int meshCountInput = *(int*)((IntPtr)m_pkModel_input + 76); // newModel.MeshBindings.Add(appendFile.Meshes[0]); // // update Mesh Count // *(int*)((IntPtr)m_pkModel_new + 76) = meshCountInput + 1; // //update model mesh bindings // int size = meshCountInput; // void* modelMeshBindingsPtrInput = (void*)*(int*)((IntPtr)m_pkModel_input + 80); // MemoryUtil.MemCpy((void*)*(int*)((IntPtr)m_pkModel_new + 80), (void*)modelMeshBindingsPtrInput, (uint)(size * 4)); // int writeOffset = meshCountInput; // void* modelMeshBindingsPtrAppend = (void*)*(int*)((IntPtr)m_pkModel_app + 80); // MemoryUtil.MemCpy((void*)(*(int*)((IntPtr)m_pkModel_new + 80) + writeOffset * 4), (void*)modelMeshBindingsPtrAppend, (uint)(1 * 4)); // GrannyFileWrapper newModelFileWrapper = new GrannyFileWrapper(newModelFile); // void* m_info = newModelFileWrapper.m_info; // void** grannyMeshPtr = (void**)*(int*)((IntPtr)m_info + 56); // // Add all meshes from input file // *(int*)((IntPtr)m_info + 52) = 0; // Reset Mesh Count to 0 // for (int index = 0; index < inputFile.Meshes.Count; index++) // { // IGrannyMesh mesh = inputFile.Meshes[index]; // GrannyMeshWrapper meshWrapper = new GrannyMeshWrapper(mesh); // void* m_pkMesh = meshWrapper.m_pkMesh; // MemoryUtil.MemCpy((void*)*(int*)((IntPtr)m_info + 56), (void*)grannyMeshPtr, (uint)(*(int*)((IntPtr)m_info + 52) * 4)); // *(int*)(*(int*)((IntPtr)m_info + 56) + *(int*)((IntPtr)m_info + 52) * 4) = (int)m_pkMesh; // *(int*)((IntPtr)m_info + 52) = *(int*)((IntPtr)m_info + 52) + 1; // } // // Add mesh from append file // IGrannyMesh appendMesh = appendFile.Meshes[0]; // GrannyMeshWrapper appendMeshWrapper = new GrannyMeshWrapper(appendMesh); // void* m_pkAppendMesh = appendMeshWrapper.m_pkMesh; // MemoryUtil.MemCpy((void*)*(int*)((IntPtr)m_info + 56), (void*)grannyMeshPtr, (uint)(*(int*)((IntPtr)m_info + 52) * 4)); // *(int*)(*(int*)((IntPtr)m_info + 56) + *(int*)((IntPtr)m_info + 52) * 4) = (int)m_pkAppendMesh; // *(int*)((IntPtr)m_info + 52) = *(int*)((IntPtr)m_info + 52) + 1; //} public static IGrannyFile cleardownTemplate(GrannyContext grannyContext) { //string filename = sourceTemplatePath + "model_template.gr2"; IGrannyFile file = NexusBuddyApplicationForm.form.openFileAsTempFileCopy(NexusBuddyApplicationForm.form.modelTemplateFilename, "tempimport"); GrannyFileWrapper fileWrapper = new GrannyFileWrapper(file); //GrannyMeshWrapper meshWrapper = new GrannyMeshWrapper(file.Meshes[0]); //meshWrapper.setName("BLANK_MESH"); //meshWrapper.setNumVertices(0); //meshWrapper.setNumBoneBindings(0); //meshWrapper.setNumIndices(0); //meshWrapper.setNumIndices16(0); //meshWrapper.setGroup0TriCount(0); ////memProbe(meshWrapper.getBoneBindingsPtr()); //GrannyModelWrapper modelWrapper = new GrannyModelWrapper(file.Models[0]); //modelWrapper.setNumMeshBindings(1); //modelWrapper.setName("BLANK_MODEL"); //GrannySkeletonWrapper skeletonWrapper = new GrannySkeletonWrapper(modelWrapper.wrappedModel.Skeleton); //skeletonWrapper.setNumBones(0); //skeletonWrapper.setName("BLANK_SKELETON"); fileWrapper.setNumMeshes(0); //fileWrapper.setNumModels(0); fileWrapper.setNumVertexDatas(0); fileWrapper.setNumSkeletons(0); fileWrapper.setNumTriTopologies(0); fileWrapper.setNumMaterials(0); file.Meshes.Clear(); //fileWrapper.setFromFileName("My lovely lovely filename"); //fileWrapper.setFromArtToolName("Blender 2.49"); //fileWrapper.setExporterName("Nexus Buddy 2.0 beta 6"); return(file); }