X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fobject%2Fscripted_object.cpp;h=eadcc43455b48bcf913bc8821bc482d9b4d60965;hb=ed161bf9da56b598f3db3637c6017fa22e9ab0d7;hp=67963ec2698e16f27a037f4a05ccb0d0a0958283;hpb=a113d3bd1feddd510e3b2852b0d42522735eee40;p=supertux.git diff --git a/src/object/scripted_object.cpp b/src/object/scripted_object.cpp index 67963ec26..eadcc4345 100644 --- a/src/object/scripted_object.cpp +++ b/src/object/scripted_object.cpp @@ -29,7 +29,7 @@ #include "math/vector.hpp" ScriptedObject::ScriptedObject(const lisp::Lisp& lisp) - : MovingSprite(lisp, LAYER_OBJECTS, COLGROUP_MOVING), + : MovingSprite(lisp, LAYER_OBJECTS, COLGROUP_MOVING_STATIC), solid(true), physic_enabled(true), visible(true), new_vel_set(false) { lisp.get("name", name); @@ -47,20 +47,24 @@ 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 ){ + set_group( COLGROUP_MOVING_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 +129,11 @@ void ScriptedObject::set_solid(bool solid) { this->solid = solid; - if(solid) - flags |= FLAG_SOLID; - else - flags ^= FLAG_SOLID; + if( solid ){ + set_group( COLGROUP_MOVING_STATIC ); + } else { + set_group( COLGROUP_DISABLED ); + } } bool @@ -188,7 +193,7 @@ ScriptedObject::collision_solid(const CollisionHit& hit) if(physic.get_velocity_y() > 0) physic.set_velocity_y(0); } else if(hit.top) { - physic.set_velocity_y(.1); + physic.set_velocity_y(.1f); } if(hit.left || hit.right) {