|
|
@@ -1,601 +1,601 @@ |
|
|
//----------------------------------------------------------------------------- |
|
|
// Copyright (c) 2013 GarageGames, LLC |
|
|
// |
|
|
// Permission is hereby granted, free of charge, to any person obtaining a copy |
|
|
// of this software and associated documentation files (the "Software"), to |
|
|
// deal in the Software without restriction, including without limitation the |
|
|
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or |
|
|
// sell copies of the Software, and to permit persons to whom the Software is |
|
|
// furnished to do so, subject to the following conditions: |
|
|
// |
|
|
// The above copyright notice and this permission notice shall be included in |
|
|
// all copies or substantial portions of the Software. |
|
|
// |
|
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
|
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
|
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
|
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
|
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
|
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS |
|
|
// IN THE SOFTWARE. |
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
$toyAllCategoryIndex = 1; |
|
|
$defaultToySelected = false; |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function ToyCategorySelectList::onSelect(%this) |
|
|
{ |
|
|
// Fetch the index. |
|
|
%index = %this.currentToyCategory; |
|
|
|
|
|
$defaultToySelected = false; |
|
|
|
|
|
ToyListArray.initialize(%index); |
|
|
ToyListScroller.computeSizes(); |
|
|
ToyListScroller.scrollToTop(); |
|
|
|
|
|
// Unload the active toy. |
|
|
unloadToy(); |
|
|
|
|
|
// Flag as the default toy selected. |
|
|
if ($defaultToySelected) |
|
|
{ |
|
|
loadToy($defaultModuleID); |
|
|
} |
|
|
else |
|
|
{ |
|
|
if ( ToyListArray.getCount() > 0 ) |
|
|
{ |
|
|
%firstToyButton = ToyListArray.getObject(0); |
|
|
if (isObject(%firstToyButton)) |
|
|
%firstToyButton.performSelect(); |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function ToyCategorySelectList::initialize(%this) |
|
|
{ |
|
|
%this.toyCategories[$toyAllCategoryIndex] = "All"; |
|
|
%this.toyCategories[$toyAllCategoryIndex+1] = "Physics"; |
|
|
%this.toyCategories[$toyAllCategoryIndex+2] = "Features"; |
|
|
%this.toyCategories[$toyAllCategoryIndex+3] = "Stress Testing"; |
|
|
%this.toyCategories[$toyAllCategoryIndex+4] = "Fun and Games"; |
|
|
%this.toyCategories[$toyAllCategoryIndex+5] = "Custom"; |
|
|
%this.maxToyCategories = $toyAllCategoryIndex + 6; |
|
|
|
|
|
// Set the "All" category as the default. |
|
|
// NOTE: This is important to use so that the user-configurable default toy |
|
|
// can be selected at start-up. |
|
|
%this.currentToyCategory = $toyAllCategoryIndex; |
|
|
|
|
|
%this.setText("All"); |
|
|
%this.onSelect(); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function ToyCategorySelectList::nextCategory(%this) |
|
|
{ |
|
|
if (%this.currentToyCategory >= %this.maxToyCategories) |
|
|
return; |
|
|
|
|
|
%this.currentToyCategory++; |
|
|
|
|
|
%text = %this.toyCategories[%this.currentToyCategory]; |
|
|
%this.setText(%text); |
|
|
%this.onSelect(); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function ToyCategorySelectList::previousCategory(%this) |
|
|
{ |
|
|
if (%this.currentToyCategory <= $toyAllCategoryIndex) |
|
|
return; |
|
|
|
|
|
%this.currentToyCategory--; |
|
|
|
|
|
%text = %this.toyCategories[%this.currentToyCategory]; |
|
|
%this.setText(%text); |
|
|
%this.onSelect(); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function initializeToolbox() |
|
|
{ |
|
|
// Populate the stock colors. |
|
|
%colorCount = getStockColorCount(); |
|
|
for ( %i = 0; %i < %colorCount; %i++ ) |
|
|
{ |
|
|
// Fetch stock color name. |
|
|
%colorName = getStockColorName(%i); |
|
|
|
|
|
// Add to the list. |
|
|
BackgroundColorSelectList.add( getStockColorName(%i), %i ); |
|
|
|
|
|
// Select the color if it's the default one. |
|
|
if ( %colorName $= $pref::Sandbox::defaultBackgroundColor ) |
|
|
BackgroundColorSelectList.setSelected( %i ); |
|
|
} |
|
|
BackgroundColorSelectList.sort(); |
|
|
|
|
|
ToyCategorySelectList.initialize(); |
|
|
|
|
|
// Is this on the desktop? |
|
|
if ( $platform $= "windows" || $platform $= "macos" ) |
|
|
{ |
|
|
// Yes, so make the controls screen controls visible. |
|
|
ResolutionSelectLabel.Visible = true; |
|
|
ResolutionSelectList.Visible = true; |
|
|
FullscreenOptionLabel.Visible = true; |
|
|
FullscreenOptionButton.Visible = true; |
|
|
|
|
|
// Fetch the active resolution. |
|
|
%activeResolution = getRes(); |
|
|
%activeWidth = getWord(%activeResolution, 0); |
|
|
%activeHeight = getWord(%activeResolution, 1); |
|
|
%activeBpp = getWord(%activeResolution, 2); |
|
|
|
|
|
// Fetch the resolutions. |
|
|
%resolutionList = getResolutionList( $pref::Video::displayDevice ); |
|
|
%resolutionCount = getWordCount( %resolutionList ) / 3; |
|
|
%inputIndex = 0; |
|
|
%outputIndex = 0; |
|
|
for( %i = 0; %i < %resolutionCount; %i++ ) |
|
|
{ |
|
|
// Fetch the resolution entry. |
|
|
%width = getWord( %resolutionList, %inputIndex ); |
|
|
%height = getWord( %resolutionList, %inputIndex+1 ); |
|
|
%bpp = getWord( %resolutionList, %inputIndex+2 ); |
|
|
%inputIndex += 3; |
|
|
|
|
|
// Skip the 16-bit ones. |
|
|
if ( %bpp == 16 ) |
|
|
continue; |
|
|
|
|
|
// Store the resolution. |
|
|
$sandboxResolutions[%outputIndex] = %width SPC %height SPC %bpp; |
|
|
|
|
|
// Add to the list. |
|
|
ResolutionSelectList.add( %width @ "x" @ %height SPC "(" @ %bpp @ ")", %outputIndex ); |
|
|
|
|
|
// Select the resolution if it's the default one. |
|
|
if ( %width == %activeWidth && %height == %activeHeight && %bpp == %activeBpp ) |
|
|
ResolutionSelectList.setSelected( %outputIndex ); |
|
|
|
|
|
%outputIndex++; |
|
|
} |
|
|
} |
|
|
|
|
|
// Configure the main overlay. |
|
|
SandboxWindow.add(MainOverlay); |
|
|
%horizPosition = getWord(SandboxWindow.Extent, 0) - getWord(MainOverlay.Extent, 0); |
|
|
%verticalPosition = getWord(SandboxWindow.Extent, 1) - getWord(MainOverlay.Extent, 1); |
|
|
MainOverlay.position = %horizPosition SPC %verticalPosition; |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function toggleToolbox(%make) |
|
|
{ |
|
|
// Finish if being released. |
|
|
if ( !%make ) |
|
|
return; |
|
|
|
|
|
// Finish if the console is awake. |
|
|
if ( ConsoleDialog.isAwake() ) |
|
|
return; |
|
|
|
|
|
// Is the toolbox awake? |
|
|
if ( ToolboxDialog.isAwake() ) |
|
|
{ |
|
|
// Yes, so deactivate it. |
|
|
if ( $enableDirectInput ) |
|
|
activateKeyboard(); |
|
|
Canvas.popDialog(ToolboxDialog); |
|
|
MainOverlay.setVisible(1); |
|
|
return; |
|
|
} |
|
|
|
|
|
// Activate it. |
|
|
if ( $enableDirectInput ) |
|
|
deactivateKeyboard(); |
|
|
|
|
|
MainOverlay.setVisible(0); |
|
|
Canvas.pushDialog(ToolboxDialog); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function BackgroundColorSelectList::onSelect(%this) |
|
|
{ |
|
|
// Fetch the index. |
|
|
$activeBackgroundColor = %this.getSelected(); |
|
|
|
|
|
// Finish if the sandbox scene is not available. |
|
|
if ( !isObject(SandboxScene) ) |
|
|
return; |
|
|
|
|
|
// Set the scene color. |
|
|
Canvas.BackgroundColor = getStockColorName($activeBackgroundColor); |
|
|
Canvas.UseBackgroundColor = true; |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function ResolutionSelectList::onSelect(%this) |
|
|
{ |
|
|
// Finish if the sandbox scene is not available. |
|
|
if ( !isObject(SandboxScene) ) |
|
|
return; |
|
|
|
|
|
// Fetch the index. |
|
|
%index = %this.getSelected(); |
|
|
|
|
|
// Fetch resolution. |
|
|
%resolution = $sandboxResolutions[%index]; |
|
|
|
|
|
// Set the screen mode. |
|
|
setScreenMode( GetWord( %resolution , 0 ), GetWord( %resolution, 1 ), GetWord( %resolution, 2 ), $pref::Video::fullScreen ); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function PauseSceneModeButton::onClick(%this) |
|
|
{ |
|
|
// Sanity! |
|
|
if ( !isObject(SandboxScene) ) |
|
|
{ |
|
|
error( "Cannot pause/unpause the Sandbox scene as it does not exist." ); |
|
|
return; |
|
|
} |
|
|
|
|
|
// Toggle the scene pause. |
|
|
SandboxScene.setScenePause( !SandboxScene.getScenePause() ); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function ReloadToyOverlayButton::onClick(%this) |
|
|
{ |
|
|
// Finish if no toy is loaded. |
|
|
if ( !isObject(Sandbox.ActiveToy) ) |
|
|
return; |
|
|
|
|
|
// Reset custom controls. |
|
|
resetCustomControls(); |
|
|
|
|
|
// Reload the toy. |
|
|
loadToy( Sandbox.ActiveToy ); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function RestartToyOverlayButton::onClick(%this) |
|
|
{ |
|
|
// Finish if no toy is loaded. |
|
|
if ( !isObject(Sandbox.ActiveToy) ) |
|
|
return; |
|
|
|
|
|
// Reset the toy. |
|
|
if ( Sandbox.ActiveToy.ScopeSet.isMethod("reset") ) |
|
|
Sandbox.ActiveToy.ScopeSet.reset(); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function updateToolboxOptions() |
|
|
{ |
|
|
// Finish if the sandbox scene is not available. |
|
|
if ( !isObject(SandboxScene) ) |
|
|
return; |
|
|
|
|
|
// Set the scene color. |
|
|
Canvas.BackgroundColor = getStockColorName($activeBackgroundColor); |
|
|
Canvas.UseBackgroundColor = true; |
|
|
|
|
|
// Set option. |
|
|
if ( $pref::Sandbox::metricsOption ) |
|
|
SandboxScene.setDebugOn( "metrics" ); |
|
|
else |
|
|
SandboxScene.setDebugOff( "metrics" ); |
|
|
|
|
|
// Set option. |
|
|
if ( $pref::Sandbox::fpsmetricsOption ) |
|
|
SandboxScene.setDebugOn( "fps" ); |
|
|
else |
|
|
SandboxScene.setDebugOff( "fps" ); |
|
|
|
|
|
// Set option. |
|
|
if ( $pref::Sandbox::controllersOption ) |
|
|
SandboxScene.setDebugOn( "controllers" ); |
|
|
else |
|
|
SandboxScene.setDebugOff( "controllers" ); |
|
|
|
|
|
// Set option. |
|
|
if ( $pref::Sandbox::jointsOption ) |
|
|
SandboxScene.setDebugOn( "joints" ); |
|
|
else |
|
|
SandboxScene.setDebugOff( "joints" ); |
|
|
|
|
|
// Set option. |
|
|
if ( $pref::Sandbox::wireframeOption ) |
|
|
SandboxScene.setDebugOn( "wireframe" ); |
|
|
else |
|
|
SandboxScene.setDebugOff( "wireframe" ); |
|
|
|
|
|
// Set option. |
|
|
if ( $pref::Sandbox::aabbOption ) |
|
|
SandboxScene.setDebugOn( "aabb" ); |
|
|
else |
|
|
SandboxScene.setDebugOff( "aabb" ); |
|
|
|
|
|
// Set option. |
|
|
if ( $pref::Sandbox::oobbOption ) |
|
|
SandboxScene.setDebugOn( "oobb" ); |
|
|
else |
|
|
SandboxScene.setDebugOff( "oobb" ); |
|
|
|
|
|
// Set option. |
|
|
if ( $pref::Sandbox::sleepOption ) |
|
|
SandboxScene.setDebugOn( "sleep" ); |
|
|
else |
|
|
SandboxScene.setDebugOff( "sleep" ); |
|
|
|
|
|
// Set option. |
|
|
if ( $pref::Sandbox::collisionOption ) |
|
|
SandboxScene.setDebugOn( "collision" ); |
|
|
else |
|
|
SandboxScene.setDebugOff( "collision" ); |
|
|
|
|
|
// Set option. |
|
|
if ( $pref::Sandbox::positionOption ) |
|
|
SandboxScene.setDebugOn( "position" ); |
|
|
else |
|
|
SandboxScene.setDebugOff( "position" ); |
|
|
|
|
|
// Set option. |
|
|
if ( $pref::Sandbox::sortOption ) |
|
|
SandboxScene.setDebugOn( "sort" ); |
|
|
else |
|
|
SandboxScene.setDebugOff( "sort" ); |
|
|
|
|
|
// Set the options check-boxe. |
|
|
MetricsOptionCheckBox.setStateOn( $pref::Sandbox::metricsOption ); |
|
|
FpsMetricsOptionCheckBox.setStateOn( $pref::Sandbox::fpsmetricsOption ); |
|
|
ControllersOptionCheckBox.setStateOn( $pref::Sandbox::controllersOption ); |
|
|
JointsOptionCheckBox.setStateOn( $pref::Sandbox::jointsOption ); |
|
|
WireframeOptionCheckBox.setStateOn( $pref::Sandbox::wireframeOption ); |
|
|
AABBOptionCheckBox.setStateOn( $pref::Sandbox::aabbOption ); |
|
|
OOBBOptionCheckBox.setStateOn( $pref::Sandbox::oobbOption ); |
|
|
SleepOptionCheckBox.setStateOn( $pref::Sandbox::sleepOption ); |
|
|
CollisionOptionCheckBox.setStateOn( $pref::Sandbox::collisionOption ); |
|
|
PositionOptionCheckBox.setStateOn( $pref::Sandbox::positionOption ); |
|
|
SortOptionCheckBox.setStateOn( $pref::Sandbox::sortOption ); |
|
|
BatchOptionCheckBox.setStateOn( SandboxScene.getBatchingEnabled() ); |
|
|
|
|
|
// Is this on the desktop? |
|
|
//if ( $platform $= "windows" || $platform $= "macos" ) |
|
|
if ( $platform !$= "iOS" ) |
|
|
{ |
|
|
// Set the fullscreen check-box. |
|
|
FullscreenOptionButton.setStateOn( $pref::Video::fullScreen ); |
|
|
|
|
|
// Set the full-screen mode appropriately. |
|
|
if ( isFullScreen() != $pref::Video::fullScreen ) |
|
|
toggleFullScreen(); |
|
|
} |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function setFullscreenOption( %flag ) |
|
|
{ |
|
|
$pref::Video::fullScreen = %flag; |
|
|
updateToolboxOptions(); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function setMetricsOption( %flag ) |
|
|
{ |
|
|
$pref::Sandbox::metricsOption = %flag; |
|
|
updateToolboxOptions(); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function setFPSMetricsOption( %flag ) |
|
|
{ |
|
|
$pref::Sandbox::fpsmetricsOption = %flag; |
|
|
updateToolboxOptions(); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function setMetricsOption( %flag ) |
|
|
{ |
|
|
$pref::Sandbox::metricsOption = %flag; |
|
|
updateToolboxOptions(); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function setControllersOption( %flag ) |
|
|
{ |
|
|
$pref::Sandbox::controllersOption = %flag; |
|
|
updateToolboxOptions(); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function setJointsOption( %flag ) |
|
|
{ |
|
|
$pref::Sandbox::jointsOption = %flag; |
|
|
updateToolboxOptions(); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function setWireframeOption( %flag ) |
|
|
{ |
|
|
$pref::Sandbox::wireframeOption = %flag; |
|
|
updateToolboxOptions(); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function setAABBOption( %flag ) |
|
|
{ |
|
|
$pref::Sandbox::aabbOption = %flag; |
|
|
updateToolboxOptions(); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function setOOBBOption( %flag ) |
|
|
{ |
|
|
$pref::Sandbox::oobbOption = %flag; |
|
|
updateToolboxOptions(); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function setSleepOption( %flag ) |
|
|
{ |
|
|
$pref::Sandbox::sleepOption = %flag; |
|
|
updateToolboxOptions(); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function setCollisionOption( %flag ) |
|
|
{ |
|
|
$pref::Sandbox::collisionOption = %flag; |
|
|
updateToolboxOptions(); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function setPositionOption( %flag ) |
|
|
{ |
|
|
$pref::Sandbox::positionOption = %flag; |
|
|
updateToolboxOptions(); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function setSortOption( %flag ) |
|
|
{ |
|
|
$pref::Sandbox::sortOption = %flag; |
|
|
updateToolboxOptions(); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function ToyListScroller::scrollToNext(%this) |
|
|
{ |
|
|
%currentScroll = %this.getScrollPositionY(); |
|
|
%currentScroll += 85; |
|
|
%this.setScrollPosition(0, %currentScroll); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function ToyListScroller::scrollToPrevious(%this) |
|
|
{ |
|
|
%currentScroll = %this.getScrollPositionY(); |
|
|
%currentScroll -= 85; |
|
|
%this.setScrollPosition(0, %currentScroll); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function ToyListArray::initialize(%this, %index) |
|
|
{ |
|
|
%this.clear(); |
|
|
%currentExtent = %this.extent; |
|
|
%newExtent = getWord(%currentExtent, 0) SPC "20"; |
|
|
%this.Extent = %newExtent; |
|
|
|
|
|
// Fetch the toy count. |
|
|
%toyCount = SandboxToys.getCount(); |
|
|
|
|
|
// Populate toys in the selected category. |
|
|
for ( %toyIndex = 0; %toyIndex < %toyCount; %toyIndex++ ) |
|
|
{ |
|
|
// Fetch the toy module. |
|
|
%moduleDefinition = SandboxToys.getObject( %toyIndex ); |
|
|
|
|
|
// Skip the toy module if the "all" category is not selected and if the toy is not in the selected category. |
|
|
if ( %index != $toyAllCategoryIndex && %moduleDefinition.ToyCategoryIndex != %index ) |
|
|
continue; |
|
|
|
|
|
// Fetch the module version. |
|
|
%versionId = %moduleDefinition.versionId; |
|
|
|
|
|
// Format module title so that version#1 doesn't show version but all other versions do. |
|
|
if ( %versionId == 1 ) |
|
|
%moduleTitle = %moduleDefinition.moduleId; |
|
|
else |
|
|
%moduleTitle = %moduleDefinition.moduleId SPC "(v" @ %moduleDefinition.versionId @ ")"; |
|
|
|
|
|
// Add the toy GUI list. |
|
|
%this.addToyButton(%moduleTitle, %moduleDefinition); |
|
|
|
|
|
// Select the toy if it's the default and we've not selected a toy yet. |
|
|
if (!$defaultToySelected && %moduleDefinition.moduleId $= $pref::Sandbox::defaultToyId && %moduleDefinition.versionId == $pref::Sandbox::defaultToyVersionId ) |
|
|
{ |
|
|
$defaultToySelected = true; |
|
|
$defaultModuleID = %moduleDefinition.getId(); |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function ToyListArray::addToyButton(%this, %moduleTitle, %moduleDefintion) |
|
|
{ |
|
|
%button = new GuiButtonCtrl() |
|
|
{ |
|
|
canSaveDynamicFields = "0"; |
|
|
HorizSizing = "relative"; |
|
|
class = "ToySelectButton"; |
|
|
VertSizing = "relative"; |
|
|
isContainer = "0"; |
|
|
Profile = "BlueButtonProfile"; |
|
|
toolTipProfile = "GuiToolTipProfile"; |
|
|
toolTip = %moduleDefintion.Description; |
|
|
Position = "0 0"; |
|
|
Extent = "160 80"; |
|
|
Visible = "1"; |
|
|
toy = %moduleDefintion.getId(); |
|
|
isContainer = "0"; |
|
|
Active = "1"; |
|
|
text = %moduleTitle; |
|
|
groupNum = "-1"; |
|
|
buttonType = "PushButton"; |
|
|
useMouseEvents = "0"; |
|
|
}; |
|
|
|
|
|
%button.command = %button @ ".performSelect();"; |
|
|
|
|
|
%this.add(%button); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function ToySelectButton::performSelect(%this) |
|
|
{ |
|
|
// Finish if already selected. |
|
|
if ( %this.toy == Sandbox.ActiveToy ) |
|
|
return; |
|
|
|
|
|
// Load the selected toy. |
|
|
loadToy( %this.toy ); |
|
|
} |
|
|
//----------------------------------------------------------------------------- |
|
|
// Copyright (c) 2013 GarageGames, LLC |
|
|
// |
|
|
// Permission is hereby granted, free of charge, to any person obtaining a copy |
|
|
// of this software and associated documentation files (the "Software"), to |
|
|
// deal in the Software without restriction, including without limitation the |
|
|
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or |
|
|
// sell copies of the Software, and to permit persons to whom the Software is |
|
|
// furnished to do so, subject to the following conditions: |
|
|
// |
|
|
// The above copyright notice and this permission notice shall be included in |
|
|
// all copies or substantial portions of the Software. |
|
|
// |
|
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
|
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
|
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
|
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
|
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
|
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS |
|
|
// IN THE SOFTWARE. |
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
$toyAllCategoryIndex = 1; |
|
|
$defaultToySelected = false; |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function ToyCategorySelectList::onSelect(%this) |
|
|
{ |
|
|
// Fetch the index. |
|
|
%index = %this.currentToyCategory; |
|
|
|
|
|
$defaultToySelected = false; |
|
|
|
|
|
ToyListArray.initialize(%index); |
|
|
ToyListScroller.computeSizes(); |
|
|
ToyListScroller.scrollToTop(); |
|
|
|
|
|
// Unload the active toy. |
|
|
unloadToy(); |
|
|
|
|
|
// Flag as the default toy selected. |
|
|
if ($defaultToySelected) |
|
|
{ |
|
|
loadToy($defaultModuleID); |
|
|
} |
|
|
else |
|
|
{ |
|
|
if ( ToyListArray.getCount() > 0 ) |
|
|
{ |
|
|
%firstToyButton = ToyListArray.getObject(0); |
|
|
if (isObject(%firstToyButton)) |
|
|
%firstToyButton.performSelect(); |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function ToyCategorySelectList::initialize(%this) |
|
|
{ |
|
|
%this.toyCategories[$toyAllCategoryIndex] = "All"; |
|
|
%this.toyCategories[$toyAllCategoryIndex+1] = "Physics"; |
|
|
%this.toyCategories[$toyAllCategoryIndex+2] = "Features"; |
|
|
%this.toyCategories[$toyAllCategoryIndex+3] = "Stress Testing"; |
|
|
%this.toyCategories[$toyAllCategoryIndex+4] = "Fun and Games"; |
|
|
%this.toyCategories[$toyAllCategoryIndex+5] = "Custom"; |
|
|
%this.maxToyCategories = $toyAllCategoryIndex + 6; |
|
|
|
|
|
// Set the "All" category as the default. |
|
|
// NOTE: This is important to use so that the user-configurable default toy |
|
|
// can be selected at start-up. |
|
|
%this.currentToyCategory = $toyAllCategoryIndex; |
|
|
|
|
|
%this.setText("All"); |
|
|
%this.onSelect(); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function ToyCategorySelectList::nextCategory(%this) |
|
|
{ |
|
|
if (%this.currentToyCategory >= %this.maxToyCategories) |
|
|
return; |
|
|
|
|
|
%this.currentToyCategory++; |
|
|
|
|
|
%text = %this.toyCategories[%this.currentToyCategory]; |
|
|
%this.setText(%text); |
|
|
%this.onSelect(); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function ToyCategorySelectList::previousCategory(%this) |
|
|
{ |
|
|
if (%this.currentToyCategory <= $toyAllCategoryIndex) |
|
|
return; |
|
|
|
|
|
%this.currentToyCategory--; |
|
|
|
|
|
%text = %this.toyCategories[%this.currentToyCategory]; |
|
|
%this.setText(%text); |
|
|
%this.onSelect(); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function initializeToolbox() |
|
|
{ |
|
|
// Populate the stock colors. |
|
|
%colorCount = getStockColorCount(); |
|
|
for ( %i = 0; %i < %colorCount; %i++ ) |
|
|
{ |
|
|
// Fetch stock color name. |
|
|
%colorName = getStockColorName(%i); |
|
|
|
|
|
// Add to the list. |
|
|
BackgroundColorSelectList.add( getStockColorName(%i), %i ); |
|
|
|
|
|
// Select the color if it's the default one. |
|
|
if ( %colorName $= $pref::Sandbox::defaultBackgroundColor ) |
|
|
BackgroundColorSelectList.setSelected( %i ); |
|
|
} |
|
|
BackgroundColorSelectList.sort(); |
|
|
|
|
|
ToyCategorySelectList.initialize(); |
|
|
|
|
|
// Is this on the desktop? |
|
|
if ( $platform $= "windows" || $platform $= "macos" ) |
|
|
{ |
|
|
// Yes, so make the controls screen controls visible. |
|
|
ResolutionSelectLabel.Visible = true; |
|
|
ResolutionSelectList.Visible = true; |
|
|
FullscreenOptionLabel.Visible = true; |
|
|
FullscreenOptionButton.Visible = true; |
|
|
|
|
|
// Fetch the active resolution. |
|
|
%activeResolution = getRes(); |
|
|
%activeWidth = getWord(%activeResolution, 0); |
|
|
%activeHeight = getWord(%activeResolution, 1); |
|
|
%activeBpp = getWord(%activeResolution, 2); |
|
|
|
|
|
// Fetch the resolutions. |
|
|
%resolutionList = getResolutionList( $pref::Video::displayDevice ); |
|
|
%resolutionCount = getWordCount( %resolutionList ) / 3; |
|
|
%inputIndex = 0; |
|
|
%outputIndex = 0; |
|
|
for( %i = 0; %i < %resolutionCount; %i++ ) |
|
|
{ |
|
|
// Fetch the resolution entry. |
|
|
%width = getWord( %resolutionList, %inputIndex ); |
|
|
%height = getWord( %resolutionList, %inputIndex+1 ); |
|
|
%bpp = getWord( %resolutionList, %inputIndex+2 ); |
|
|
%inputIndex += 3; |
|
|
|
|
|
// Skip the 16-bit ones. |
|
|
if ( %bpp == 16 ) |
|
|
continue; |
|
|
|
|
|
// Store the resolution. |
|
|
$sandboxResolutions[%outputIndex] = %width SPC %height SPC %bpp; |
|
|
|
|
|
// Add to the list. |
|
|
ResolutionSelectList.add( %width @ "x" @ %height SPC "(" @ %bpp @ ")", %outputIndex ); |
|
|
|
|
|
// Select the resolution if it's the default one. |
|
|
if ( %width == %activeWidth && %height == %activeHeight && %bpp == %activeBpp ) |
|
|
ResolutionSelectList.setSelected( %outputIndex ); |
|
|
|
|
|
%outputIndex++; |
|
|
} |
|
|
} |
|
|
|
|
|
// Configure the main overlay. |
|
|
SandboxWindow.add(MainOverlay); |
|
|
%horizPosition = getWord(SandboxWindow.Extent, 0) - getWord(MainOverlay.Extent, 0); |
|
|
%verticalPosition = getWord(SandboxWindow.Extent, 1) - getWord(MainOverlay.Extent, 1); |
|
|
MainOverlay.position = %horizPosition SPC %verticalPosition; |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function toggleToolbox(%make) |
|
|
{ |
|
|
// Finish if being released. |
|
|
if ( !%make ) |
|
|
return; |
|
|
|
|
|
// Finish if the console is awake. |
|
|
if ( ConsoleDialog.isAwake() ) |
|
|
return; |
|
|
|
|
|
// Is the toolbox awake? |
|
|
if ( ToolboxDialog.isAwake() ) |
|
|
{ |
|
|
// Yes, so deactivate it. |
|
|
if ( $enableDirectInput ) |
|
|
activateKeyboard(); |
|
|
Canvas.popDialog(ToolboxDialog); |
|
|
MainOverlay.setVisible(1); |
|
|
return; |
|
|
} |
|
|
|
|
|
// Activate it. |
|
|
if ( $enableDirectInput ) |
|
|
deactivateKeyboard(); |
|
|
|
|
|
MainOverlay.setVisible(0); |
|
|
Canvas.pushDialog(ToolboxDialog); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function BackgroundColorSelectList::onSelect(%this) |
|
|
{ |
|
|
// Fetch the index. |
|
|
$activeBackgroundColor = %this.getSelected(); |
|
|
|
|
|
// Finish if the sandbox scene is not available. |
|
|
if ( !isObject(SandboxScene) ) |
|
|
return; |
|
|
|
|
|
// Set the scene color. |
|
|
SandboxScene.BackgroundColor = getStockColorName($activeBackgroundColor); |
|
|
SandboxScene.UseBackgroundColor = true; |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function ResolutionSelectList::onSelect(%this) |
|
|
{ |
|
|
// Finish if the sandbox scene is not available. |
|
|
if ( !isObject(SandboxScene) ) |
|
|
return; |
|
|
|
|
|
// Fetch the index. |
|
|
%index = %this.getSelected(); |
|
|
|
|
|
// Fetch resolution. |
|
|
%resolution = $sandboxResolutions[%index]; |
|
|
|
|
|
// Set the screen mode. |
|
|
setScreenMode( GetWord( %resolution , 0 ), GetWord( %resolution, 1 ), GetWord( %resolution, 2 ), $pref::Video::fullScreen ); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function PauseSceneModeButton::onClick(%this) |
|
|
{ |
|
|
// Sanity! |
|
|
if ( !isObject(SandboxScene) ) |
|
|
{ |
|
|
error( "Cannot pause/unpause the Sandbox scene as it does not exist." ); |
|
|
return; |
|
|
} |
|
|
|
|
|
// Toggle the scene pause. |
|
|
SandboxScene.setScenePause( !SandboxScene.getScenePause() ); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function ReloadToyOverlayButton::onClick(%this) |
|
|
{ |
|
|
// Finish if no toy is loaded. |
|
|
if ( !isObject(Sandbox.ActiveToy) ) |
|
|
return; |
|
|
|
|
|
// Reset custom controls. |
|
|
resetCustomControls(); |
|
|
|
|
|
// Reload the toy. |
|
|
loadToy( Sandbox.ActiveToy ); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function RestartToyOverlayButton::onClick(%this) |
|
|
{ |
|
|
// Finish if no toy is loaded. |
|
|
if ( !isObject(Sandbox.ActiveToy) ) |
|
|
return; |
|
|
|
|
|
// Reset the toy. |
|
|
if ( Sandbox.ActiveToy.ScopeSet.isMethod("reset") ) |
|
|
Sandbox.ActiveToy.ScopeSet.reset(); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function updateToolboxOptions() |
|
|
{ |
|
|
// Finish if the sandbox scene is not available. |
|
|
if ( !isObject(SandboxScene) ) |
|
|
return; |
|
|
|
|
|
// Set the scene color. |
|
|
SandboxScene.BackgroundColor = getStockColorName($activeBackgroundColor); |
|
|
SandboxScene.UseBackgroundColor = true; |
|
|
|
|
|
// Set option. |
|
|
if ( $pref::Sandbox::metricsOption ) |
|
|
SandboxScene.setDebugOn( "metrics" ); |
|
|
else |
|
|
SandboxScene.setDebugOff( "metrics" ); |
|
|
|
|
|
// Set option. |
|
|
if ( $pref::Sandbox::fpsmetricsOption ) |
|
|
SandboxScene.setDebugOn( "fps" ); |
|
|
else |
|
|
SandboxScene.setDebugOff( "fps" ); |
|
|
|
|
|
// Set option. |
|
|
if ( $pref::Sandbox::controllersOption ) |
|
|
SandboxScene.setDebugOn( "controllers" ); |
|
|
else |
|
|
SandboxScene.setDebugOff( "controllers" ); |
|
|
|
|
|
// Set option. |
|
|
if ( $pref::Sandbox::jointsOption ) |
|
|
SandboxScene.setDebugOn( "joints" ); |
|
|
else |
|
|
SandboxScene.setDebugOff( "joints" ); |
|
|
|
|
|
// Set option. |
|
|
if ( $pref::Sandbox::wireframeOption ) |
|
|
SandboxScene.setDebugOn( "wireframe" ); |
|
|
else |
|
|
SandboxScene.setDebugOff( "wireframe" ); |
|
|
|
|
|
// Set option. |
|
|
if ( $pref::Sandbox::aabbOption ) |
|
|
SandboxScene.setDebugOn( "aabb" ); |
|
|
else |
|
|
SandboxScene.setDebugOff( "aabb" ); |
|
|
|
|
|
// Set option. |
|
|
if ( $pref::Sandbox::oobbOption ) |
|
|
SandboxScene.setDebugOn( "oobb" ); |
|
|
else |
|
|
SandboxScene.setDebugOff( "oobb" ); |
|
|
|
|
|
// Set option. |
|
|
if ( $pref::Sandbox::sleepOption ) |
|
|
SandboxScene.setDebugOn( "sleep" ); |
|
|
else |
|
|
SandboxScene.setDebugOff( "sleep" ); |
|
|
|
|
|
// Set option. |
|
|
if ( $pref::Sandbox::collisionOption ) |
|
|
SandboxScene.setDebugOn( "collision" ); |
|
|
else |
|
|
SandboxScene.setDebugOff( "collision" ); |
|
|
|
|
|
// Set option. |
|
|
if ( $pref::Sandbox::positionOption ) |
|
|
SandboxScene.setDebugOn( "position" ); |
|
|
else |
|
|
SandboxScene.setDebugOff( "position" ); |
|
|
|
|
|
// Set option. |
|
|
if ( $pref::Sandbox::sortOption ) |
|
|
SandboxScene.setDebugOn( "sort" ); |
|
|
else |
|
|
SandboxScene.setDebugOff( "sort" ); |
|
|
|
|
|
// Set the options check-boxe. |
|
|
MetricsOptionCheckBox.setStateOn( $pref::Sandbox::metricsOption ); |
|
|
FpsMetricsOptionCheckBox.setStateOn( $pref::Sandbox::fpsmetricsOption ); |
|
|
ControllersOptionCheckBox.setStateOn( $pref::Sandbox::controllersOption ); |
|
|
JointsOptionCheckBox.setStateOn( $pref::Sandbox::jointsOption ); |
|
|
WireframeOptionCheckBox.setStateOn( $pref::Sandbox::wireframeOption ); |
|
|
AABBOptionCheckBox.setStateOn( $pref::Sandbox::aabbOption ); |
|
|
OOBBOptionCheckBox.setStateOn( $pref::Sandbox::oobbOption ); |
|
|
SleepOptionCheckBox.setStateOn( $pref::Sandbox::sleepOption ); |
|
|
CollisionOptionCheckBox.setStateOn( $pref::Sandbox::collisionOption ); |
|
|
PositionOptionCheckBox.setStateOn( $pref::Sandbox::positionOption ); |
|
|
SortOptionCheckBox.setStateOn( $pref::Sandbox::sortOption ); |
|
|
BatchOptionCheckBox.setStateOn( SandboxScene.getBatchingEnabled() ); |
|
|
|
|
|
// Is this on the desktop? |
|
|
//if ( $platform $= "windows" || $platform $= "macos" ) |
|
|
if ( $platform !$= "iOS" ) |
|
|
{ |
|
|
// Set the fullscreen check-box. |
|
|
FullscreenOptionButton.setStateOn( $pref::Video::fullScreen ); |
|
|
|
|
|
// Set the full-screen mode appropriately. |
|
|
if ( isFullScreen() != $pref::Video::fullScreen ) |
|
|
toggleFullScreen(); |
|
|
} |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function setFullscreenOption( %flag ) |
|
|
{ |
|
|
$pref::Video::fullScreen = %flag; |
|
|
updateToolboxOptions(); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function setMetricsOption( %flag ) |
|
|
{ |
|
|
$pref::Sandbox::metricsOption = %flag; |
|
|
updateToolboxOptions(); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function setFPSMetricsOption( %flag ) |
|
|
{ |
|
|
$pref::Sandbox::fpsmetricsOption = %flag; |
|
|
updateToolboxOptions(); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function setMetricsOption( %flag ) |
|
|
{ |
|
|
$pref::Sandbox::metricsOption = %flag; |
|
|
updateToolboxOptions(); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function setControllersOption( %flag ) |
|
|
{ |
|
|
$pref::Sandbox::controllersOption = %flag; |
|
|
updateToolboxOptions(); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function setJointsOption( %flag ) |
|
|
{ |
|
|
$pref::Sandbox::jointsOption = %flag; |
|
|
updateToolboxOptions(); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function setWireframeOption( %flag ) |
|
|
{ |
|
|
$pref::Sandbox::wireframeOption = %flag; |
|
|
updateToolboxOptions(); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function setAABBOption( %flag ) |
|
|
{ |
|
|
$pref::Sandbox::aabbOption = %flag; |
|
|
updateToolboxOptions(); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function setOOBBOption( %flag ) |
|
|
{ |
|
|
$pref::Sandbox::oobbOption = %flag; |
|
|
updateToolboxOptions(); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function setSleepOption( %flag ) |
|
|
{ |
|
|
$pref::Sandbox::sleepOption = %flag; |
|
|
updateToolboxOptions(); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function setCollisionOption( %flag ) |
|
|
{ |
|
|
$pref::Sandbox::collisionOption = %flag; |
|
|
updateToolboxOptions(); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function setPositionOption( %flag ) |
|
|
{ |
|
|
$pref::Sandbox::positionOption = %flag; |
|
|
updateToolboxOptions(); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function setSortOption( %flag ) |
|
|
{ |
|
|
$pref::Sandbox::sortOption = %flag; |
|
|
updateToolboxOptions(); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function ToyListScroller::scrollToNext(%this) |
|
|
{ |
|
|
%currentScroll = %this.getScrollPositionY(); |
|
|
%currentScroll += 85; |
|
|
%this.setScrollPosition(0, %currentScroll); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function ToyListScroller::scrollToPrevious(%this) |
|
|
{ |
|
|
%currentScroll = %this.getScrollPositionY(); |
|
|
%currentScroll -= 85; |
|
|
%this.setScrollPosition(0, %currentScroll); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function ToyListArray::initialize(%this, %index) |
|
|
{ |
|
|
%this.clear(); |
|
|
%currentExtent = %this.extent; |
|
|
%newExtent = getWord(%currentExtent, 0) SPC "20"; |
|
|
%this.Extent = %newExtent; |
|
|
|
|
|
// Fetch the toy count. |
|
|
%toyCount = SandboxToys.getCount(); |
|
|
|
|
|
// Populate toys in the selected category. |
|
|
for ( %toyIndex = 0; %toyIndex < %toyCount; %toyIndex++ ) |
|
|
{ |
|
|
// Fetch the toy module. |
|
|
%moduleDefinition = SandboxToys.getObject( %toyIndex ); |
|
|
|
|
|
// Skip the toy module if the "all" category is not selected and if the toy is not in the selected category. |
|
|
if ( %index != $toyAllCategoryIndex && %moduleDefinition.ToyCategoryIndex != %index ) |
|
|
continue; |
|
|
|
|
|
// Fetch the module version. |
|
|
%versionId = %moduleDefinition.versionId; |
|
|
|
|
|
// Format module title so that version#1 doesn't show version but all other versions do. |
|
|
if ( %versionId == 1 ) |
|
|
%moduleTitle = %moduleDefinition.moduleId; |
|
|
else |
|
|
%moduleTitle = %moduleDefinition.moduleId SPC "(v" @ %moduleDefinition.versionId @ ")"; |
|
|
|
|
|
// Add the toy GUI list. |
|
|
%this.addToyButton(%moduleTitle, %moduleDefinition); |
|
|
|
|
|
// Select the toy if it's the default and we've not selected a toy yet. |
|
|
if (!$defaultToySelected && %moduleDefinition.moduleId $= $pref::Sandbox::defaultToyId && %moduleDefinition.versionId == $pref::Sandbox::defaultToyVersionId ) |
|
|
{ |
|
|
$defaultToySelected = true; |
|
|
$defaultModuleID = %moduleDefinition.getId(); |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function ToyListArray::addToyButton(%this, %moduleTitle, %moduleDefintion) |
|
|
{ |
|
|
%button = new GuiButtonCtrl() |
|
|
{ |
|
|
canSaveDynamicFields = "0"; |
|
|
HorizSizing = "relative"; |
|
|
class = "ToySelectButton"; |
|
|
VertSizing = "relative"; |
|
|
isContainer = "0"; |
|
|
Profile = "BlueButtonProfile"; |
|
|
toolTipProfile = "GuiToolTipProfile"; |
|
|
toolTip = %moduleDefintion.Description; |
|
|
Position = "0 0"; |
|
|
Extent = "160 80"; |
|
|
Visible = "1"; |
|
|
toy = %moduleDefintion.getId(); |
|
|
isContainer = "0"; |
|
|
Active = "1"; |
|
|
text = %moduleTitle; |
|
|
groupNum = "-1"; |
|
|
buttonType = "PushButton"; |
|
|
useMouseEvents = "0"; |
|
|
}; |
|
|
|
|
|
%button.command = %button @ ".performSelect();"; |
|
|
|
|
|
%this.add(%button); |
|
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
|
|
function ToySelectButton::performSelect(%this) |
|
|
{ |
|
|
// Finish if already selected. |
|
|
if ( %this.toy == Sandbox.ActiveToy ) |
|
|
return; |
|
|
|
|
|
// Load the selected toy. |
|
|
loadToy( %this.toy ); |
|
|
} |