I wouldn't say "extensively" but I use it in the prototype I am making and it holds his own. I haven't used the included remote debugger in a while but I remember that it worked ok most of the time (if I recall it sometimes didn't break into the scripts) but other than that, pretty cool.
Here's an actual "location" script sample from my game. The location is comprised of 2 zones and you go from one to the other via walking into (one of two) hotspots. When you go into another zone, the game fades out, switches cameras and lights and fades in.
I also set up callback hooks for when the cursor hovers over walkable terrain or these hotspots. See if you can spot all this in the script:
print("Location started\n");
this.Opaque.GfxObj =
{
startScale = { x=100.0/64, y=100.0/64, z=100.0/64 }
};
this.Opaque.setMesh( "Glorious1.DBO" );
this.Walkable.setMesh( "floorgrid.X" );
this.Walkable.onHover = function( object )
{
// Set to walk pointer if it's normal pointer
if ( GameMouse_getPointerType() == 1 )
{
GameMouse_setPointerType( 2 );
}
};
this.Walkable.setCallBackMouseHover( this.Walkable.onHover );
this.SetZone1 = function( object )
{
cam = this.Camera( "MainCamera" );
cam.setObjectId( 0 );
// cam.setPosition( 2.0f, 2.0f, -7.0f );
// cam.setFacing( -2.0f, -0.0f, 5.0f );
cam.setPosition( 0.0f, 2.0f, -7.0f );
cam.setFacing( 0.0f, 0.0f, 7.0f );
// Lights
lig = this.Light( "MainLight" );
lig.setObjectId( 0 );
lig.setType( LightObjType.POINT );
lig.setPosition( 0.0f, 3.0f, -0.5f );
lig.setRange( 10.0f );
lig.setColour( 200, 200, 50 );
lig.setEnabled( 1 );
this.HotSpot( "HotSpot1" ).setEnabled( 1 );
this.HotSpot( "HotSpot2" ).setEnabled( 0 );
};
this.SetZone2 = function( object )
{
cam = this.Camera( "MainCamera" );
cam.setObjectId( 0 );
cam.setPosition( -2.0f, 0.5f, 7.0f );
cam.setFacing( +2.0f, +1.5f, -7.0f );
// Lights
lig = this.Light( "MainLight" );
lig.setObjectId( 0 );
lig.setType( LightObjType.POINT );
lig.setPosition( -4.0f, 0.5f, 7.0f );
lig.setRange( 10.0f );
lig.setColour( 50, 50, 150 );
lig.setEnabled( 1 );
this.HotSpot( "HotSpot1" ).setEnabled( 0 );
this.HotSpot( "HotSpot2" ).setEnabled( 1 );
};
// Hotspots
hs = this.HotSpot( "HotSpot1" );
hs.onCollide = function( object )
{
print("Collided w/ HotSpot1 started\n");
this.setEnabled( 0 );
UIServer_fadeOut( 0.5f );
while( UIServer_getFadeStatus() == FadeStatus.FADING_OUT )
{
yield();
};
EGO.setPosition( 0.0f, 0.0f, 1.0f );
EGO.walkToPosition( 0.0f, 0.0f, 1.5f );
Location().SetZone2();
UIServer_fadeIn( 0.25f );
print("Collided w/ HotSpot1 ended\n");
};
hs.onHover = function( object )
{
// Set to use pointer
GameMouse_setPointerType( 3 );
};
hs.onClick = function( object )
{
EGO.walkToPosition( 0.0f, 0.0f, 0.0f );
};
hs.setPosition( -0.5f, 0.0f, -0.25f, 0.5f, 2.0f, 0.0f );
hs.setCallBackCollision( hs.onCollide, "Zombie" );
hs.setCallBackMouseHover( hs.onHover );
hs.setCallBackMouseClick( hs.onClick );
hs = this.HotSpot( "HotSpot2" );
hs.onCollide = function( object )
{
print("Collided w/ HotSpot2 started\n");
this.setEnabled( 0 );
UIServer_fadeOut( 0.5f );
while( UIServer_getFadeStatus() == FadeStatus.FADING_OUT )
{
yield();
};
EGO.setPosition( 0.0f, 0.0f, -1.0f );
EGO.walkToPosition( 0.0f, 0.0f, -1.5f );
Location().SetZone1();
UIServer_fadeIn( 0.25f );
print("Collided w/ HotSpot2 ended\n");
};
hs.onHover = function( object )
{
// Set to use pointer
GameMouse_setPointerType( 3 );
};
hs.onClick = function( object )
{
EGO.walkToPosition( 0.0f, 0.0f, 0.5f );
};
hs.setPosition( -0.5f, 0.0f, 0.0f, 0.5f, 2.0f, 0.5f );
hs.setCallBackCollision( hs.onCollide, "Zombie" );
hs.setCallBackMouseHover( hs.onHover );
hs.setCallBackMouseClick( hs.onClick );
// Set to first camera
this.SetZone1();
print("Location done\n");
I have vague plans for World Domination