1. package
  2. {
  3. import away3dlite.cameras.HoverCamera3D;
  4. import away3dlite.core.base.Mesh;
  5. import away3dlite.core.utils.*;
  6. import away3dlite.events.MouseEvent3D;
  7. import away3dlite.loaders.*;
  8. import away3dlite.materials.*;
  9. import away3dlite.primitives.*;
  10. import away3dlite.templates.*;
  11. import gs.TweenMax;
  12.  
  13. import mx.core.Application;
  14.  
  15. public class ApplicationManager extends BasicTemplate
  16. {
  17. [Embed(source="../media/texture.jpg")]
  18. protected static const Tex1:Class;
  19.  
  20. protected var mesh:Mesh = null;
  21. protected var texture:BitmapMaterial = null;
  22. protected var hoverCamera:HoverCamera3D = null;
  23.  
  24. override protected function onInit():void
  25. {
  26. texture = new BitmapMaterial(Cast.bitmap(Tex1));
  27. texture.smooth = true;
  28.  
  29. hoverCamera = new HoverCamera3D(10, 100, mesh, 1000);
  30. view.camera = hoverCamera;
  31.  
  32. this.debug = false;
  33. this.useHandCursor = false;
  34.  
  35. createCone();
  36. }
  37.  
  38. /**
  39. * @inheritDoc
  40. */
  41. override protected function onPreRender():void
  42. {
  43. hoverCamera.zoom = mx.core.Application.application.sliderZoom.value;
  44. hoverCamera.tiltAngle = mx.core.Application.application.sliderTilt.value;
  45. hoverCamera.panAngle = mx.core.Application.application.sliderPan.value;
  46. hoverCamera.hover();
  47.  
  48. view.fireMouseEvent(MouseEvent3D.MOUSE_MOVE);
  49. }
  50.  
  51. protected function mouseOver(event:MouseEvent3D):void
  52. {
  53. if (mesh != null)
  54. {
  55. TweenMax.killAllTweens();
  56. TweenMax.to(mesh, 1, {scaleX:2, scaleY:2, scaleZ:2, yoyo:0});
  57. }
  58. }
  59.  
  60. protected function mouseOut(event:MouseEvent3D):void
  61. {
  62. if (mesh != null)
  63. {
  64. TweenMax.killAllTweens();
  65. TweenMax.to(mesh, 1, {scaleX:1, scaleY:1, scaleZ:1});
  66. }
  67. }
  68.  
  69. public function updateModel():void
  70. {
  71. switch (Application.application.cmbModel.text)
  72. {
  73. case "Cone":
  74. createCone();
  75. break;
  76. case "Cube6":
  77. createCube();
  78. break;
  79. case "Cylinder":
  80. createCylinder();
  81. break;
  82. case "Plane":
  83. createPlane();
  84. break;
  85. case "Sphere":
  86. createSphere();
  87. break;
  88. case "Torus":
  89. createTorus();
  90. break;
  91. }
  92. }
  93.  
  94. protected function removeMesh():void
  95. {
  96. if (mesh != null)
  97. {
  98. scene.removeChild(mesh);
  99. mesh.removeEventListener(MouseEvent3D.MOUSE_OVER, mouseOver);
  100. mesh.removeEventListener(MouseEvent3D.MOUSE_OUT, mouseOut);
  101. mesh = null;
  102. }
  103. }
  104.  
  105. protected function addMesh():void
  106. {
  107. scene.addChild(mesh);
  108. mesh.addEventListener(MouseEvent3D.MOUSE_OVER, mouseOver);
  109. mesh.addEventListener(MouseEvent3D.MOUSE_OUT, mouseOut);
  110. }
  111.  
  112. protected function createCube():void
  113. {
  114. removeMesh();
  115. mesh = new Cube6(texture, 10, 10, 10);
  116. addMesh();
  117. }
  118.  
  119. protected function createCone():void
  120. {
  121. removeMesh();
  122. mesh = new Cone(texture, 10, 20, 8, 1, false);
  123. addMesh();
  124. }
  125.  
  126. protected function createCylinder():void
  127. {
  128. removeMesh();
  129. mesh = new Cylinder(texture, 10, 20, 8, 1, false);
  130. addMesh();
  131. }
  132.  
  133. protected function createPlane():void
  134. {
  135. removeMesh();
  136. mesh = new Plane(texture, 10, 10, 1, 1, false);
  137. addMesh();
  138. }
  139.  
  140. protected function createSphere():void
  141. {
  142. removeMesh();
  143. mesh = new Sphere(texture, 10);
  144. addMesh();
  145. }
  146.  
  147. protected function createTorus():void
  148. {
  149. removeMesh();
  150. mesh = new Torus(texture, 10, 4, 8, 6, false);
  151. addMesh();
  152. }
  153. }
  154. }