| For those of you who missed the post in the gile[s] forums, here it is the .gls exporter: 
 
 Global lightIntensity#
Global lightToon
Global lightToonShades
Function ExportFormat$()
Return "Gile[s] Scene (*.gls)|*.gls"
End Function
;-------------------------------------------------
;Tells BSP Factory not to save the lightmap
Function ExportLightmap()
Return False
End Function
;-------------------------------------------------
Function Export()
;Get settings
GadgetList "gile[s] Exporter Settings:", 200
AddText "Light intensity multiplier (multiplies range):"
AddString "0.01"
AddCheckBox "Export lights as toon lights", 0
AddText "Toon shades:"
AddSpin 1, 1024, 3
OpenGadgetList
lightIntensity = GadgetListResult(1)
lightToon = GadgetListResult(2)
lightToonShades = GadgetListResult(3)
;Write header
FileInt      $FFFF         ;HEADER chunk
HEADER_begin=FileGetPos()   ;Offset to the size info
FileInt      0            ;TmpSize
FileString   "gile[s]"
FileFloat   1.0            ;Version
;Write author comments
FileInt      $F000            ;AUTHOR Chunk
FileInt      Len("Exported by BSP Factory")+1   ;Size of the chunk (len of string + 1)
FileString   "Exported by BSP Factory"         ;Comment
;Write lightmaps
WriteGLSLightmaps
;Write textures
WriteGLSTextures
;Write materials
WriteGLSMaterials
;Write models
WriteGLSModels
;End of HEADER
HEADER_end=FileGetPos()
FileSetPos   HEADER_begin
FileInt   HEADER_end-HEADER_begin-4
FileSetPos   HEADER_end
End Function
;-------------------------------------------------
Function WriteGLSLightmaps()
;Begin
FileInt   $7000      ;LIGHTMAPS Chunk
LIGHTMAPS_begin=FileGetPos()
FileInt   0      ;TmpSize
;Texture Begin
FileInt   $7001      ;LIGHTMAP Chunk
LIGHTMAP_begin=FileGetPos()
FileInt   0      ;TmpSize
;Name
FileInt      $7002
FileInt      Len("Default Lightmap")+1
FileString   "Default Lightmap"
;File
FileInt      $7003
FileInt      1
FileByte   0
;Width
FileInt      $7004
FileInt      2
FileShort   512
;Height
FileInt      $7005
FileInt      2
FileShort   512
;Non uniform
;FileInt      $7006
;FileInt      1
;FileByte   1
;Use custom texel
;FileInt      $7007
;FileInt      1
;FileByte   0
;Custom texel
;FileInt      $7008
;FileInt      4
;FileFloat   0.0;1.17063
;Repack
;FileInt      $7009
;FileInt      1
;FileByte   1
;Data (completely white)
FileInt      $700A
FileInt      512*512*3
For c=1 To 512*512*3
   FileByte 255
Next
;Size
LIGHTMAP_end=FileGetPos()
FileSetPos   LIGHTMAP_begin
FileInt   LIGHTMAP_end-LIGHTMAP_begin-4
FileSetPos   LIGHTMAP_end
;Size
LIGHTMAPS_end=FileGetPos()
FileSetPos   LIGHTMAPS_begin
FileInt   LIGHTMAPS_end-LIGHTMAPS_begin-4
FileSetPos   LIGHTMAPS_end
End Function
;-------------------------------------------------
Function WriteGLSTextures()
;Begin
FileInt   $6000      ;TEXTURES Chunk
TEXTURES_begin=FileGetPos()
FileInt   0      ;TmpSize
;Textures
For c=1 To MapSurfaces()
   WriteGLSTex c
