Browse Source

added BodyTrait::StaticBody

opengl-renderer-broken
Martin Dørum 4 years ago
parent
commit
f0825c4786
1 changed files with 19 additions and 4 deletions
  1. 19
    4
      libswan/include/swan/traits/BodyTrait.h

+ 19
- 4
libswan/include/swan/traits/BodyTrait.h View File

@@ -32,16 +32,16 @@ public:
virtual void moveTo(Vec2 pos) = 0;
};

// PhysicsBody is an implementation of BodyTrait::Body which implements
// PhysicsBody is a BodyTrait::Body which implements
// a bunch of physics stuff.
class PhysicsBody: public Body {
public:
PhysicsBody(Vec2 size, float mass, Vec2 pos = Vec2::ZERO):
size_(size), mass_(mass), pos_(pos) {};

BodyTrait::Bounds getBounds() override { return BodyTrait::Bounds{ pos_, size_ }; };
void move(Vec2 rel) { pos_ += rel; }
void moveTo(Vec2 pos) { pos_ = pos; }
BodyTrait::Bounds getBounds() override { return BodyTrait::Bounds{ pos_, size_ }; }
void move(Vec2 rel) override { pos_ += rel; }
void moveTo(Vec2 pos) override { pos_ = pos; }

void friction(Vec2 coef = Vec2(400, 50));
void gravity(Vec2 g = Vec2(0, 20));
@@ -64,5 +64,20 @@ private:
void collideY(WorldPlane &plane);
};

// StaticBody is a BodyTrait::Body which just has a static
// position and size.
class StaticBody: public Body {
public:
StaticBody(Vec2 size, Vec2 pos):
size_(size), pos_(pos) {}

BodyTrait::Bounds getBounds() override { return BodyTrait::Bounds{ pos_, size_ }; }
void move(Vec2 rel) override { pos_ += rel; }
void moveTo(Vec2 pos) override { pos_ = pos; }

Vec2 size_;
Vec2 pos_;
};

}
}

Loading…
Cancel
Save