When im creating object, they are all sent via the same function which creates them, then adds them to the dim like so
SetupAddNew: Type ObjectDataType
Name$ As String
Type$ As String
ObjNum As Integer
EndType
Dim ObjectData(0) As ObjectDataType
Return
Function AddObject(TYPEorFILE$)
` Creating A New Plain Object
If TYPEorFILE$ = "PLAIN"
n = Array Count(ObjectData()) : Add To Stack ObjectData()
ObjectData(n).Name$ = GetFreeName("PLAIN")
ObjectData(n).Type$ = TYPEorFILE$
ObjectData(n).ObjNum = Find Free Object()
Make Object Plain ObjectData(n).ObjNum,10,10
Position Object ObjectData(n).ObjNum,Camera Position X(0),Camera Position Y(0),Camera Position Z(0)
Rotate Object ObjectData(n).ObjNum,Camera Angle X(0),Camera Angle Y(0),Camera Angle Z(0)
Move Object ObjectData(n).ObjNum,20
ExitFunction n : EndIf
` Creating A New Box Object
If TYPEorFILE$ = "BOX"
n = Array Count(ObjectData()) : Add To Stack ObjectData()
ObjectData(n).Name$ = GetFreeName(TYPEorFILE$)
ObjectData(n).Type$ = TYPEorFILE$
ObjectData(n).ObjNum = Find Free Object()
Make Object Box ObjectData(n).ObjNum,10,10,10
Position Object ObjectData(n).ObjNum,Camera Position X(0),Camera Position Y(0),Camera Position Z(0)
Rotate Object ObjectData(n).ObjNum,Camera Angle X(0),Camera Angle Y(0),Camera Angle Z(0)
Move Object ObjectData(n).ObjNum,20
ExitFunction n : EndIf
` Creating A New Sphere Object
If TYPEorFILE$ = "SPHERE"
n = Array Count(ObjectData()) : Add To Stack ObjectData()
ObjectData(n).Name$ = GetFreeName(TYPEorFILE$)
ObjectData(n).Type$ = TYPEorFILE$
ObjectData(n).ObjNum = Find Free Object()
Make Object Sphere ObjectData(n).ObjNum,10
Position Object ObjectData(n).ObjNum,Camera Position X(0),Camera Position Y(0),Camera Position Z(0)
Rotate Object ObjectData(n).ObjNum,Camera Angle X(0),Camera Angle Y(0),Camera Angle Z(0)
Move Object ObjectData(n).ObjNum,20
ExitFunction n : EndIf
` Creating A New Cylinder Object
If TYPEorFILE$ = "CYLINDER"
n = Array Count(ObjectData()) : Add To Stack ObjectData()
ObjectData(n).Name$ = GetFreeName(TYPEorFILE$)
ObjectData(n).Type$ = TYPEorFILE$
ObjectData(n).ObjNum = Find Free Object()
Make Object Cylinder ObjectData(n).ObjNum,10
Position Object ObjectData(n).ObjNum,Camera Position X(0),Camera Position Y(0),Camera Position Z(0)
Rotate Object ObjectData(n).ObjNum,Camera Angle X(0),Camera Angle Y(0),Camera Angle Z(0)
Move Object ObjectData(n).ObjNum,20
ExitFunction n : EndIf
` Creating A New Cone Object
If TYPEorFILE$ = "CONE"
n = Array Count(ObjectData()) : Add To Stack ObjectData()
ObjectData(n).Name$ = GetFreeName(TYPEorFILE$)
ObjectData(n).Type$ = TYPEorFILE$
ObjectData(n).ObjNum = Find Free Object()
Make Object Cone ObjectData(n).ObjNum,10
Position Object ObjectData(n).ObjNum,Camera Position X(0),Camera Position Y(0),Camera Position Z(0)
Rotate Object ObjectData(n).ObjNum,Camera Angle X(0),Camera Angle Y(0),Camera Angle Z(0)
Move Object ObjectData(n).ObjNum,20
ExitFunction n : EndIf
` Creating A New Triangle Object
If TYPEorFILE$ = "TRIANGLE"
n = Array Count(ObjectData()) : Add To Stack ObjectData()
ObjectData(n).Name$ = GetFreeName(TYPEorFILE$)
ObjectData(n).Type$ = TYPEorFILE$
ObjectData(n).ObjNum = Find Free Object()
Make Object Triangle ObjectData(n).ObjNum,0,0,0,1,1,1,0,0,0
Position Object ObjectData(n).ObjNum,Camera Position X(0),Camera Position Y(0),Camera Position Z(0)
Rotate Object ObjectData(n).ObjNum,Camera Angle X(0),Camera Angle Y(0),Camera Angle Z(0)
Move Object ObjectData(n).ObjNum,20
ExitFunction n : EndIf
EndFunction 0
Function GetFreeName(Type$)
v = 1
For n = 1 to Array Count(ObjectData())
If Fast Left$(ObjectData(n).Name$,Fast Len(Type$)) Then Inc v,1
Next n : RV$ = Type$+Str$(v)
EndFunction RV$
I need too add a Load Object Section in this function and enable Object Culling to increase FPS, and tidy up the dim so it searches for an empty space first so it doesn't create a new dim space unless it needs to.
Everyone Be Cool, You, Be Cool.