Next
;Size
TEXTURES_end=FileGetPos()
FileSetPos   TEXTURES_begin
FileInt   TEXTURES_end-TEXTURES_begin-4
FileSetPos   TEXTURES_end
End Function
;-------------------------------------------------
Function WriteGLSTex(surf)
;Begin
FileInt   $6001   ;TEX Chunk
TEX_begin=FileGetPos()
FileInt   0      ;TmpSize
;File
FileInt      $6002
FileInt      Len(SurfaceTextureName$(surf))+1
FileString   SurfaceTextureName$(surf)
;Scale U
FileInt      $6003
FileInt      4
FileFloat   1.0
;Scale V
FileInt      $6004
FileInt      4
FileFloat   1.0
;Offset U
FileInt      $6005
FileInt      4
FileFloat   -1.0
;Offset V
FileInt      $6006
FileInt      4
FileFloat   -1.0
;Angle
FileInt      $6007
FileInt      4
FileFloat   0.0
;Flags
FileInt      $6008
FileInt      4
FileInt      SurfaceTextureFlags(surf)
;Blend
FileInt      $6009
FileInt      4
FileInt      2
;Size
TEX_end=FileGetPos()
FileSetPos   TEX_begin
FileInt   TEX_end-TEX_begin-4
FileSetPos   TEX_end
End Function
;-------------------------------------------------
Function WriteGLSMaterials()
;Begin
FileInt   $5000      ;MATERIALS Chunk
MATERIALS_begin=FileGetPos()
FileInt   0      ;TmpSize
;Textures
For c=1 To MapSurfaces()
   WriteGLSMat c
Next
;Size
MATERIALS_end=FileGetPos()
FileSetPos   MATERIALS_begin
FileInt   MATERIALS_end-MATERIALS_begin-4
FileSetPos   MATERIALS_end
End Function
;-------------------------------------------------
Function WriteGLSMat(surf)
;Begin
FileInt   $5001   ;MAT Chunk
MAT_begin=FileGetPos()
FileInt   0   ;TmpSize
;Name
FileInt      $5002
FileInt      Len(SurfaceTextureName$(surf))+1
FileString   SurfaceTextureName$(surf)
;Red
FileInt      $5003
FileInt      4
FileFloat   1.0
;Green
FileInt      $5004
FileInt      4
FileFloat   1.0
;Blue
FileInt      $5005
FileInt      4
FileFloat   1.0
;Alpha
FileInt      $5006
FileInt      4
FileFloat   1.0
;Self Illumination
FileInt      $5007
FileInt      4
FileFloat   0.0
;Shininess
FileInt      $5008
FileInt      4
If (SurfaceTextureFlags(surf) And 4096)=4096 Then FileFloat 0.0 Else FileFloat SpecularPower()/100.0
;FX
FileInt      $5009
FileInt      4
FileInt      1
;Blend
FileInt      $500A
FileInt      4
FileInt      1
;Light method
FileInt      $500B
FileInt      1
If  (SurfaceTextureFlags(surf) And 2)=2 Or (SurfaceTextureFlags(surf) And 2048)=2048
   FileByte 0
Else
   FileByte 2
   ;Lightmap
   FileInt      $500C
   FileInt      2
   FileShort   1
End If
;Tex layer
FileInt      $5012
FileInt      3
FileByte   0
FileShort   surf-1
;Size
MAT_end=FileGetPos()
FileSetPos   MAT_begin
FileInt   MAT_end-MAT_begin-4
FileSetPos   MAT_end
End Function
;-------------------------------------------------
Function WriteGLSModels()
;Begin
FileInt   $1000      ;MODELS Chunk
MODELS_begin=FileGetPos()
FileInt   0      ;TmpSize
;Write mesh
WriteGLSMap
;Write all the entities
For c=1 To MapEntities()
   WriteGLSEntity c
