-- BF2OccExport.MS

global fp = undefined
global basescale = undefined


-- clean up
clearlistener()
if OccExport != undefined do
(
 closeRolloutFloater OccExport
)


-- writes object as occluder group
fn WriteOccluder obj =
(
 if classof(obj) != Editable_poly do
 (
  messagebox "Object is not Editable Poly!"
  return false
 )
 
 -- write stuff
 format "GROUP\n" to:fp
 
 -- write planes
 format "%\n" (obj.GetNumFaces()) to:fp
 for i=1 to obj.GetNumFaces() do
 (
  local fd = obj.GetFaceDegree i
  v1 = (obj.GetFaceVertex i 1)-1
  v2 = (obj.GetFaceVertex i 2)-1
  v3 = (obj.GetFaceVertex i 3)-1
  v4 = (obj.GetFaceVertex i 4)-1
  format "% % % %\n" v1 v2 v3 v4 to:fp
 )
 
 -- write vertices
 local vertnum = obj.GetNumVertices()
 format "%\n" vertnum to:fp
 for i=1 to vertnum do
 (
  local v = obj.GetVertex i
  v = v * obj.transform
  v = v * basescale
  format "% % %\n" -v.x v.z v.y to:fp
 )
 
 -- write children as groups
 for i=1 to obj.children.count do
 (
  WriteOccluder obj.children[i]
 )
)



-- output rollout
rollout rExport "Export"
(
 spinner spnScale "Scale " range:[0.001,1000.0,0.1]
 button cmdExport "Export..." width:140
 
 on cmdExport pressed do
 (
  -- validate
  if selection.count != 1 do
  (
   messagebox "Must select one object!"
   return false
  )
  obj = selection[1]
  
  -- scale
  basescale = spnScale.value
  
  -- save file dialog
  local def = maxfilepath + obj.name
  local filter = "Occluder (*.occ)|*.occ|All Files (*.*)|*.*"
  local filename = getSaveFileName caption:"Export Occluder" types:filter filename:def
  if filename == undefined then return false
  
  -- create file
  fp = createfile filename
  if fp == undefined do
  (
   messagebox "Could not create file!"
   return false
  )
  
  -- write version
  format "OCCLUDERPLANESv0.2\n" to:fp
  
  WriteOccluder obj
  
  -- close file
  close fp
 )
)

-- about rollout
rollout rAbout "About"
(
 label lab1 "BF2 Occluder Export"
 label lab2 "Version 1.1.0"
 label lab3 "by Martijn Buijs, 2010"
 label lab4 "http://www.bytehazard.com"
)

-- floater
OccExport = newRolloutFloater "BF2 Occluder Export" 180 110
addRollout rExport OccExport
addRollout rAbout OccExport rolledup:true

-- END OF FILE
