text: // Copyright 2012 United States Government, as represented by the Secretary of Defense, Under
  // Secretary of Defense (Personnel & Readiness).
  // 
  // Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
  // in compliance with the License. You may obtain a copy of the License at
  // 
  //   http://www.apache.org/licenses/LICENSE-2.0
  // 
  // Unless required by applicable law or agreed to in writing, software distributed under the License
  // is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
  // or implied. See the License for the specific language governing permissions and limitations under
  // the License.
  
  define( [ "module", "vwf/model" ], function( module, model ) {
  
      // vwf/model/example/scene.js is a demonstration of a scene manager.
  
      return model.load( module, {
  
          // == Module Definition ====================================================================
  
          // -- pipeline -----------------------------------------------------------------------------
  
          // pipeline: [ log ], // vwf <=> log <=> scene
  
          // -- initialize ---------------------------------------------------------------------------
  
          initialize: function() {
              this.objects = {}; // maps id => { property: value, ... }
          },
  
          // == Model API ============================================================================
  
          // -- creatingNode -------------------------------------------------------------------------
  
          creatingNode: function( nodeID, childID, childExtendsID, childImplementsIDs,
              childSource, childType, childURI, childName, callback /* ( ready ) */ ) {
          },
  
          // -- deletingNode -------------------------------------------------------------------------
  
          deletingNode: function( nodeID ) {
          },
  
          // -- addingChild --------------------------------------------------------------------------
  
          addingChild: function( nodeID, childID, childName ) {
          },
  
          // -- removingChild ------------------------------------------------------------------------
  
          removingChild: function( nodeID, childID ) {
          },
  
          // -- parenting ----------------------------------------------------------------------------
  
          parenting: function( nodeID ) {
          },
  
          // -- childrening --------------------------------------------------------------------------
  
          childrening: function( nodeID ) {
          },
  
          // -- naming -------------------------------------------------------------------------------
  
          naming: function( nodeID ) {
          },
  
          // -- creatingProperty ---------------------------------------------------------------------
  
          creatingProperty: function( nodeID, propertyName, propertyValue ) {
              var object = this.objects[nodeID] || ( this.objects[nodeID] = {} );
              return object[propertyName] = propertyValue;
          },
  
          // -- initializingProperty -----------------------------------------------------------------
  
          initializingProperty: function( nodeID, propertyName, propertyValue ) {
              var object = this.objects[nodeID] || ( this.objects[nodeID] = {} );
              return object[propertyName] = propertyValue;
          },
  
          // TODO: deletingProperty
  
          // -- settingProperty ----------------------------------------------------------------------
  
          settingProperty: function( nodeID, propertyName, propertyValue ) {
              var object = this.objects[nodeID] || ( this.objects[nodeID] = {} );
              return object[propertyName] = propertyValue;
          },
  
          // -- gettingProperty ----------------------------------------------------------------------
  
          gettingProperty: function( nodeID, propertyName, propertyValue ) {
              var object = this.objects[nodeID];
              return object && object[propertyName];
          },
  
          // -- creatingMethod -----------------------------------------------------------------------
  
          creatingMethod: function( nodeID, methodName, methodParameters, methodBody ) {
          },
  
          // TODO: deletingMethod
  
          // -- callingMethod ------------------------------------------------------------------------
  
          callingMethod: function( nodeID, methodName, methodParameters ) {
          },
  
          // -- creatingEvent ------------------------------------------------------------------------
  
          creatingEvent: function( nodeID, eventName, eventParameters ) {
          },
  
          // TODO: deletingEvent
  
          // -- firingEvent --------------------------------------------------------------------------
  
          firingEvent: function( nodeID, eventName, eventParameters ) {
          },
  
          // -- executing ----------------------------------------------------------------------------
  
          executing: function( nodeID, scriptText, scriptType ) {
          },
  
      } );
  
  } );
  