2010-01-22 21:03:14 +01:00
|
|
|
var g_NewIID = 1000; // some arbitrary not-yet-used number
|
2010-07-18 18:06:52 +02:00
|
|
|
var g_NewMTID = 1000; // some arbitrary not-yet-used number
|
2010-01-09 20:20:14 +01:00
|
|
|
var g_ComponentTypes = {};
|
|
|
|
var g_Components = {};
|
|
|
|
|
|
|
|
// Emulate some engine functions:
|
|
|
|
|
|
|
|
Engine.RegisterComponentType = function(iid, name, ctor)
|
|
|
|
{
|
|
|
|
TS_ASSERT(!g_ComponentTypes[name]);
|
|
|
|
g_ComponentTypes[name] = { iid: iid, ctor: ctor };
|
2010-01-22 21:03:14 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
Engine.RegisterInterface = function(name)
|
|
|
|
{
|
|
|
|
global["IID_"+name] = g_NewIID++;
|
|
|
|
};
|
2010-01-09 20:20:14 +01:00
|
|
|
|
2010-07-18 18:06:52 +02:00
|
|
|
Engine.RegisterMessageType = function(name)
|
|
|
|
{
|
|
|
|
global["MT_"+name] = g_NewMTID++;
|
|
|
|
};
|
|
|
|
|
2010-01-09 20:20:14 +01:00
|
|
|
Engine.QueryInterface = function(ent, iid)
|
|
|
|
{
|
|
|
|
if (g_Components[ent] && g_Components[ent][iid])
|
|
|
|
return g_Components[ent][iid];
|
|
|
|
return null;
|
2010-01-22 21:03:14 +01:00
|
|
|
};
|
2010-01-09 20:20:14 +01:00
|
|
|
|
2010-11-22 21:12:04 +01:00
|
|
|
Engine.RegisterGlobal = function(name, value)
|
|
|
|
{
|
|
|
|
global[name] = value;
|
|
|
|
};
|
|
|
|
|
|
|
|
Engine.DestroyEntity = function(ent)
|
|
|
|
{
|
|
|
|
for (var cid in g_Components[ent])
|
|
|
|
{
|
|
|
|
var cmp = g_Components[ent][cid];
|
|
|
|
if (cmp.Deinit)
|
|
|
|
cmp.Deinit();
|
|
|
|
}
|
|
|
|
|
|
|
|
delete g_Components[ent];
|
|
|
|
|
|
|
|
// TODO: should send Destroy message
|
|
|
|
};
|
|
|
|
|
2012-04-05 16:13:36 +02:00
|
|
|
Engine.PostMessage = function(ent, iid, message)
|
|
|
|
{
|
|
|
|
// TODO: make this send a message if necessary
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
Engine.BroadcastMessage = function(iid, message)
|
|
|
|
{
|
|
|
|
// TODO: make this send a message if necessary
|
|
|
|
};
|
2010-01-09 20:20:14 +01:00
|
|
|
|
2010-11-22 21:12:04 +01:00
|
|
|
global.ResetState = function()
|
|
|
|
{
|
|
|
|
g_Components = {};
|
|
|
|
};
|
|
|
|
|
2010-01-09 20:20:14 +01:00
|
|
|
global.AddMock = function(ent, iid, mock)
|
|
|
|
{
|
|
|
|
if (!g_Components[ent])
|
|
|
|
g_Components[ent] = {};
|
|
|
|
g_Components[ent][iid] = mock;
|
2010-01-22 21:03:14 +01:00
|
|
|
};
|
2010-01-09 20:20:14 +01:00
|
|
|
|
|
|
|
global.ConstructComponent = function(ent, name, template)
|
|
|
|
{
|
|
|
|
var cmp = new g_ComponentTypes[name].ctor();
|
|
|
|
cmp.entity = ent;
|
|
|
|
cmp.template = template;
|
|
|
|
cmp.Init();
|
2010-11-22 21:12:04 +01:00
|
|
|
|
|
|
|
if (!g_Components[ent])
|
|
|
|
g_Components[ent] = {};
|
|
|
|
g_Components[ent][g_ComponentTypes[name].iid] = cmp;
|
|
|
|
|
2010-01-09 20:20:14 +01:00
|
|
|
return cmp;
|
2010-01-22 21:03:14 +01:00
|
|
|
};
|