There seems to be a lot of questions concerning the GameFX functions as of late. So, I have re-structured the GameFX source from the help file to make it easier to follow. I’m not trying to push structured code down anyone’s throat. But, it helps when debugging or trying to make sense of someone else’s code.
I believe Delete Static Objects; will delete the Static Collision Box’s along with the Static Objects. You can then load the Static Objects for the next level and add the collision box’s for that level.
scorchimage = 1
circle 16, 16, 14
get image scorchimage, 0, 0, 32, 32
set static universe 40*100, 21*100, 40*100
tfile$ = "universe.dbo"
if file exist(tfile$)=1
dividetexturesize = 0
load static objects tfile$, dividetexturesize
omax = 1
else
collision = 2
Arbitraryvalue = 0
shadow = 0
portal = 1
o = 1
for x=0 to 10
for z=0 to 10
make object box o, 100, 5, 100
position object o, x*100, 2.5, z*100
make static object o, collision, Arbitraryvalue, shadow, portal
inc o
if x=6 and z=6
make object cube o, 25
make mesh from object 1, o
position object o, x*100, -10, z*100
for l=1 to 15
add limb o, l, 1
offset limb o, l, 0, l*28, 0
make static limb o, l, collision, Arbitraryvalue, shadow, portal
next l
inc o
endif
next z
next x
for w=1 to 4
if w = 1
sx = 1000
sz = 50
px = 500
pz = 0
endif
if w=2
sx = 1000
sz = 50
px = 500
pz = 1000
endif
if w=3
sx = 50
sz = 1000
px = 0
pz = 500
endif
if w=4
sx = 50
sz = 1000
px = 1000
pz = 500
endif
make object box o, sx, 200, sz
position object o, px, 100, pz
make static object o, collision, Arbitraryvalue, shadow, portal
inc o
next w
for er=12 to 33
delete static object er
next er
build static portals
delete light map lights
add static objects to light map pool
make object cube o, 100
position object o, 600, 75, 400
add object to light map pool o
make mesh from object 3, o
add limb o, 1, 3
offset limb o, 1, 0, 0, -125
add limb to light map pool o, 1
inc o
add light map light 400, 90, 800, 500, 255, 0, 0, 50, 1
add light map light 200, 90, 400, 500, 0, 255, 0, 50, 1
add light map light 800, 90, 200, 500, 0, 0, 255, 50, 1
texturesize = 16
texturequality = 1
lightmapsavepath$ = "lightmaps"
if path exist(lightmapsavepath$)=0
make directory lightmapsavepath$
endif
create light maps texturesize, texturequality, lightmapsavepath$
save static objects tfile$
omax = o
for i=1 to omax-1
delete object i
next i
endif
set static scorch scorchimage, 1, 1
d = omax
make object cone d, 100
make mesh from object 2, d
add limb d, 1, 2
rotate limb d, 1, 90, 0, 0
offset limb d, 1, 0, 0, 50
scale limb d, 1, 30, 100, 30
position object d, 500, 150, 600
color object d, rgb(255, 255, 0)
yrotate object d, 0
attach object to static d
make object cube d+1, 50
position object d+1, 700, 200, 500
make object box d+2, 100, 100, 20
make object box d+3, 80, 80, 40
perform csg difference d+2, d+3
position object d+3, 100, 150, 925
position object d+2, 100, 50, 925
make object box d+4, 100, 100, 20
make object box d+5, 80, 80, 40
perform csg union d+4, d+5
position object d+5, 300, 150, 925
position object d+4,300,50,925
make object box d+6, 100, 100, 20
make object box d+7, 80, 80, 40
perform csg intersection d+6, d+7
position object d+7, 500, 150, 925
position object d+6, 500, 50, 925
make object box d+8, 100, 100, 20
make object box d+9, 80, 80, 40
perform csg clip d+8, d+9
position object d+9, 700, 150, 925
position object d+8, 700, 50, 925
make object sphere d+11, 75, 30, 30
make mesh from object d+11, d+11
reduce mesh d+11, 0, 0, 10, 5, 10
delete object d+11
make object d+11, d+11, 0
position object d+11, 900, 150, 925
make object box d+10, 100, 100, 20
make mesh from object d+10, d+10
lock vertexdata for mesh d+10
perform csg difference on vertexdata d+11
perform csg union on vertexdata d+11
perform csg intersection on vertexdata d+11
unlock vertexdata
delete object d+10
make object d+10, d+10, 0
position object d+10, 900, 50, 925
if shadow=1
set global shadows on
set global shadow shades 1
set global shadow color 0, 0, 0, 64
set shadow light 1, 300, 500, 700, 2000
set shadow position -1, 300, 500, 700
for i=0 to 11
set shadow shading on d+i
next i
endif
position camera 300, 50, 300
point camera 500, 50, 500
set point light 0, 500, 300, 500
set ambient light 20
set normalization on
sync on
sync rate 60
while mouseclick()=0
if inkey$()="-"
set static portals on
endif
if inkey$()="="
set static portals off
endif
if inkey$()="["
set static objects wireframe on
endif
if inkey$()="]"
set static objects wireframe off
endif
control camera using arrowkeys 0, 2, 4
x# = object position x(d)
y# = object position y(d)
z# = object position z(d)
nx# = newxvalue(x#, object angle y(d), 75.0)
nz# = newzvalue(z#, object angle y(d), 75.0)
if static raycast(x#, y#, z#, nx#, y#, nz#)=0
yrotate object d, object angle y(d)+rnd(10)/100.0
move object d, 1
else
yrotate object d, object angle y(d)+1
add static scorch 25, 0
endif
if static volume(x#, y#, z#, x#, y#-5, z#,10)=0
position object d,x#,y#-5,z#
endif
if createdinvisiblefloor=0
make static collision box -100, -200, -100, 1100, 0, 1100
createdinvisiblefloor = 1
else
x# = object position x(d+1)
y# = object position y(d+1)
z# = object position z(d+1)
if get static collision hit(x#-25, y#-25, z#-25, x#+25, y#+25, z#+25, x#-25, y#-30, z#-25, x#+25, y#+20, z#+25)=0
y# = y#-grav#
inc grav#, 0.5
else
colArbitraryvalue = get static collision value()
colcount = get static collision count()
colfloor = get static collision floor()
x# = x#+get static collision x()
y# = y#+get static collision y()
z# = z#+get static collision z()
endif
position object d+1, x#, y#, z#
if static line of sight(x#, y#, z#, x#, y#-5, z#-1, 0.1, 0.1)=1
grav# = grav#*-0.95
endif
endif
sync
endwhile
set global shadows off
detach object from static d
delete static objects
end