X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fobject%2Fscripted_object.cpp;h=65dffb49e45ee59e57f49e4f6e305b1be81a1887;hb=ab9eab4c870195c2b60ce76b77044c35b31e8806;hp=90875f2c94dc1b90a7e4beac84062ba0e1934dbe;hpb=2892ebda09d24c977547159e34abf0244884b89e;p=supertux.git diff --git a/src/object/scripted_object.cpp b/src/object/scripted_object.cpp index 90875f2c9..65dffb49e 100644 --- a/src/object/scripted_object.cpp +++ b/src/object/scripted_object.cpp @@ -35,7 +35,7 @@ ScriptedObject::ScriptedObject(const lisp::Lisp& lisp) lisp.get("name", name); if(name == "") throw std::runtime_error("Scripted object must have a name specified"); - + // FIXME: do we need this? bbox is already set via .sprite file float width = sprite->get_width(); float height = sprite->get_height(); @@ -47,20 +47,28 @@ ScriptedObject::ScriptedObject(const lisp::Lisp& lisp) lisp.get("physic-enabled", physic_enabled); lisp.get("visible", visible); lisp.get("z-pos", layer); - if(solid) - flags |= FLAG_SOLID; + if( solid ){ + if( physic_enabled ){ + set_group( COLGROUP_MOVING ); + } else { + set_group( COLGROUP_STATIC ); + } + } else { + set_group( COLGROUP_DISABLED ); + } } void ScriptedObject::expose(HSQUIRRELVM vm, SQInteger table_idx) { - Scripting::ScriptedObject* interface = static_cast (this); - expose_object(vm, table_idx, interface, name, false); + if (name.empty()) return; + expose_object(vm, table_idx, dynamic_cast(this), name, false); } void ScriptedObject::unexpose(HSQUIRRELVM vm, SQInteger table_idx) { + if (name.empty()) return; Scripting::unexpose_object(vm, table_idx, name); } @@ -125,10 +133,15 @@ void ScriptedObject::set_solid(bool solid) { this->solid = solid; - if(solid) - flags |= FLAG_SOLID; - else - flags ^= FLAG_SOLID; + if( solid ){ + if( physic_enabled ){ + set_group( COLGROUP_MOVING ); + } else { + set_group( COLGROUP_STATIC ); + } + } else { + set_group( COLGROUP_DISABLED ); + } } bool