Advertisement
expired6978

Untitled

Jul 16th, 2014
316
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.42 KB | None | 0 0
  1. global BSDExport
  2. (
  3. if BSDExport != undefined do ( closerolloutfloater BSDExport )
  4. MainExport = newrolloutfloater "BodySlide Export" 200 460
  5.  
  6. global exportBSDRollout
  7. global exportXMLRollout
  8.  
  9. fn writeBSDsFromMorphers exportPath objectNode =
  10. (
  11. try
  12. (
  13. for i=objectNode.modifiers.count to 1 by -1 do
  14. (
  15. local m = objectNode.modifiers[i]
  16. if isKindOf m Morpher then
  17. (
  18. for c=1 to 100 do
  19. (
  20. if WM3_MC_HasData m c then
  21. (
  22. local storeCount = 0
  23.  
  24. local morphName = WM3_MC_GetName m c
  25. WM3_MC_SetValue m c 100.0
  26. snapshot objectNode name:morphName
  27. WM3_MC_SetValue m c 0.0
  28. local newMesh = GetNodeByName morphName
  29. local numVerts = meshop.getnumverts objectNode
  30.  
  31. local filePath = exportPath + morphName + ".bsd"
  32. local f=fopen filePath "wb"
  33. WriteLong f storeCount #unsigned
  34.  
  35. for v=1 to numVerts do
  36. (
  37. local sVert = meshop.getVert objectNode v
  38. local tVert = meshop.getVert newMesh v
  39. local mx = (tVert.x - sVert.x)
  40. local my = (tVert.y - sVert.y)
  41. local mz = (tVert.z - sVert.z)
  42.  
  43. if abs(mx) > 0.0001 or abs(my) > 0.0001 or abs(mz) > 0.0001 then
  44. (
  45. local iOffset = v - 1
  46. WriteLong f iOffset #unsigned
  47. WriteFloat f mx
  48. WriteFloat f my
  49. WriteFloat f mz
  50. storeCount += 1
  51. )
  52. )
  53.  
  54. fseek f 0 #seek_set
  55. WriteLong f storeCount #unsigned
  56.  
  57. delete newMesh
  58. fclose f
  59. )
  60. )
  61. )
  62. )
  63. )
  64. catch
  65. (
  66. throw
  67. )
  68. )
  69.  
  70. fn writeXML exportPath projectName folderName nifName nifExportFolder nifExportName objectNode =
  71. (
  72. try
  73. (
  74. local sliderNames = #()
  75. local filePath = exportPath + projectName + ".xml"
  76. local fs = openFile filePath mode:"wt"
  77.  
  78. local totalCount = 0
  79.  
  80. print "<SliderSetInfo>\n" to:fs
  81. format ("\t<SliderSet name=\"%\">\n") projectName to:fs
  82. format ("\t\t<SetFolder>%</SetFolder>\n") folderName to:fs
  83. format ("\t\t<SourceFile>%</SourceFile>\n") nifName to:fs
  84. format ("\t\t<OutputPath>%</OutputPath>\n") nifExportFolder to:fs
  85. format ("\t\t<OutputFile>%</OutputFile>\n") nifExportName to:fs
  86. format ("\t\t<BaseShapeName target=\"%\">%</BaseShapeName>\n") objectNode.name objectNode.name to:fs
  87.  
  88. for i = objectNode.modifiers.count to 1 by -1 do
  89. (
  90. local m = objectNode.modifiers[i]
  91. if isKindOf m Morpher then
  92. (
  93. for c = 1 to 100 do
  94. (
  95. if WM3_MC_HasData m c do
  96. (
  97. local sliderName = WM3_MC_GetName m c
  98. totalCount += 1
  99. append sliderNames sliderName
  100. )
  101. )
  102. )
  103. )
  104.  
  105. sort sliderNames
  106. for j = 1 to totalCount do
  107. (
  108. format ("\t\t<Slider name=\"%\" invert=\"false\" small=\"0\" big=\"0\">\n") sliderNames[j] to:fs
  109. format ("\t\t\t<datafile name=\"%\" target=\"%\" local=\"true\">%</datafile>\n") sliderNames[j] objectNode.name sliderNames[j] to:fs
  110. print ("\t\t</Slider>\n") to:fs
  111. )
  112.  
  113. print ("\t</SliderSet>\n") to:fs
  114. print ("</SliderSetInfo>") to:fs
  115. close fs
  116. )
  117. catch
  118. (
  119. throw
  120. )
  121. )
  122.  
  123. rollout exportBSDRollout "Export BSD"
  124. (
  125. editText exportFilePath "Export File Path" labelOnTop:true
  126. button openFileButton "Browse..."
  127. button exportButton "Export BSD"
  128.  
  129. on openFileButton pressed do
  130. (
  131. local exportPath = getSavePath caption:"Select Folder" initialDir:exportFilePath.text
  132. if exportPath != undefined do
  133. (
  134. exportFilePath.text = exportPath + "\\"
  135. )
  136. )
  137.  
  138. on exportButton pressed do
  139. (
  140. local workingDirectory = pathConfig.getCurrentProjectFolder() + "\\"
  141. if exportFilePath.text != "" then
  142. workingDirectory = exportFilePath.text
  143.  
  144. writeBSDsFromMorphers workingDirectory $
  145.  
  146. MessageBox("Exporting BSD's finished.")
  147. )
  148. )
  149.  
  150. rollout exportXMLRollout "Export Project File"
  151. (
  152. editText exportProjectFilePath "Export Project File Path" labelOnTop:true
  153. button openXMLFileButton "Browse..."
  154.  
  155. on openXMLFileButton pressed do
  156. (
  157. local DefaultPath = "C:\Users\Karthik\Desktop\BodySlide\SliderSets"
  158. local exportProjectPath = getSavePath caption:"Select Folder" initialDir:DefaultPath
  159. if exportProjectPath != undefined do
  160. (
  161. exportProjectFilePath.text = exportProjectPath + "\\"
  162. )
  163. )
  164.  
  165. editText projectName "Enter Project Name" labelOnTop:true
  166. editText folderName "Enter BSD Folder" labelOnTop:true
  167. editText nifName "Enter BodySlide Nif Name" labelOnTop:true
  168. editText nifExportFolder "Enter Skyrim Folder" labelOnTop:true
  169. editText nifExportName "Enter .NIF Filename" labelOnTop:true
  170.  
  171. button exportXMLButton "Export XML"
  172.  
  173. on exportXMLButton pressed do
  174. (
  175. local workingDirectory2 = pathConfig.getCurrentProjectFolder() + "\\"
  176. if exportProjectFilePath.text != "" then
  177. workingDirectory2 = exportProjectFilePath.text
  178.  
  179. writeXML workingDirectory2 projectName.text folderName.text nifName.text nifExportFolder.text nifExportName.text $
  180.  
  181. MessageBox("Exporting XML Finished.")
  182. )
  183.  
  184. )
  185.  
  186. addRollout exportBSDRollout MainExport rolledup:false
  187. addRollout exportXMLRollout MainExport rolledup:false
  188. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement