载入中...
搜索中...
未找到
Fixture.h
浏览该文件的文档.
1#pragma once
2
3#include <string>
4
5class b2Fixture;
6
7namespace eve::physics {
8
9class Body;
10class World;
11
16class Fixture {
17public:
19 Fixture(World *world, Body *body, b2Fixture *fixture);
20 ~Fixture();
21
22 Fixture(const Fixture &) = delete;
23 Fixture &operator=(const Fixture &) = delete;
24
26 void setSensor(bool sensor);
27 bool isSensor() const;
28
30 void setFriction(float friction);
31 float getFriction() const;
32
33 void setRestitution(float restitution);
34 float getRestitution() const;
35
36 void setDensity(float density);
37 float getDensity() const;
38
40 void setTag(const std::string &tag) { tag_ = tag; }
41 const std::string &getTag() const { return tag_; }
42
44 void setCategoryBits(int bits);
45 int getCategoryBits() const;
46 void setMaskBits(int bits);
47 int getMaskBits() const;
48 void setGroupIndex(int index);
49 int getGroupIndex() const;
50
52 int getBodyId() const;
53
55 Body *getBody() { return body_; }
56
58 bool testPoint(float x, float y) const;
59
61 void destroy();
62
64 b2Fixture *raw() { return fixture_; }
65 const b2Fixture *raw() const { return fixture_; }
66
68 void invalidate();
69
70private:
71 friend class World;
72 friend class Body;
73
74 World *world_ = nullptr;
75 Body *body_ = nullptr;
76 b2Fixture *fixture_ = nullptr;
77 std::string tag_;
78};
79
80} // namespace eve::physics
int y
Definition Grass.cpp:135
int x
Definition Grass.cpp:135
JobFunc body
2D rigid body (Box2D) in pixel-space coordinates. Owned by a World; create shapes with newRectangleFi...
Definition Body.h:16
2D fixture: a shape attached to a Body with material + filter settings. Also carries a string tag use...
Definition Fixture.h:16
void destroy()
Destroys the fixture inside its world.
Definition Fixture.cpp:30
Body * getBody()
Owning body.
Definition Fixture.h:55
void setSensor(bool sensor)
Sensor fixtures report contacts but never collide.
Definition Fixture.cpp:43
b2Fixture * raw()
Raw Box2D fixture.
Definition Fixture.h:64
bool testPoint(float x, float y) const
Pixel-space point-in-fixture test (uses World meter).
Definition Fixture.cpp:105
int getMaskBits() const
Definition Fixture.cpp:90
Fixture & operator=(const Fixture &)=delete
int getCategoryBits() const
Definition Fixture.cpp:79
void setMaskBits(int bits)
Definition Fixture.cpp:83
void invalidate()
Internal: marks the wrapper invalid after destruction.
Definition Fixture.cpp:23
float getFriction() const
Definition Fixture.cpp:55
const b2Fixture * raw() const
Definition Fixture.h:65
void setDensity(float density)
Definition Fixture.cpp:64
bool isSensor() const
Definition Fixture.cpp:48
void setFriction(float friction)
Material properties.
Definition Fixture.cpp:50
int getGroupIndex() const
Definition Fixture.cpp:99
int getBodyId() const
Id of the owning body.
Definition Fixture.cpp:103
void setCategoryBits(int bits)
Collision filtering (Box2D category/mask bits, group index).
Definition Fixture.cpp:72
void setGroupIndex(int index)
Definition Fixture.cpp:92
const std::string & getTag() const
Definition Fixture.h:41
Fixture(const Fixture &)=delete
float getDensity() const
Definition Fixture.cpp:70
void setRestitution(float restitution)
Definition Fixture.cpp:57
void setTag(const std::string &tag)
Arbitrary string tag surfaced in begin/end contact events.
Definition Fixture.h:40
float getRestitution() const
Definition Fixture.cpp:62
Box2D world wrapper (2D physics) with pixel-space coordinates. Handles stepping, gravity,...
Definition World.h:31