Next
;Size
MODELS_end=FileGetPos()
FileSetPos   MODELS_begin
FileInt   MODELS_end-MODELS_begin-4
FileSetPos   MODELS_end
End Function
;-------------------------------------------------
Function WriteGLSMap()
;Begin
FileInt   $1001      ;MODEL Chunk
MODEL_begin=FileGetPos()
FileInt   0      ;TmpSize
;Name
FileInt   $1002   ;MODEL_NAME Chunk
FileInt   Len(MapProperties$())+1
FileString   MapProperties$()
;Position
FileInt   $1003   ;MODEL_POSITION Chunk
FileInt   12
FileFloat   0
FileFloat   0
FileFloat   0
;Rotation
FileInt   $1004   ;MODEL_ROTATION Chunk
FileInt   12
FileFloat   0
FileFloat   0
FileFloat   0
;Scale
FileInt   $1005   ;MODEL_SCALE Chunk
FileInt   12
FileFloat   1.0
FileFloat   1.0
FileFloat   1.0
;Custom props
FileInt   $1006   ;CUSTOM_PROPS Chunk
FileInt   1
FileByte   0
;Hidden
FileInt   $1008   ;HIDDEN Chunk
FileInt   1
FileByte   0
WriteGLSMesh
;Size
MODEL_end=FileGetPos()
FileSetPos   MODEL_begin
FileInt   MODEL_end-MODEL_begin-4
FileSetPos   MODEL_end
End Function
;-------------------------------------------------
Function WriteGLSEntity(model)
;Begin
FileInt   $1001      ;MODEL Chunk
MODEL_begin=FileGetPos()
FileInt   0      ;TmpSize
;Name
FileInt   $1002   ;MODEL_NAME Chunk
FileInt   Len(MapEntityProperties$(model))+1
FileString   MapEntityProperties$(model)
;Position
FileInt   $1003   ;MODEL_POSITION Chunk
FileInt   12
FileFloat   MapEntityX#(model)
FileFloat   MapEntityY#(model)
FileFloat   MapEntityZ#(model)
;Rotation
FileInt   $1004   ;MODEL_ROTATION Chunk
FileInt   12
FileFloat   0
FileFloat   0
FileFloat   0
;Scale
FileInt   $1005   ;MODEL_SCALE Chunk
FileInt   12
FileFloat   1.0
FileFloat   1.0
FileFloat   1.0
;Custom props
FileInt   $1006   ;CUSTOM_PROPS Chunk
FileInt   1
FileByte   0
;Hidden
FileInt   $1008   ;HIDDEN Chunk
FileInt   1
FileByte   0
If MapEntityProperty$(model, "classname")="light"
   WriteGLSLight   model
Else
   WriteGLSPivot   model
End If
;Size
MODEL_end=FileGetPos()
FileSetPos   MODEL_begin
FileInt   MODEL_end-MODEL_begin-4
FileSetPos   MODEL_end
End Function
;-------------------------------------------------
Function WriteGLSMesh()
;Begin
FileInt   $2000      ;MESH Chunk
MESH_begin=FileGetPos()
FileInt   0      ;TmpSize
;OVERRIDE
FileInt   $2001
FileInt   1
FileByte   0
;BACKLIGHT
FileInt   $2002
FileInt   1
FileByte   0
;RECEIVESHADOW
FileInt   $2003
FileInt   1
FileByte   1
;CASTSHADOW
FileInt   $2004
FileInt   1
FileByte   1
;RECEIVEGI
FileInt   $2005
FileInt   1
FileByte   1
;AFFECTGI
FileInt   $2006
FileInt   1
FileByte   1
;Write mesh surfaces
WriteGLSSurfaces
;Size
MESH_end=FileGetPos()
FileSetPos   MESH_begin
FileInt   MESH_end-MESH_begin-4
FileSetPos   MESH_end
End Function
;-------------------------------------------------
Function WriteGLSSurfaces()
;Begin
FileInt   $2100      ;MESH_SURFACES Chunk
MESH_SURFACES_begin=FileGetPos()
FileInt   0      ;TmpSize
For c=1 To MapSurfaces()
   WriteGLSSurf  c
