Okay, well - I seem to have another problem then...
I believe it's connected to Global Types. I think I'm not declaring the Type as global properly so that when I come to populate it within the function, the main program doesn't record the instance...
My function is:
Function Loadship(shipname$,scale#,pitch,yaw,roll,shininess#,alpha#,x,y,z)
Decal=OpenFile("Visual\3D\Ships"+shipname$+"\Decals.DAT")
Dim a(24)
For f=1 To 24
temp=ReadInt(Decal)
a(f)=temp
Next
CloseFile(Decal)
LoadDecal.Shiplights = New shiplights
LoadDecal\FS_Sprite=CopyEntity (LightSprite)
LoadDecal\FS_x=a(1)
LoadDecal\FS_y=a(2)
LoadDecal\FS_z=a(3)
LoadDecal\FP_Sprite=CopyEntity (LightSprite)
LoadDecal\FP_x=a(4)
LoadDecal\FP_y=a(5)
LoadDecal\FP_z=a(6)
LoadDecal\U_Sprite=CopyEntity (LightSprite)
LoadDecal\U_x=a(7)
LoadDecal\U_y=a(8)
LoadDecal\U_z=a(9)
LoadDecal\T_Sprite=CopyEntity (LightSprite)
LoadDecal\T_x=a(10)
LoadDecal\T_y=a(11)
LoadDecal\T_z=a(12)
LoadDecal\AP_Sprite=LoadSprite("Visual\3D\Ships"+shipname$+"\Aerial Port.bmp")
LoadDecal\AP_x=a(13)
LoadDecal\AP_y=a(14)
LoadDecal\AP_z=a(15)
ScaleSprite LoadDecal\AP_Sprite,(scale#/10),(scale#/10)
LoadDecal\AS_Sprite=LoadSprite("Visual\3D\Ships"+shipname$+"\Aerial Starboard.bmp")
LoadDecal\AS_x=a(16)
LoadDecal\AS_y=a(17)
LoadDecal\AS_z=a(18)
ScaleSprite LoadDecal\AS_Sprite,(scale#/10),(scale#/10)
LoadDecal\AT_Sprite=LoadSprite("Visual\3D\Ships"+shipname$+"\Aerial Top.bmp")
LoadDecal\AT_x=a(19)
LoadDecal\AT_y=a(20)
LoadDecal\AT_z=a(21)
ScaleSprite LoadDecal\AT_Sprite,(scale#/10),(scale#/10)
LoadDecal\H_Sprite=CopyEntity (LightSprite)
LoadDecal\H_x=a(22)
LoadDecal\H_y=a(23)
LoadDecal\H_z=a(24)
logfile("GRAPHICS: POPULATED DECAL TABLE")
mesh=LoadMesh("Visual\3D\Ships"+shipname$+"\Mesh.x")
logfile("GRAPHICS: LOADED MESH "+mesh)
texture=LoadTexture("Visual\3D\Ships"+shipname$+"\Texture.bmp")
logfile("GRAPHICS: LOADED TEXTURE "+texture)
ScaleMesh mesh,scale#,scale#,scale#
logfile("GRAPHICS: SCALED MESH")
EntityTexture mesh,texture
logfile("GRAPHICS: PAINTED MESH WITH TEXTURE")
temp=texture
FreeTexture texture
logfile("GRAPHICS: TEXTURE "+temp+" FREED")
EntityShininess mesh,shininess#
logfile("GRAPHICS: ADDED LIGHT REFLECTION TO MESH "+mesh)
EntityAlpha mesh,alpha#
logfile("GRAPHICS: SET TRANSPARENCY LEVEL TO MESH "+mesh)
EntityType mesh,1
PositionEntity mesh,x,y,z,1
logfile("GRAPHICS: POSITIONED MESH "+mesh+ "AT X:"+x+" Y:"+y+" Z:"+z)
PositionEntity LoadDecal\FS_Sprite,x,y,z
PositionEntity LoadDecal\FP_Sprite,x,y,z
PositionEntity LoadDecal\AP_Sprite,x,y,z
PositionEntity LoadDecal\AS_Sprite,x,y,z
PositionEntity LoadDecal\AT_Sprite,x,y,z
PositionEntity LoadDecal\U_Sprite,x,y,z
PositionEntity LoadDecal\T_Sprite,x,y,z
PositionEntity LoadDecal\H_Sprite,x,y,z
MoveEntity LoadDecal\FS_Sprite,(FS_x*scale#),(FS_y*scale#),(FS_z*scale#)
EntityParent LoadDecal\FS_Sprite,mesh,1
MoveEntity LoadDecal\FP_Sprite,(FP_x*scale#),(FP_y*scale#),(FP_z*scale#)
EntityParent LoadDecal\FP_Sprite,mesh,1
MoveEntity LoadDecal\U_Sprite,(U_x*scale#),(U_y*scale#),(U_z*scale#)
EntityParent LoadDecal\U_Sprite,mesh,1
MoveEntity LoadDecal\T_Sprite,(T_x*scale#),(T_y*scale#),(T_z*scale#)
EntityParent LoadDecal\T_Sprite,mesh,1
MoveEntity LoadDecal\AP_Sprite,(AP_x*scale#),(AP_y*scale#),(AP_z*scale#)
EntityParent LoadDecal\AP_Sprite,mesh,1
MoveEntity LoadDecal\AS_Sprite,(AS_x*scale#),(AS_y*scale#),(AS_z*scale#)
EntityParent LoadDecal\AS_Sprite,mesh,1
MoveEntity LoadDecal\AT_Sprite,(AT_x*scale#),(AT_y*scale#),(AT_z*scale#)
EntityParent LoadDecal\AT_Sprite,mesh,1
MoveEntity LoadDecal\H_Sprite,(H_x*scale#),(H_y*scale#),(H_z*scale#)
EntityParent LoadDecal\H_Sprite,mesh,1
logfile("GRAPHICS: PLACED DECALS RELATIVE TO "+(H_x*scale#)+" , "+(H_y*scale#)+" , "+(H_z*scale#))
RotateEntity mesh,pitch,yaw,roll
logfile ("GRAPHICS: SET MESH "+mesh+" FACING P:"+pitch+" Y: "+yaw+" R:"+roll)
Return mesh
End Function
and my Type declaration goes very simply like this:
Global ShipLights
Type ShipLights
Field FS_Sprite
Field FS_x
Field FS_y
Field FS_z
Field FP_Sprite
Field FP_x
Field FP_y
Field FP_z
Field U_Sprite
Field U_x
Field U_y
Field U_z
Field T_Sprite
Field T_x
Field T_y
Field T_z
Field AP_Sprite
Field AP_x
Field AP_y
Field AP_z
Field AS_Sprite
Field AS_x
Field AS_y
Field AS_z
Field AT_Sprite
Field AT_x
Field AT_y
Field AT_z
Field H_Sprite
Field H_x
Field H_y
Field H_z
End Type