Navigation Menu

Skip to content
This repository has been archived by the owner on Jun 7, 2021. It is now read-only.

Commit

Permalink
Can now include transformable module to ruby classes
Browse files Browse the repository at this point in the history
  • Loading branch information
Groogy committed Dec 29, 2015
1 parent 17f073f commit e9d2207
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 15 deletions.
2 changes: 0 additions & 2 deletions ext/rbsfml/rbdrawable.cpp
Expand Up @@ -79,8 +79,6 @@ rbDrawableBridge::rbDrawableBridge()
{
}

#include <iostream>

void rbDrawableBridge::onDraw(sf::RenderTarget& target, sf::RenderStates states) const
{
rb::Value drawStack = rb::Value(rbRenderTarget::getDefinition()).getVar<symVarInternalDrawStack>();
Expand Down
46 changes: 33 additions & 13 deletions ext/rbsfml/rbtransformable.cpp
Expand Up @@ -29,30 +29,50 @@

rbTransformableModule rbTransformable::ourDefinition;

class rbTransformableImpl : public rbTransformable, sf::Transformable
{
public:
protected:
sf::Transformable* getTransformable() { return this; }
const sf::Transformable* getTransformable() const { return this; }
};

void rbTransformable::defineModule(const rb::Value& sfml)
{
ourDefinition = rbTransformableModule::defineModuleUnder("Transformable", sfml);
ourDefinition.defineMethod<0>("position=", &rbTransformable::setPosition);
ourDefinition.defineMethod<1>("position", &rbTransformable::getPosition);
ourDefinition.defineMethod<2>("rotation=", &rbTransformable::setRotation);
ourDefinition.defineMethod<3>("rotation", &rbTransformable::getRotation);
ourDefinition.defineMethod<4>("scale=", &rbTransformable::setScale);
ourDefinition.defineMethod<5>("scale", &rbTransformable::getScale);
ourDefinition.defineMethod<6>("origin=", &rbTransformable::setOrigin);
ourDefinition.defineMethod<7>("origin", &rbTransformable::getOrigin);
ourDefinition.defineMethod<8>("move", &rbTransformable::move);
ourDefinition.defineMethod<9>("rotate", &rbTransformable::rotate);
ourDefinition.defineMethod<10>("zoom", &rbTransformable::zoom);
ourDefinition.defineMethod<11>("transform", &rbTransformable::getTransform);
ourDefinition.defineMethod<12>("inverse_transform", &rbTransformable::getInverseTransform);
ourDefinition.defineMethod<1>("position=", &rbTransformable::setPosition);
ourDefinition.defineMethod<2>("position", &rbTransformable::getPosition);
ourDefinition.defineMethod<3>("rotation=", &rbTransformable::setRotation);
ourDefinition.defineMethod<4>("rotation", &rbTransformable::getRotation);
ourDefinition.defineMethod<5>("scale=", &rbTransformable::setScale);
ourDefinition.defineMethod<6>("scale", &rbTransformable::getScale);
ourDefinition.defineMethod<7>("origin=", &rbTransformable::setOrigin);
ourDefinition.defineMethod<8>("origin", &rbTransformable::getOrigin);
ourDefinition.defineMethod<9>("move", &rbTransformable::move);
ourDefinition.defineMethod<10>("rotate", &rbTransformable::rotate);
ourDefinition.defineMethod<11>("zoom", &rbTransformable::zoom);
ourDefinition.defineMethod<12>("transform", &rbTransformable::getTransform);
ourDefinition.defineMethod<13>("inverse_transform", &rbTransformable::getInverseTransform);
}

void rbTransformable::defineIncludeFunction()
{
ourDefinition.defineFunction<0>("included", &rbTransformable::included);
}

rbTransformableModule& rbTransformable::getDefinition()
{
return ourDefinition;
}

void rbTransformable::included(const rb::Value& base)
{
if(base.getType() == rb::ValueType::Class)
{
rb::defineAllocator<rb::DefaultAllocator<rbTransformableImpl>>(base);
}
}

void rbTransformable::setPosition(sf::Vector2f value)
{
getTransformable()->setPosition(value);
Expand Down
3 changes: 3 additions & 0 deletions ext/rbsfml/rbtransformable.hpp
Expand Up @@ -35,8 +35,11 @@ class rbTransformable : public virtual rbDrawableBaseType
{
public:
static void defineModule(const rb::Value& sfml);
static void defineIncludeFunction();
static rbTransformableModule& getDefinition();

static void included(const rb::Value& base);

void setPosition(sf::Vector2f value);
const sf::Vector2f& getPosition() const;

Expand Down

0 comments on commit e9d2207

Please sign in to comment.