1     package
2     {
3        import away3d.primitives.Cone;
4        import away3d.primitives.Cube;
5        import away3d.primitives.Cylinder;
6        import away3d.primitives.GeodesicSphere;
7        import away3d.primitives.Plane;
8        import away3d.primitives.RoundedCube;
9        import away3d.primitives.SeaTurtle;
10       import away3d.primitives.Torus;
11       import away3d.primitives.Triangle;
12       import away3d.primitives.Trident;
13
14       public class ApplicationManager extends BaseObject
15       {
16          protected var mesh:MeshObject = null;
17
18          public function ApplicationManager(engineManager:EngineManager)
19          {
20             super(engineManager);
21          }
22
23          public function startupApplicationManager():ApplicationManager
24          {
25             super.startupBaseObject();
26
27             if (engineManager.ModelType == "cube")
28                setupCube();
29             else if (engineManager.ModelType == "torus")
30                setupTorus();
31             else if (engineManager.ModelType == "cone")
32                setupCone();
33             else if (engineManager.ModelType == "cylinder")
34                setupCylinder();
35             else if (engineManager.ModelType == "geodesic sphere")
36                setupGeodesicSphere();
37             else if (engineManager.ModelType == "plane")
38                setupPlane();
39             else if (engineManager.ModelType == "rounded cube")
40                setupRoundedCube();
41             else if (engineManager.ModelType == "sea turtle")
42                setupSeaTurtle();
43             else if (engineManager.ModelType == "triangle")
44                setupTriangle();
45             else if (engineManager.ModelType == "trident")
46                setupTrident();
47
48             return this;
49          }
50
51          public function setupCube():void
52          {
53             if (mesh != null) mesh.shutdown();
54             mesh = new MeshObject(engineManager).startupObject3DMeshObject(
55                new Cube(
56                   {material:engineManager.MyResourceManager.Yellow_Tex,
57                   width:30,
58                   height:30,
59                   depth:30,
60                   segmentsH:3,
61                   segmentsW:3}));
62          }
63
64          public function setupTorus():void
65          {
66             if (mesh != null) mesh.shutdown();
67             mesh = new MeshObject(engineManager).startupObject3DMeshObject(
68                new Torus(
69                   {material:engineManager.MyResourceManager.Yellow_Tex,
70                   radius:10,
71                   tube:15}));
72          }
73
74          public function setupCone():void
75          {
76             if (mesh != null) mesh.shutdown();
77             mesh = new MeshObject(engineManager).startupObject3DMeshObject(
78                new Cone(
79                   {material:engineManager.MyResourceManager.Yellow_Tex,
80                   radius:20,
81                   height:30}));
82          }
83
84          public function setupCylinder():void
85          {
86             if (mesh != null) mesh.shutdown();
87             mesh = new MeshObject(engineManager).startupObject3DMeshObject(
88                new Cylinder(
89                   {material:engineManager.MyResourceManager.Yellow_Tex,
90                   radius:20,
91                   height:30}));
92          }
93
94          public function setupGeodesicSphere():void
95          {
96             if (mesh != null) mesh.shutdown();
97             mesh = new MeshObject(engineManager).startupObject3DMeshObject(
98                new GeodesicSphere(
99                   {material:engineManager.MyResourceManager.Yellow_Tex,
100                  radius:20}));
101         }
102
103         public function setupPlane():void
104         {
105            if (mesh != null) mesh.shutdown();
106            mesh = new MeshObject(engineManager).startupObject3DMeshObject(
107               new Plane(
108                  {material:engineManager.MyResourceManager.Yellow_Tex,
109                  width:30,
110                  height:30}));
111         }
112
113         public function setupRoundedCube():void
114         {
115            if (mesh != null) mesh.shutdown();
116            mesh = new MeshObject(engineManager).startupObject3DMeshObject(
117               new RoundedCube(
118                  {material:engineManager.MyResourceManager.Yellow_Tex,
119                  width:30,
120                  height:30,
121                  depth:30,
122                  radius:5}));
123         }
124
125         public function setupSeaTurtle():void
126         {
127            if (mesh != null) mesh.shutdown();
128            mesh = new MeshObject(engineManager).startupObject3DMeshObject(
129               new SeaTurtle(
130                  {material:engineManager.MyResourceManager.Yellow_Tex}));
131            mesh.model.scale(0.1);
132         }
133
134         public function setupTriangle():void
135         {
136            if (mesh != null) mesh.shutdown();
137            mesh = new MeshObject(engineManager).startupObject3DMeshObject(
138               new Triangle(
139                  {material:engineManager.MyResourceManager.Yellow_Tex,
140                  edge:30}));
141         }
142
143         public function setupTrident():void
144         {
145            if (mesh != null) mesh.shutdown();
146            mesh = new MeshObject(engineManager).startupObject3DMeshObject(
147               new Trident(30, true));
148         }
149
150         public override function shutdown():void
151         {
152            super.shutdown();
153
154            mesh.shutdown();
155            mesh = null;
156         }
157
158         public override function enterFrame(dt:Number):void
159         {
160            if (mesh != null)
161            {
162               mesh.model.rotationX += 90 * dt;
163               mesh.model.rotationY += 90 * dt;
164            }
165         }
166
167      }
168   }