143 lines
2.6 KiB
Plaintext
143 lines
2.6 KiB
Plaintext
EntityList <- [];
|
|
|
|
class Entity
|
|
{
|
|
function tick (time)
|
|
{
|
|
}
|
|
|
|
function step (time)
|
|
{
|
|
}
|
|
}
|
|
|
|
function onFrame (time)
|
|
{
|
|
for(local i = 0; i < EntityList.len();)
|
|
{
|
|
if( EntityList[i].tick( time ) == 1 )
|
|
{
|
|
EntityList.remove(i);
|
|
continue;
|
|
}
|
|
|
|
++i;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
function onStep (time)
|
|
{
|
|
for(local i = 0; i < EntityList.len(); ++i )
|
|
{
|
|
EntityList[i].step( time )
|
|
}
|
|
}
|
|
|
|
class Asteroid extends Entity
|
|
{
|
|
rigidbody = null;
|
|
trafonode = null;
|
|
modelnode = null;
|
|
|
|
constructor()
|
|
{
|
|
rigidbody = RigidBody (this);
|
|
rigidbody.addCollisionMesh ("asteroid.collision", 1000.0);
|
|
|
|
model = Model ("asteroid");
|
|
|
|
node = Node();
|
|
node.setPositionProvider (rigidbody);
|
|
node.setRenderProvider (model);
|
|
|
|
sprite = Sprite ("name");
|
|
spritenode = Node (node);
|
|
spritenode.setRenderProvider (sprite);
|
|
spritenode.setRelativePosition (Vector(10.0, 0.0, 0.0));
|
|
//pg = ParticleGenerator ("comettail");
|
|
}
|
|
|
|
function setPosition( position )
|
|
{
|
|
rigidbody.setPosition( position );
|
|
}
|
|
}
|
|
|
|
font <- null;
|
|
logo <- null;
|
|
lastFPS <- 0;
|
|
frameCount <- 0;
|
|
FPS <- 1;
|
|
body <- null;
|
|
camera <- null;
|
|
mainSceneGraph <- null;
|
|
|
|
function Initialize()
|
|
{
|
|
::font = Font();//Font ("DejaVuSans.ttf", 24, 1 );
|
|
::logo = Image ("image.png", 0.0, 0.0, 1.0, 1.0);
|
|
::body = RigidBody();
|
|
::camera = Camera();
|
|
::mainSceneGraph = SceneGraph();
|
|
// ::camera.lookAt (0.0, 0.0, 0.0);
|
|
::mainSceneGraph.setCamera (::camera);
|
|
setSceneGraph(::mainSceneGraph);
|
|
local model = Model ("combat");
|
|
local node = SceneNode("test");
|
|
node.setModel (model);
|
|
node.setPosition (0.0, 0.0, -50.0);
|
|
::mainSceneGraph.attachNode (node);
|
|
|
|
}
|
|
|
|
function OnFrame (delta, total)
|
|
{
|
|
::camera.setPosition (::body.getPosition());
|
|
}
|
|
|
|
function OnOverlay (delta, total)
|
|
{
|
|
::frameCount += 1
|
|
::lastFPS += delta;
|
|
|
|
if (::lastFPS > 0.1)
|
|
{
|
|
::FPS = ::frameCount * 10;
|
|
::frameCount = 0;
|
|
::lastFPS -= 0.1;
|
|
}
|
|
/*
|
|
if (total < 2.0)
|
|
::logo.draw (0.5, 0.5);
|
|
else
|
|
*/
|
|
{
|
|
v <- ::body.getPosition();
|
|
::font.print(10, 40, "Position: " + v.x + ", " + v.y + ", " + v.z, 1, 1 );
|
|
|
|
local seconds = floor(total % 60);
|
|
if (seconds < 10)
|
|
::font.print(10, 70, "Time: " + floor(total / 60.0) + ":0" + seconds, 1, 1 );
|
|
else
|
|
::font.print(10, 70, "Time: " + floor(total / 60.0) + ":" + seconds, 1, 1 );
|
|
|
|
if (::FPS > 0)
|
|
{
|
|
local fps = "FPS: " + FPS + " / " + (1.0/::FPS)*1000.0 + " ms";
|
|
::font.print( 10, 10, fps, 1, 1 );
|
|
}
|
|
}
|
|
}
|
|
|
|
function OnStep (delta, total)
|
|
{
|
|
::body.applyLocalForce( Vector(0.0, 0.0, 1.0) );
|
|
}
|
|
|
|
function Shutdown()
|
|
{
|
|
}
|
|
|