# 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.

--- 
extends: http://vwf.example.com/node3.vwf
implements:
- http://vwf.example.com/scale-on-move.vwf
methods:
  createGeometry:
  deleteGeometry:
scripts:
- |
  this.initialize = function() {
    //console.info( "initialize scaleXYZ.vwf" );
  }
  this.createGeometry = function() {
    if ( this.parent.ttPoints ) {
      var pos = [];
      var faces = [];
      var count = 0;

      // x positive
      pos.push( this.parent.ttPositions[0][0] );
      pos.push( this.parent.ttPositions[0][1] ); // 0       
      pos.push( this.parent.ttPositions[0][2] );

      pos.push( this.parent.ttPositions[8][0] );
      pos.push( this.parent.ttPositions[8][1] ); // 1       
      pos.push( this.parent.ttPositions[8][2] );
      
      pos.push( this.parent.ttPositions[9][0] );
      pos.push( this.parent.ttPositions[9][1] ); // 2       
      pos.push( this.parent.ttPositions[9][2] );
      
      pos.push( this.parent.ttPositions[10][0] );
      pos.push( this.parent.ttPositions[10][1] ); // 3   
      pos.push( this.parent.ttPositions[10][2] ); 
      
      faces.push( count, count+3, count+1, count+1, count+3, count+2 );
      count += 4;
      
      pos.push( this.parent.ttPositions[11][0] );
      pos.push( this.parent.ttPositions[11][1] ); // 4       
      pos.push( this.parent.ttPositions[11][2] );

      pos.push( this.parent.ttPositions[1][0] );
      pos.push( this.parent.ttPositions[1][1] ); // 5       
      pos.push( this.parent.ttPositions[1][2] );
      
      pos.push( this.parent.ttPositions[13][0] );
      pos.push( this.parent.ttPositions[13][1] ); // 6       
      pos.push( this.parent.ttPositions[13][2] );
      
      pos.push( this.parent.ttPositions[12][0] );
      pos.push( this.parent.ttPositions[12][1] ); // 7   
      pos.push( this.parent.ttPositions[12][2] );   

      faces.push( count, count+3, count+1, count+1, count+3, count+2 );
      count += 4;
      
      pos.push( this.parent.ttPositions[15][0] );
      pos.push( this.parent.ttPositions[15][1] ); // 8       
      pos.push( this.parent.ttPositions[15][2] );

      pos.push( this.parent.ttPositions[16][0] );
      pos.push( this.parent.ttPositions[16][1] ); // 9       
      pos.push( this.parent.ttPositions[16][2] );
      
      pos.push( this.parent.ttPositions[5][0] );
      pos.push( this.parent.ttPositions[5][1] ); // 10       
      pos.push( this.parent.ttPositions[5][2] );
      
      pos.push( this.parent.ttPositions[14][0] );
      pos.push( this.parent.ttPositions[14][1] ); // 11   
      pos.push( this.parent.ttPositions[14][2] );   

      faces.push( count, count+3, count+1, count+1, count+3, count+2 );
      count += 4;        

      pos.push( this.parent.ttPositions[17][0] );
      pos.push( this.parent.ttPositions[17][1] ); // 12       
      pos.push( this.parent.ttPositions[17][2] );

      pos.push( this.parent.ttPositions[18][0] );
      pos.push( this.parent.ttPositions[18][1] ); // 13       
      pos.push( this.parent.ttPositions[18][2] );
      
      pos.push( this.parent.ttPositions[19][0] );
      pos.push( this.parent.ttPositions[19][1] ); // 14       
      pos.push( this.parent.ttPositions[19][2] );
      
      pos.push( this.parent.ttPositions[4][0] );
      pos.push( this.parent.ttPositions[4][1] ); // 15   
      pos.push( this.parent.ttPositions[4][2] );   

      faces.push( count, count+3, count+1, count+1, count+3, count+2 );
      count += 4;

      // x negative
      pos.push( this.parent.ttPositions[3][0] );
      pos.push( this.parent.ttPositions[3][1] ); // 16       
      pos.push( this.parent.ttPositions[3][2] );

      pos.push( this.parent.ttPositions[20][0] );
      pos.push( this.parent.ttPositions[20][1] ); // 17       
      pos.push( this.parent.ttPositions[20][2] );
      
      pos.push( this.parent.ttPositions[21][0] );
      pos.push( this.parent.ttPositions[21][1] ); // 18       
      pos.push( this.parent.ttPositions[21][2] );
      
      pos.push( this.parent.ttPositions[22][0] );
      pos.push( this.parent.ttPositions[22][1] ); // 19   
      pos.push( this.parent.ttPositions[22][2] );   

      faces.push( count, count+3, count+1, count+1, count+3, count+2 );
      count += 4; 

      pos.push( this.parent.ttPositions[23][0] );
      pos.push( this.parent.ttPositions[23][1] ); // 20       
      pos.push( this.parent.ttPositions[23][2] );

      pos.push( this.parent.ttPositions[2][0] );
      pos.push( this.parent.ttPositions[2][1] ); // 21       
      pos.push( this.parent.ttPositions[2][2] );
      
      pos.push( this.parent.ttPositions[25][0] );
      pos.push( this.parent.ttPositions[25][1] ); // 22       
      pos.push( this.parent.ttPositions[25][2] );
      
      pos.push( this.parent.ttPositions[24][0] );
      pos.push( this.parent.ttPositions[24][1] ); // 23   
      pos.push( this.parent.ttPositions[24][2] );   

      faces.push( count, count+3, count+1, count+1, count+3, count+2 );
      count += 4; 

      pos.push( this.parent.ttPositions[27][0] );
      pos.push( this.parent.ttPositions[27][1] ); // 24       
      pos.push( this.parent.ttPositions[27][2] );

      pos.push( this.parent.ttPositions[26][0] );
      pos.push( this.parent.ttPositions[26][1] ); // 25       
      pos.push( this.parent.ttPositions[26][2] );
      
      pos.push( this.parent.ttPositions[6][0] );
      pos.push( this.parent.ttPositions[6][1] ); // 26       
      pos.push( this.parent.ttPositions[6][2] );
      
      pos.push( this.parent.ttPositions[28][0] );
      pos.push( this.parent.ttPositions[28][1] ); // 27   
      pos.push( this.parent.ttPositions[28][2] );   

      faces.push( count, count+3, count+1, count+1, count+3, count+2 );
      count += 4; 

      pos.push( this.parent.ttPositions[31][0] );
      pos.push( this.parent.ttPositions[31][1] ); // 28       
      pos.push( this.parent.ttPositions[31][2] );

      pos.push( this.parent.ttPositions[30][0] );
      pos.push( this.parent.ttPositions[30][1] ); // 29       
      pos.push( this.parent.ttPositions[30][2] );
      
      pos.push( this.parent.ttPositions[29][0] );
      pos.push( this.parent.ttPositions[29][1] ); // 30       
      pos.push( this.parent.ttPositions[29][2] );
      
      pos.push( this.parent.ttPositions[7][0] );
      pos.push( this.parent.ttPositions[7][1] ); // 31   
      pos.push( this.parent.ttPositions[7][2] );   

      faces.push( count, count+3, count+1, count+1, count+3, count+2 );
      count += 4;  

      // y positive
      pos.push( this.parent.ttPositions[2][0] );
      pos.push( this.parent.ttPositions[2][1] ); // 32       
      pos.push( this.parent.ttPositions[2][2] );

      pos.push( this.parent.ttPositions[37][0] );
      pos.push( this.parent.ttPositions[37][1] ); // 33       
      pos.push( this.parent.ttPositions[37][2] );
      
      pos.push( this.parent.ttPositions[50][0] );
      pos.push( this.parent.ttPositions[50][1] ); // 34       
      pos.push( this.parent.ttPositions[50][2] );
      
      pos.push( this.parent.ttPositions[25][0] );
      pos.push( this.parent.ttPositions[25][1] ); // 35   
      pos.push( this.parent.ttPositions[25][2] ); 
      
      faces.push( count, count+3, count+1, count+1, count+3, count+2 );
      count += 4; 

      pos.push( this.parent.ttPositions[35][0] );
      pos.push( this.parent.ttPositions[35][1] ); // 36       
      pos.push( this.parent.ttPositions[35][2] );

      pos.push( this.parent.ttPositions[1][0] );
      pos.push( this.parent.ttPositions[1][1] ); // 37       
      pos.push( this.parent.ttPositions[1][2] );
      
      pos.push( this.parent.ttPositions[13][0] );
      pos.push( this.parent.ttPositions[13][1] ); // 38       
      pos.push( this.parent.ttPositions[13][2] );
      
      pos.push( this.parent.ttPositions[49][0] );
      pos.push( this.parent.ttPositions[49][1] ); // 39   
      pos.push( this.parent.ttPositions[49][2] );   

      faces.push( count, count+3, count+1, count+1, count+3, count+2 );
      count += 4; 

      pos.push( this.parent.ttPositions[48][0] );
      pos.push( this.parent.ttPositions[48][1] ); // 40       
      pos.push( this.parent.ttPositions[48][2] );

      pos.push( this.parent.ttPositions[16][0] );
      pos.push( this.parent.ttPositions[16][1] ); // 41       
      pos.push( this.parent.ttPositions[16][2] );
      
      pos.push( this.parent.ttPositions[5][0] );
      pos.push( this.parent.ttPositions[5][1] ); // 42       
      pos.push( this.parent.ttPositions[5][2] );
      
      pos.push( this.parent.ttPositions[43][0] );
      pos.push( this.parent.ttPositions[43][1] ); // 43   
      pos.push( this.parent.ttPositions[43][2] );   

      faces.push( count, count+3, count+1, count+1, count+3, count+2 );
      count += 4; 

      pos.push( this.parent.ttPositions[28][0] );
      pos.push( this.parent.ttPositions[28][1] ); // 44       
      pos.push( this.parent.ttPositions[28][2] );

      pos.push( this.parent.ttPositions[51][0] );
      pos.push( this.parent.ttPositions[51][1] ); // 45       
      pos.push( this.parent.ttPositions[51][2] );
      
      pos.push( this.parent.ttPositions[45][0] );
      pos.push( this.parent.ttPositions[45][1] ); // 46       
      pos.push( this.parent.ttPositions[45][2] );
      
      pos.push( this.parent.ttPositions[6][0] );
      pos.push( this.parent.ttPositions[6][1] ); // 47   
      pos.push( this.parent.ttPositions[6][2] );   

      faces.push( count, count+3, count+1, count+1, count+3, count+2 );
      count += 4; 

      // y negative
      pos.push( this.parent.ttPositions[3][0] );
      pos.push( this.parent.ttPositions[3][1] ); // 48       
      pos.push( this.parent.ttPositions[3][2] );

      pos.push( this.parent.ttPositions[22][0] );
      pos.push( this.parent.ttPositions[22][1] ); // 49       
      pos.push( this.parent.ttPositions[22][2] );
      
      pos.push( this.parent.ttPositions[54][0] );
      pos.push( this.parent.ttPositions[54][1] ); // 50       
      pos.push( this.parent.ttPositions[54][2] );
      
      pos.push( this.parent.ttPositions[39][0] );
      pos.push( this.parent.ttPositions[39][1] ); // 51   
      pos.push( this.parent.ttPositions[39][2] );   

      faces.push( count, count+3, count+1, count+1, count+3, count+2 );
      count += 4; 

      pos.push( this.parent.ttPositions[33][0] );
      pos.push( this.parent.ttPositions[33][1] ); // 52       
      pos.push( this.parent.ttPositions[33][2] );

      pos.push( this.parent.ttPositions[0][0] );
      pos.push( this.parent.ttPositions[0][1] ); // 53       
      pos.push( this.parent.ttPositions[0][2] );
      
      pos.push( this.parent.ttPositions[10][0] );
      pos.push( this.parent.ttPositions[10][1] ); // 54       
      pos.push( this.parent.ttPositions[10][2] );
      
      pos.push( this.parent.ttPositions[53][0] );
      pos.push( this.parent.ttPositions[53][1] ); // 55   
      pos.push( this.parent.ttPositions[53][2] );   

      faces.push( count, count+3, count+1, count+1, count+3, count+2 );
      count += 4;  

      pos.push( this.parent.ttPositions[52][0] );
      pos.push( this.parent.ttPositions[52][1] ); // 56       
      pos.push( this.parent.ttPositions[52][2] );

      pos.push( this.parent.ttPositions[19][0] );
      pos.push( this.parent.ttPositions[19][1] ); // 57       
      pos.push( this.parent.ttPositions[19][2] );
      
      pos.push( this.parent.ttPositions[4][0] );
      pos.push( this.parent.ttPositions[4][1] ); // 58       
      pos.push( this.parent.ttPositions[4][2] );
      
      pos.push( this.parent.ttPositions[41][0] );
      pos.push( this.parent.ttPositions[41][1] ); // 59   
      pos.push( this.parent.ttPositions[41][2] );   

      faces.push( count, count+3, count+1, count+1, count+3, count+2 );
      count += 4; 

      pos.push( this.parent.ttPositions[31][0] );
      pos.push( this.parent.ttPositions[31][1] ); // 60       
      pos.push( this.parent.ttPositions[31][2] );

      pos.push( this.parent.ttPositions[55][0] );
      pos.push( this.parent.ttPositions[55][1] ); // 61       
      pos.push( this.parent.ttPositions[55][2] );
      
      pos.push( this.parent.ttPositions[47][0] );
      pos.push( this.parent.ttPositions[47][1] ); // 62       
      pos.push( this.parent.ttPositions[47][2] );
      
      pos.push( this.parent.ttPositions[7][0] );
      pos.push( this.parent.ttPositions[7][1] ); // 63   
      pos.push( this.parent.ttPositions[7][2] );   

      faces.push( count, count+3, count+1, count+1, count+3, count+2 );
      count += 4; 

      // z positive
      pos.push( this.parent.ttPositions[2][0] );
      pos.push( this.parent.ttPositions[2][1] ); // 64       
      pos.push( this.parent.ttPositions[2][2] );

      pos.push( this.parent.ttPositions[37][0] );
      pos.push( this.parent.ttPositions[37][1] ); // 65       
      pos.push( this.parent.ttPositions[37][2] );
      
      pos.push( this.parent.ttPositions[36][0] );
      pos.push( this.parent.ttPositions[36][1] ); // 66       
      pos.push( this.parent.ttPositions[36][2] );
      
      pos.push( this.parent.ttPositions[23][0] );
      pos.push( this.parent.ttPositions[23][1] ); // 67   
      pos.push( this.parent.ttPositions[23][2] ); 
      
      faces.push( count, count+3, count+1, count+1, count+3, count+2 );
      count += 4; 
      
      pos.push( this.parent.ttPositions[35][0] );
      pos.push( this.parent.ttPositions[35][1] ); // 68       
      pos.push( this.parent.ttPositions[35][2] );

      pos.push( this.parent.ttPositions[1][0] );
      pos.push( this.parent.ttPositions[1][1] ); // 69       
      pos.push( this.parent.ttPositions[1][2] );
      
      pos.push( this.parent.ttPositions[11][0] );
      pos.push( this.parent.ttPositions[11][1] ); // 70       
      pos.push( this.parent.ttPositions[11][2] );
      
      pos.push( this.parent.ttPositions[34][0] );
      pos.push( this.parent.ttPositions[34][1] ); // 71   
      pos.push( this.parent.ttPositions[34][2] );   

      faces.push( count, count+3, count+1, count+1, count+3, count+2 );
      count += 4; 
      
      pos.push( this.parent.ttPositions[32][0] );
      pos.push( this.parent.ttPositions[32][1] ); // 72       
      pos.push( this.parent.ttPositions[32][2] );

      pos.push( this.parent.ttPositions[8][0] );
      pos.push( this.parent.ttPositions[8][1] ); // 73       
      pos.push( this.parent.ttPositions[8][2] );
      
      pos.push( this.parent.ttPositions[0][0] );
      pos.push( this.parent.ttPositions[0][1] ); // 74       
      pos.push( this.parent.ttPositions[0][2] );
      
      pos.push( this.parent.ttPositions[33][0] );
      pos.push( this.parent.ttPositions[33][1] ); // 75   
      pos.push( this.parent.ttPositions[33][2] );   

      faces.push( count, count+3, count+1, count+1, count+3, count+2 );
      count += 4;         

      pos.push( this.parent.ttPositions[20][0] );
      pos.push( this.parent.ttPositions[20][1] ); // 76       
      pos.push( this.parent.ttPositions[20][2] );

      pos.push( this.parent.ttPositions[38][0] );
      pos.push( this.parent.ttPositions[38][1] ); // 77       
      pos.push( this.parent.ttPositions[38][2] );
      
      pos.push( this.parent.ttPositions[39][0] );
      pos.push( this.parent.ttPositions[39][1] ); // 78       
      pos.push( this.parent.ttPositions[39][2] );
      
      pos.push( this.parent.ttPositions[3][0] );
      pos.push( this.parent.ttPositions[3][1] ); // 79   
      pos.push( this.parent.ttPositions[3][2] );   

      faces.push( count, count+3, count+1, count+1, count+3, count+2 );
      count += 4; 


      // z negative
      pos.push( this.parent.ttPositions[6][0] );
      pos.push( this.parent.ttPositions[6][1] ); // 80       
      pos.push( this.parent.ttPositions[6][2] );

      pos.push( this.parent.ttPositions[45][0] );
      pos.push( this.parent.ttPositions[45][1] ); // 81       
      pos.push( this.parent.ttPositions[45][2] );
      
      pos.push( this.parent.ttPositions[44][0] );
      pos.push( this.parent.ttPositions[44][1] ); // 82       
      pos.push( this.parent.ttPositions[44][2] );
      
      pos.push( this.parent.ttPositions[26][0] );
      pos.push( this.parent.ttPositions[26][1] ); // 83   
      pos.push( this.parent.ttPositions[26][2] );   

      faces.push( count, count+3, count+1, count+1, count+3, count+2 );
      count += 4;  

      pos.push( this.parent.ttPositions[43][0] );
      pos.push( this.parent.ttPositions[43][1] ); // 84       
      pos.push( this.parent.ttPositions[43][2] );

      pos.push( this.parent.ttPositions[5][0] );
      pos.push( this.parent.ttPositions[5][1] ); // 85       
      pos.push( this.parent.ttPositions[5][2] );
      
      pos.push( this.parent.ttPositions[14][0] );
      pos.push( this.parent.ttPositions[14][1] ); // 86       
      pos.push( this.parent.ttPositions[14][2] );
      
      pos.push( this.parent.ttPositions[42][0] );
      pos.push( this.parent.ttPositions[42][1] ); // 87   
      pos.push( this.parent.ttPositions[42][2] );   

      faces.push( count, count+3, count+1, count+1, count+3, count+2 );
      count += 4;  

      pos.push( this.parent.ttPositions[40][0] );
      pos.push( this.parent.ttPositions[40][1] ); // 88       
      pos.push( this.parent.ttPositions[40][2] );

      pos.push( this.parent.ttPositions[17][0] );
      pos.push( this.parent.ttPositions[17][1] ); // 89       
      pos.push( this.parent.ttPositions[17][2] );
      
      pos.push( this.parent.ttPositions[4][0] );
      pos.push( this.parent.ttPositions[4][1] ); // 90       
      pos.push( this.parent.ttPositions[4][2] );
      
      pos.push( this.parent.ttPositions[41][0] );
      pos.push( this.parent.ttPositions[41][1] ); // 91   
      pos.push( this.parent.ttPositions[41][2] );   

      faces.push( count, count+3, count+1, count+1, count+3, count+2 );
      count += 4; 

      pos.push( this.parent.ttPositions[29][0] );
      pos.push( this.parent.ttPositions[29][1] ); // 92       
      pos.push( this.parent.ttPositions[29][2] );

      pos.push( this.parent.ttPositions[46][0] );
      pos.push( this.parent.ttPositions[46][1] ); // 93       
      pos.push( this.parent.ttPositions[46][2] );
      
      pos.push( this.parent.ttPositions[47][0] );
      pos.push( this.parent.ttPositions[47][1] ); // 94       
      pos.push( this.parent.ttPositions[47][2] );
      
      pos.push( this.parent.ttPositions[7][0] );
      pos.push( this.parent.ttPositions[7][1] ); // 95   
      pos.push( this.parent.ttPositions[7][2] );   

      faces.push( count, count+3, count+1, count+1, count+3, count+2 );

      var surface = {
        "extends": "http://vwf.example.com/node3.vwf",
        "type": "mesh/definition",
        "properties": { 
          "meshDefinition": { "positions": pos, "faces": faces, "color": [ 255, 255, 255 ], },
        },
      };
      
      this.children.create( "scaleSurfaces", surface );
    }    
  } 
  this.deleteGeometry = function() {
    if ( this.scaleSurfaces ) {
      this.children.delete( this.scaleSurfaces );
    }
  } //@ sourceURL=scaleXYZ.vwf