Next
;Size
MESH_SURFACES_end=FileGetPos()
FileSetPos   MESH_SURFACES_begin
FileInt   MESH_SURFACES_end-MESH_SURFACES_begin-4
FileSetPos   MESH_SURFACES_end
End Function
;-------------------------------------------------
Function WriteGLSSurf(surf)
;Begin
FileInt   $2101      ;MESH_SURF Chunk
MESH_SURF_begin=FileGetPos()
FileInt   0      ;TmpSize
;Number of vertices
FileInt   $2102   ;MESH_SURFVERTS Chunk
FileInt   2
FileShort   SurfaceVertices(surf)
;Number of polygons
FileInt   $2103   ;MESH_SURFPOLYS Chunk
FileInt   2
FileShort   SurfaceTriangles(surf)
;Material index
FileInt   $2104   ;MESH_SURFMATERIAL Chunk
FileInt   4
FileInt   surf-1
;Vertex format
FileInt   $2105   ;MESH_SURFVERTFORMAT Chunk
FileInt   4
FileInt   1+16
;Vertex data
FileInt   $2106   ;MESH_SURFVERTDATA Chunk
FileInt   32
For c=0 To SurfaceVertices(surf)-1
   FileFloat   SurfaceVertexX#(surf,c)
   FileFloat   SurfaceVertexY#(surf,c)
   FileFloat   SurfaceVertexZ#(surf,c)
   FileFloat   SurfaceVertexNX#(surf,c)
   FileFloat   SurfaceVertexNY#(surf,c)
   FileFloat   SurfaceVertexNZ#(surf,c)
   FileFloat   SurfaceVertexU#(surf,c,0)
   FileFloat   SurfaceVertexV#(surf,c,0)
Next
;Poly data
FileInt   $2107      ;MESH_SURFPOLYDATA Chunk
FileInt   6
For c=0 To SurfaceTriangles(surf)-1
   FileShort   SurfaceTriangle(surf,c,0)
   FileShort   SurfaceTriangle(surf,c,1)
   FileShort   SurfaceTriangle(surf,c,2)
Next
;Size
MESH_SURF_end=FileGetPos()
FileSetPos   MESH_SURF_begin
FileInt   MESH_SURF_end-MESH_SURF_begin-4
FileSetPos   MESH_SURF_end
End Function
;-------------------------------------------------
Function WriteGLSPivot(pivot)
FileInt   $3000
FileInt   0
End Function
;-------------------------------------------------
Function WriteGLSLight(light)
;Begin
FileInt   $4000
LIGHT_begin=FileGetPos()
FileInt   0      ;TmpSize
;LIGHT_TYPE
FileInt      $4001
FileInt      1
FileByte   2
;LIGHT_ACTIVE
;FileInt   $4002
;FileInt   1
;FileByte   1
;LIGHT_CASTSHADOWS
;FileInt   $4003
;FileInt   1
;FileByte   1
;LIGHT_INFINITE
FileInt      $4004
FileInt      1
FileByte   0   ;Not infinite
;RED
FileInt   $4007
FileInt   4
FileFloat   Float#(StringField$(MapEntityProperty$(light,"_light"),1))/255.0
;GREEN
FileInt   $4008
FileInt   4
FileFloat   Float#(StringField$(MapEntityProperty$(light,"_light"),2))/255.0
;BLUE
FileInt   $4009
FileInt   4
FileFloat   Float#(StringField$(MapEntityProperty$(light,"_light"),3))/255.0
;INTENSITY
FileInt   $400A
FileInt   4
FileFloat   Float#(StringField$(MapEntityProperty$(light,"_light"),4)) * lightIntensity#
;LIGHT_NEAR
;FileInt   $400B
;FileInt   4
;FileFloat   0
;LIGHT_FAR
FileInt   $400C
FileInt   4
FileFloat   Float#(StringField$(MapEntityProperty$(light,"_light"),4))*2
;LIGHT_TOON
FileInt      $400F
FileInt      1
FileByte   lightToon
;LIGHT_TOON_SHADES
FileInt      $4010
FileInt      1
FileByte   lightToonShades
;Size
LIGHT_end=FileGetPos()
FileSetPos   LIGHT_begin
FileInt   LIGHT_end-LIGHT_begin-4
FileSetPos   LIGHT_end
End Function
 Save this file as gls.export in the Plugins folder of BSP Factory (only works with the full version).
 
 
 |