123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- //-----------------------------------------------------------------------------
- // 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.
- //-----------------------------------------------------------------------------
- Sandbox.ActiveToy = "";
- //-----------------------------------------------------------------------------
- function scanForToys()
- {
- // Find the toy modules.
- %toyModules = ModuleDatabase.findModuleTypes( "toy", false );
- // Do we have an existing set of sandbox toys?
- if ( !isObject(SandboxToys) )
- {
- // No, so create one.
- new SimSet(SandboxToys);
- }
-
- // Clear the sandbox toys.
- SandboxToys.clear();
-
- // Fetch toy module count.
- %toyModuleCount = getWordCount( %toyModules );
-
- // Add toys.
- for ( %i = 0; %i < %toyModuleCount; %i++ )
- {
- // Fetch module definition.
- %moduleDefinition = getWord( %toyModules, %i );
-
- // Add to toy sandbox toys.
- SandboxToys.add( %moduleDefinition );
- }
- }
- //-----------------------------------------------------------------------------
- function loadToy( %moduleDefinition )
- {
- // Sanity!
- if ( !isObject( %moduleDefinition ) )
- {
- error( "Cannot load toy as the specified toy is not available." );
- return;
- }
-
- // Unload the active toy.
- unloadToy();
-
- // Create a sandbox scene.
- createSandboxScene();
-
- // Now is a good time to purge any idle assets.
- AssetDatabase.purgeAssets();
-
- // Set active toy.
- // This must be done here in-case a toy depends on it during its initialization.
- Sandbox.ActiveToy = %moduleDefinition;
-
- // Load the toy.
- if ( !ModuleDatabase.loadExplicit( %moduleDefinition.ModuleId, %moduleDefinition.VersionId ) )
- {
- error( "Failed to load the toy '" @ %moduleDefinition.ModuleId @ "'." );
- return;
- }
-
- // Add the scene so it's unloaded when the toy module is.
- %moduleDefinition.ScopeSet.add( SandboxScene );
-
- // Add toy scope-set as a listener.
- SandboxWindow.addInputListener( %moduleDefinition.ScopeSet );
- }
- //-----------------------------------------------------------------------------
- function unloadToy()
- {
- // Finish if no active toy loaded.
- if ( !isObject(Sandbox.ActiveToy) )
- return;
-
- // Delete any custom controls added by the toy.
- ToyCustomControls.deleteObjects();
- resetCustomControls();
- // Unload the toy.
- if ( !ModuleDatabase.unloadExplicit( Sandbox.ActiveToy.moduleId ) )
- {
- error( "Failed to unload the toy '" @ Sandbox.ActiveToy.ModuleId @ "'." );
- }
-
- // Reset active toy.
- Sandbox.ActiveToy = "";
- }
|