+void
+Candle::expose(HSQUIRRELVM vm, SQInteger table_idx)
+{
+ if (name.empty()) return;
+ Scripting::Candle* interface = new Scripting::Candle(this);
+ expose_object(vm, table_idx, interface, name, true);
+}
+
+void
+Candle::unexpose(HSQUIRRELVM vm, SQInteger table_idx)
+{
+ if (name.empty()) return;
+ Scripting::unexpose_object(vm, table_idx, name);
+}
+
+void
+Candle::puff_smoke()
+{
+ Vector ppos = bbox.get_middle();
+ Vector pspeed = Vector(0, -150);
+ Vector paccel = Vector(0,0);
+ Sector::current()->add_object(new SpriteParticle("images/objects/particles/smoke.sprite", "default", ppos, ANCHOR_MIDDLE, pspeed, paccel, LAYER_BACKGROUNDTILES+2));
+}
+
+bool
+Candle::get_burning()
+{
+ return burning;
+}
+
+void
+Candle::set_burning(bool burning)
+{
+ if (this->burning == burning) return;
+ this->burning = burning;
+ if (burning) {
+ sprite->set_action("on");
+ puff_smoke();
+ } else {
+ sprite->set_action("off");
+ puff_smoke();
+ }
+}
+