100 lines
2.7 KiB
C#
100 lines
2.7 KiB
C#
//-----------------------------------------------------------------------------
|
|
// Torque Game Engine
|
|
//
|
|
// Copyright (c) 2001 GarageGames.Com
|
|
// Portions Copyright (c) 2001 by Sierra Online, Inc.
|
|
//-----------------------------------------------------------------------------
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Cursor Control
|
|
//------------------------------------------------------------------------------
|
|
|
|
$cursorControlled = true;
|
|
|
|
function cursorOff()
|
|
{
|
|
if ( $cursorControlled )
|
|
lockMouse(true);
|
|
Canvas.cursorOff();
|
|
}
|
|
|
|
function cursorOn()
|
|
{
|
|
if ( $cursorControlled )
|
|
lockMouse(false);
|
|
Canvas.cursorOn();
|
|
Canvas.setCursor(DefaultCursor);
|
|
}
|
|
|
|
// In the CanvasCursor package we add some additional functionality to the
|
|
// built-in GuiCanvas class, of which the global Canvas object is an instance.
|
|
// In this case, the behavior we want is for the cursor to automatically display,
|
|
// except when the only guis visible want no cursor - most notably,
|
|
// in the case of the example, the play gui.
|
|
// In order to override or extend an existing class, we use the script package
|
|
// feature.
|
|
|
|
package CanvasCursor
|
|
{
|
|
|
|
// The checkCursor method iterates through all the root controls on the canvas
|
|
// (basically the content control and any visible dialogs). If all of them
|
|
// have the .noCursor attribute set, the cursor is turned off, otherwise it is
|
|
// turned on.
|
|
|
|
function GuiCanvas::checkCursor(%this)
|
|
{
|
|
%cursorShouldBeOn = false;
|
|
for(%i = 0; %i < %this.getCount(); %i++)
|
|
{
|
|
%control = %this.getObject(%i);
|
|
if(%control.noCursor $= "")
|
|
{
|
|
%cursorShouldBeOn = true;
|
|
break;
|
|
}
|
|
}
|
|
if(%cursorShouldBeOn != %this.isCursorOn())
|
|
{
|
|
if(%cursorShouldBeOn)
|
|
cursorOn();
|
|
else
|
|
cursorOff();
|
|
}
|
|
}
|
|
|
|
// below, all functions which can alter which content controls are visible
|
|
// are extended to call the checkCursor function. For package'd functions,
|
|
// the Parent:: call refers to the original implementation of that function,
|
|
// or a version that was declared in a previously activated package.
|
|
// In this case the parent calls should point to the built in versions
|
|
// of GuiCanvas functions.
|
|
|
|
function GuiCanvas::setContent(%this, %ctrl)
|
|
{
|
|
Parent::setContent(%this, %ctrl);
|
|
%this.checkCursor();
|
|
}
|
|
|
|
function GuiCanvas::pushDialog(%this, %ctrl)
|
|
{
|
|
Parent::pushDialog(%this, %ctrl);
|
|
%this.checkCursor();
|
|
}
|
|
|
|
function GuiCanvas::popDialog(%this, %ctrl)
|
|
{
|
|
Parent::popDialog(%this, %ctrl);
|
|
%this.checkCursor();
|
|
}
|
|
|
|
function GuiCanvas::popLayer(%this, %layer)
|
|
{
|
|
Parent::popLayer(%this, %layer);
|
|
%this.checkCursor();
|
|
}
|
|
|
|
};
|
|
|
|
// activate the package when the script loads.
|
|
activatePackage(CanvasCursor); |