Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- global BSDExport
- (
- if BSDExport != undefined do ( closerolloutfloater BSDExport )
- MainExport = newrolloutfloater "BodySlide Export" 200 460
- global exportBSDRollout
- global exportXMLRollout
- fn writeBSDsFromMorphers exportPath objectNode =
- (
- try
- (
- for i=objectNode.modifiers.count to 1 by -1 do
- (
- local m = objectNode.modifiers[i]
- if isKindOf m Morpher then
- (
- for c=1 to 100 do
- (
- if WM3_MC_HasData m c then
- (
- local storeCount = 0
- local morphName = WM3_MC_GetName m c
- WM3_MC_SetValue m c 100.0
- snapshot objectNode name:morphName
- WM3_MC_SetValue m c 0.0
- local newMesh = GetNodeByName morphName
- local numVerts = meshop.getnumverts objectNode
- local filePath = exportPath + morphName + ".bsd"
- local f=fopen filePath "wb"
- WriteLong f storeCount #unsigned
- for v=1 to numVerts do
- (
- local sVert = meshop.getVert objectNode v
- local tVert = meshop.getVert newMesh v
- local mx = (tVert.x - sVert.x)
- local my = (tVert.y - sVert.y)
- local mz = (tVert.z - sVert.z)
- if abs(mx) > 0.0001 or abs(my) > 0.0001 or abs(mz) > 0.0001 then
- (
- local iOffset = v - 1
- WriteLong f iOffset #unsigned
- WriteFloat f mx
- WriteFloat f my
- WriteFloat f mz
- storeCount += 1
- )
- )
- fseek f 0 #seek_set
- WriteLong f storeCount #unsigned
- delete newMesh
- fclose f
- )
- )
- )
- )
- )
- catch
- (
- throw
- )
- )
- fn writeXML exportPath projectName folderName nifName nifExportFolder nifExportName objectNode =
- (
- try
- (
- local sliderNames = #()
- local filePath = exportPath + projectName + ".xml"
- local fs = openFile filePath mode:"wt"
- local totalCount = 0
- print "<SliderSetInfo>\n" to:fs
- format ("\t<SliderSet name=\"%\">\n") projectName to:fs
- format ("\t\t<SetFolder>%</SetFolder>\n") folderName to:fs
- format ("\t\t<SourceFile>%</SourceFile>\n") nifName to:fs
- format ("\t\t<OutputPath>%</OutputPath>\n") nifExportFolder to:fs
- format ("\t\t<OutputFile>%</OutputFile>\n") nifExportName to:fs
- format ("\t\t<BaseShapeName target=\"%\">%</BaseShapeName>\n") objectNode.name objectNode.name to:fs
- for i = objectNode.modifiers.count to 1 by -1 do
- (
- local m = objectNode.modifiers[i]
- if isKindOf m Morpher then
- (
- for c = 1 to 100 do
- (
- if WM3_MC_HasData m c do
- (
- local sliderName = WM3_MC_GetName m c
- totalCount += 1
- append sliderNames sliderName
- )
- )
- )
- )
- sort sliderNames
- for j = 1 to totalCount do
- (
- format ("\t\t<Slider name=\"%\" invert=\"false\" small=\"0\" big=\"0\">\n") sliderNames[j] to:fs
- format ("\t\t\t<datafile name=\"%\" target=\"%\" local=\"true\">%</datafile>\n") sliderNames[j] objectNode.name sliderNames[j] to:fs
- print ("\t\t</Slider>\n") to:fs
- )
- print ("\t</SliderSet>\n") to:fs
- print ("</SliderSetInfo>") to:fs
- close fs
- )
- catch
- (
- throw
- )
- )
- rollout exportBSDRollout "Export BSD"
- (
- editText exportFilePath "Export File Path" labelOnTop:true
- button openFileButton "Browse..."
- button exportButton "Export BSD"
- on openFileButton pressed do
- (
- local exportPath = getSavePath caption:"Select Folder" initialDir:exportFilePath.text
- if exportPath != undefined do
- (
- exportFilePath.text = exportPath + "\\"
- )
- )
- on exportButton pressed do
- (
- local workingDirectory = pathConfig.getCurrentProjectFolder() + "\\"
- if exportFilePath.text != "" then
- workingDirectory = exportFilePath.text
- writeBSDsFromMorphers workingDirectory $
- MessageBox("Exporting BSD's finished.")
- )
- )
- rollout exportXMLRollout "Export Project File"
- (
- editText exportProjectFilePath "Export Project File Path" labelOnTop:true
- button openXMLFileButton "Browse..."
- on openXMLFileButton pressed do
- (
- local DefaultPath = "C:\Users\Karthik\Desktop\BodySlide\SliderSets"
- local exportProjectPath = getSavePath caption:"Select Folder" initialDir:DefaultPath
- if exportProjectPath != undefined do
- (
- exportProjectFilePath.text = exportProjectPath + "\\"
- )
- )
- editText projectName "Enter Project Name" labelOnTop:true
- editText folderName "Enter BSD Folder" labelOnTop:true
- editText nifName "Enter BodySlide Nif Name" labelOnTop:true
- editText nifExportFolder "Enter Skyrim Folder" labelOnTop:true
- editText nifExportName "Enter .NIF Filename" labelOnTop:true
- button exportXMLButton "Export XML"
- on exportXMLButton pressed do
- (
- local workingDirectory2 = pathConfig.getCurrentProjectFolder() + "\\"
- if exportProjectFilePath.text != "" then
- workingDirectory2 = exportProjectFilePath.text
- writeXML workingDirectory2 projectName.text folderName.text nifName.text nifExportFolder.text nifExportName.text $
- MessageBox("Exporting XML Finished.")
- )
- )
- addRollout exportBSDRollout MainExport rolledup:false
- addRollout exportXMLRollout MainExport rolledup:false
- )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement