package
{
import fr.seraf.wow.primitive.WOWPlane;
import fr.seraf.wow.primitive.WSphere;
import mx.collections.ArrayCollection;
import org.papervision3d.materials.utils.MaterialsList;
public class ApplicationManager
{
protected static const BALLS_COUNT:int = 10;
protected static var instance:ApplicationManager = null;
protected var balls:ArrayCollection = new ArrayCollection();
public static function get Instance():ApplicationManager
{
if (instance == null)
instance = new ApplicationManager();
return instance;
}
public function ApplicationManager()
{
}
public function startupApplicationManager():void
{
var materials2:MaterialsList = new MaterialsList();
materials2.addMaterial(ResourceManager.Wood_Tex, "Material01");
// floor
var boxBoundingArea:WOWPlane = new WOWPlane();
boxBoundingArea.setPosition(0,500,1000);
boxBoundingArea.fixed = true;
new PhysicsMeshObject().startupPhysicsMeshObject(ResourceManager.PlaneXML, materials2, boxBoundingArea);
createBalls();
}
public function createBalls():void
{
var materials:MaterialsList = new MaterialsList();
materials.addMaterial(ResourceManager.Metal_Tex, "Material02");
for (var j:int = 0; j < balls.length; ++j)
{
(balls[j] as PhysicsMeshObject).shutdown();
}
balls.removeAll();
var x:Number, y:Number, z:Number;
for (var i:int = 0; i < BALLS_COUNT; ++i)
{
// doing this ensures that a shpere will drop onto another
// creating a more interesting effect
if (i % 2 == 0)
{
x = Math.random() * -800 + 400;
y = Math.random() * -800 + 200;
z = Math.random() * 800 + 100;
}
else
{
x = x + Math.random() * -60 + 30;
y = y + 200;
z = z + Math.random() * -60 + 30;
}
var boundingArea:WSphere = new WSphere(x, y, z, 75, true);
balls.addItem(new PhysicsMeshObject().startupPhysicsMeshObject(ResourceManager.BallXML, materials, boundingArea));
}
}
public function drop():void
{
for (var j:int = 0; j < balls.length; ++j)
{
(balls[j] as PhysicsMeshObject).boundedArea.fixed = false;
}
}
public function shutdown():void
{
}
}
}