X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2FCharacter.hh;h=090e7cb97a1d308e124735f01190f21751e785e0;hp=b72e8c87e58910d6296218b2eff58696e8ac2ab1;hb=fcb40aa40c6a13ca0e0962b35973ac4574779574;hpb=fdfba4553433b9b2804c2772c7645211b828c2ea diff --git a/src/Character.hh b/src/Character.hh index b72e8c8..090e7cb 100644 --- a/src/Character.hh +++ b/src/Character.hh @@ -35,8 +35,7 @@ #include #include #include -#include -#include +#include #include @@ -51,6 +50,7 @@ typedef boost::shared_ptr CharacterP; struct Character : public Mf::Entity { + /* struct Derivative { Mf::Vector2 velocity; @@ -90,6 +90,11 @@ struct Character : public Mf::Entity Mf::Scalar mass; Mf::Scalar inverseMass; + void recalculate() + { + velocity = momentum * inverseMass; + } + void getDerivative(Derivative& derivative, Mf::Scalar t) const { @@ -97,11 +102,9 @@ struct Character : public Mf::Entity //derivative.force = Mf::Vector2(0.0, 0.0); derivative.velocity = velocity; derivative.force = force; - } - void recalculate() - { - velocity = momentum * inverseMass; + //Mf::Vector2 x = position - Mf::Vector2(500.0, 200.0); + //derivative.force += -15.0 * x - 1.5 * velocity; } void applyDerivative(const Derivative& derivative, Mf::Scalar dt) @@ -111,6 +114,9 @@ struct Character : public Mf::Entity recalculate(); } + // these two operator overloads all using the state in generic + // interpolator implementations + State operator*(Mf::Scalar scalar) const { State state = *this; @@ -120,7 +126,7 @@ struct Character : public Mf::Entity return state; } - State operator+(State state) const + State operator+(const State& state) const { State newState = *this; newState.position += state.position; @@ -129,11 +135,10 @@ struct Character : public Mf::Entity return newState; } }; +*/ - State previous; - State current; - - stlplus::ntree::iterator treeNode; + Mf::State2 previous; + Mf::State2 current; private: @@ -143,37 +148,23 @@ private: Mf::Tilemap tilemap_; Mf::Animation animation_; - void updateContainers(); +protected: -public: + Mf::Vector2 userForce; - inline static CharacterP alloc(const std::string& name) - { - return CharacterP(new Character(name)); - } +public: Character(const std::string& name); - virtual ~Character(); + virtual ~Character() {} - void update(Mf::Scalar t, Mf::Scalar dt); - void handleEvent(const Mf::Event& event); - void draw(Mf::Scalar alpha) const; + virtual void update(Mf::Scalar t, Mf::Scalar dt); + virtual void draw(Mf::Scalar alpha) const; Mf::Tilemap& getTilemap(); Mf::Animation& getAnimation(); }; -inline Character::State operator*(Mf::Scalar scalar, const Character::State& state) -{ - Character::State newState = state; - newState.position *= scalar; - newState.momentum *= scalar; - newState.recalculate(); - return newState; -} - - #endif // _CHARACTER_HH_ /** vim: set ts=4 sw=4 tw=80: *************************************************/