GET STATIC COLLISION HIT This command will return a value of one if the specified moving bound box intersects with any invisible collision box in the stativ universe scene.
Syntax
    Return Integer=GET STATIC COLLISION HIT(OX1, OY1, OZ1, OX2, OY2, OZ2, NX1, NY1, NZ1, NX2, NY2, NZ2)
Parameters
    OX1
Float The X coordinate of the bottom/left/back corner of the start location of a moving 3D boundbox
    OY1
Float The Y coordinate of the bottom/left/back corner of the start location of a moving 3D boundbox
    OZ1
Float The Z coordinate of the bottom/left/back corner of the start location of a moving 3D boundbox
    OX2
Float The X coordinate of the top/right/front corner of the start location of a moving 3D boundbox
    OY2
Float The Y coordinate of the top/right/front corner of the start location of a moving 3D boundbox
    OZ2
Float The Z coordinate of the top/right/front corner of the start location of a moving 3D boundbox
    NX1
Float The X coordinate of the bottom/left/back corner of the end location of a moving 3D boundbox
    NY1
Float The Y coordinate of the bottom/left/back corner of the end location of a moving 3D boundbox
    NZ1
Float The Z coordinate of the bottom/left/back corner of the end location of a moving 3D boundbox
    NX2
Float The X coordinate of the top/right/front corner of the end location of a moving 3D boundbox
    NY2
Float The Y coordinate of the top/right/front corner of the end location of a moving 3D boundbox
    NZ2
Float The Z coordinate of the top/right/front corner of the end location of a moving 3D boundbox
Returns
A value of one denotes a collision has occured between the start and end locations of the moving 3D boundbox against one of the invisible collision boxes of the static universe
Example Code
    cls 0 : ink rgb(255,255,255),0 : circle 16,16,14

    scorchimage=1 : 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=1 : 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 then sx=1000 : sz=50 : px=500 : pz=0

      if w=2 then sx=1000 : sz=50 : px=500 : pz=1000

      if w=3 then sx=50 : sz=1000 : px=0 : pz=500

      if w=4 then sx=50 : sz=1000 : px=1000 : pz=500

      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 then make directory lightmapsavepath$

     create light maps texturesize,texturequality,lightmapsavepath$

     if file exist(tfile$)=1 then delete file tfile$

     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

    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

    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$()="-" then set static portals on

     if inkey$()="=" then set static portals off

     if inkey$()="[" then set static objects wireframe on

     if inkey$()="]" then set static objects wireframe off

     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 then position object d,x#,y#-5,z#

     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 then grav#=grav#*-0.95

     endif

     sync

    endwhile

    set global shadows off : detach object from static d : delete static objects

    end
See also
GAMEFX Commands Menu Index