#ifdef GAME_TEMPLATE [EditorAttribute("box", "GameLib/Scripted", "Script model", "-0.25 -0.25 -0.25", "0.25 0.25 0.25", "255 0 0 255", "0 0 0 0", true, true, true)] class ScriptModelClass { } ScriptModelClass ScriptModelSource; class ScriptModel: GenericEntity { [Attribute("", "resourceNamePicker", "Model", "xob")] string Model; [Attribute("1", "combobox", "Physics", "", { ParamEnum("None", "2"), ParamEnum("Static", "1"), ParamEnum("Dynamic", "0") } )] int Type; void ScriptModel(IEntitySource src, IEntity parent) { if (Model== "") return; SetFlags(EntityFlags.ACTIVE | EntityFlags.SOLID | EntityFlags.VISIBLE, false); vobject vobj = GetObject(Model); SetObject(vobj, ""); ReleaseObject(vobj, false); if (Type == 1) { dBodyCreateStatic(this, 0xffffffff); // todo - defines for layer mask } else if (Type == 0) { if(!dBodyCreateDynamic(this, 1.0, 0xffffffff)) { //create implicit box vector mins, maxs; GetBounds(mins, maxs); vector center = (mins + maxs) * 0.5; vector size = maxs - mins; PhysicsGeomDef geoms[] = {PhysicsGeomDef("", dGeomCreateBox(size), "material/default", 0xffffffff)}; dBodyCreateDynamicEx(this, center, 1, geoms); } if(dBodyIsSet(this)) { dBodySetMass(this, 1.0); dBodyActive(this, ActiveState.ACTIVE); dBodyDynamic(this, true); } } } void ~ScriptModel() { if(dBodyIsSet(this)) dBodyDestroy(this); } } #endif