Initial commit
This commit is contained in:
98
Torque/SDK/example/common/client/cursor.cs
Normal file
98
Torque/SDK/example/common/client/cursor.cs
Normal file
@@ -0,0 +1,98 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// Torque Game Engine
|
||||
// Copyright (C) GarageGames.com, 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 == 0)
|
||||
{
|
||||
%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, %layer)
|
||||
{
|
||||
Parent::pushDialog(%this, %ctrl, %layer);
|
||||
%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);
|
||||
Reference in New Issue
Block a user