48 #ifndef __CC_COMPLEX_OBSTACLE_H__
49 #define __CC_COMPLEX_OBSTACLE_H__
51 #include <Box2D/Dynamics/Joints/b2Joint.h>
52 #include "CUObstacle.h"
58 #pragma mark Complex Obstacle
90 std::vector<std::shared_ptr<Obstacle>>
_bodies;
95 #pragma mark Scene Graph Internals
115 #pragma mark Constructors
139 #pragma mark BodyDef Methods
152 return (_body !=
nullptr ? _body->GetType() :
_bodyinfo.type);
168 if (_body !=
nullptr) {
169 _body->SetType(value);
187 if (_body !=
nullptr) {
188 return Vec2(_body->GetPosition().x,_body->GetPosition().y);
216 if (_body !=
nullptr) {
217 _body->SetTransform(b2Vec2(x,y),_body->GetAngle());
230 virtual float getX()
const override {
231 return (_body !=
nullptr ? _body->GetPosition().x :
_bodyinfo.position.x);
244 virtual void setX(
float value)
override {
245 if (_body !=
nullptr) {
246 _body->SetTransform(b2Vec2(value,_body->GetPosition().y),_body->GetAngle());
259 virtual float getY()
const override {
260 return (_body !=
nullptr ? _body->GetPosition().y :
_bodyinfo.position.y);
273 virtual void setY(
float value)
override {
274 if (_body !=
nullptr) {
275 _body->SetTransform(b2Vec2(_body->GetPosition().x,value),_body->GetAngle());
290 return (_body !=
nullptr ? _body->GetAngle() :
_bodyinfo.angle);
304 if (_body !=
nullptr) {
305 _body->SetTransform(_body->GetPosition(),value);
323 if (_body !=
nullptr) {
324 return Vec2(_body->GetLinearVelocity().x,_body->GetLinearVelocity().y);
352 if (_body !=
nullptr) {
353 _body->SetLinearVelocity(b2Vec2(x,y));
366 virtual float getVX()
const override {
367 if (_body !=
nullptr) {
368 return _body->GetLinearVelocity().x;
384 virtual void setVX(
float value)
override {
385 if (_body !=
nullptr) {
386 _body->SetLinearVelocity(b2Vec2(value,_body->GetLinearVelocity().y));
397 virtual float getVY()
const override {
398 if (_body !=
nullptr) {
399 return _body->GetLinearVelocity().y;
415 virtual void setVY(
float value)
override {
416 if (_body !=
nullptr) {
417 _body->SetLinearVelocity(b2Vec2(value,_body->GetLinearVelocity().y));
432 return (_body !=
nullptr ? _body->GetAngularVelocity() :
_bodyinfo.angularVelocity);
446 if (_body !=
nullptr) {
447 _body->SetAngularVelocity(value);
468 return (_body !=
nullptr ? _body->IsActive() :
_bodyinfo.active);
485 if (_body !=
nullptr) {
486 _body->SetActive(value);
507 return (_body !=
nullptr ? _body->IsAwake() :
_bodyinfo.awake);
524 if (_body !=
nullptr) {
525 _body->SetAwake(value);
546 return (_body !=
nullptr ? _body->IsSleepingAllowed() :
_bodyinfo.allowSleep);
563 if (_body !=
nullptr) {
564 _body->SetSleepingAllowed(value);
592 return (_body !=
nullptr ? _body->IsBullet() :
_bodyinfo.bullet);
615 if (_body !=
nullptr) {
616 _body->SetBullet(value);
632 return (_body !=
nullptr ? _body->IsFixedRotation() :
_bodyinfo.fixedRotation);
646 if (_body !=
nullptr) {
647 _body->SetFixedRotation(value);
666 return (_body !=
nullptr ? _body->GetGravityScale() :
_bodyinfo.gravityScale);
681 if (_body !=
nullptr) {
682 _body->SetGravityScale(value);
706 return (_body !=
nullptr ? _body->GetLinearDamping() :
_bodyinfo.linearDamping);
726 if (_body !=
nullptr) {
727 _body->SetLinearDamping(value);
751 return (_body !=
nullptr ? _body->GetAngularDamping() :
_bodyinfo.angularDamping);
771 if (_body !=
nullptr) {
772 _body->SetAngularDamping(value);
780 #pragma mark FixtureDef Methods
793 virtual void setDensity(
float value)
override;
839 virtual void setSensor(
bool value)
override;
860 #pragma mark MassData Methods
875 if (_body !=
nullptr) {
876 return Vec2(_body->GetLocalCenter().x,_body->GetLocalCenter().y);
905 if (_body !=
nullptr) {
923 return (_body !=
nullptr ? _body->GetInertia() :
_massdata.I);
940 if (_body !=
nullptr) {
955 return (_body !=
nullptr ? _body->GetMass() :
_massdata.mass);
969 if (_body !=
nullptr) {
983 if (_body !=
nullptr) {
984 _body->ResetMassData();
989 #pragma mark Physics Methods
1082 virtual void update(
float delta)
override;
1086 #pragma mark Scene Graph Methods
1124 virtual void setDebugScene(
const std::shared_ptr<Node>& node)
override;
virtual void setDebugScene(const std::shared_ptr< Node > &node) override
virtual bool createJoints(b2World &world)
Definition: CUComplexObstacle.h:1070
virtual float getLinearDamping() const override
Definition: CUComplexObstacle.h:705
virtual void setGravityScale(float value) override
Definition: CUComplexObstacle.h:680
float x
Definition: CUVec2.h:66
const std::vector< std::shared_ptr< Obstacle > > & getBodies()
Definition: CUComplexObstacle.h:1008
virtual float getVY() const override
Definition: CUComplexObstacle.h:397
virtual bool activatePhysics(b2World &world) override
float y
Definition: CUVec2.h:68
virtual ~ComplexObstacle()
virtual void resetMass() override
Definition: CUComplexObstacle.h:981
virtual float getAngularDamping() const override
Definition: CUComplexObstacle.h:750
virtual void setFriction(float value) override
virtual void setLinearVelocity(float x, float y) override
Definition: CUComplexObstacle.h:351
virtual Vec2 getCentroid() const override
Definition: CUComplexObstacle.h:874
const std::vector< b2Joint * > & getJoints()
Definition: CUComplexObstacle.h:1018
b2MassData _massdata
Definition: CUObstacle.h:83
virtual void releaseFixtures()
Definition: CUComplexObstacle.h:1058
virtual void deactivatePhysics(b2World &world) override
virtual bool isFixedRotation() const override
Definition: CUComplexObstacle.h:631
virtual void setDensity(float value) override
virtual void setFilterData(b2Filter value) override
ComplexObstacle()
Definition: CUComplexObstacle.h:124
virtual void setSleepingAllowed(bool value) override
Definition: CUComplexObstacle.h:562
virtual void setLinearVelocity(const Vec2 &value) override
Definition: CUComplexObstacle.h:338
virtual float getGravityScale() const override
Definition: CUComplexObstacle.h:665
virtual void setBullet(bool value) override
Definition: CUComplexObstacle.h:614
virtual float getX() const override
Definition: CUComplexObstacle.h:230
virtual void setBodyType(b2BodyType value) override
Definition: CUComplexObstacle.h:167
virtual float getAngularVelocity() const override
Definition: CUComplexObstacle.h:431
virtual void setCentroid(const Vec2 &value)
Definition: CUObstacle.h:715
virtual float getY() const override
Definition: CUComplexObstacle.h:259
virtual bool isBullet() const override
Definition: CUComplexObstacle.h:591
virtual void update(float delta) override
virtual bool isActive() const override
Definition: CUComplexObstacle.h:467
std::vector< b2Joint * > _joints
Definition: CUComplexObstacle.h:92
virtual void setInertia(float value) override
Definition: CUComplexObstacle.h:938
virtual b2BodyType getBodyType() const override
Definition: CUComplexObstacle.h:151
b2BodyDef _bodyinfo
Definition: CUObstacle.h:79
virtual void setMass(float value)
virtual b2Body * getBody() override
Definition: CUComplexObstacle.h:998
virtual void setCentroid(float x, float y) override
Definition: CUComplexObstacle.h:903
virtual void resetDebug() override
virtual void setVY(float value) override
Definition: CUComplexObstacle.h:415
virtual void setSensor(bool value) override
virtual void setRestitution(float value) override
virtual void setPosition(const Vec2 &value) override
Definition: CUComplexObstacle.h:202
virtual void setAngle(float value) override
Definition: CUComplexObstacle.h:303
virtual bool isAwake() const override
Definition: CUComplexObstacle.h:506
virtual void updateDebug() override
virtual void setCentroid(const Vec2 &value) override
Definition: CUComplexObstacle.h:890
Definition: CUObstacle.h:76
virtual void setActive(bool value) override
Definition: CUComplexObstacle.h:484
Definition: CUComplexObstacle.h:85
virtual void createFixtures()
Definition: CUComplexObstacle.h:1049
b2Body * _body
Definition: CUComplexObstacle.h:88
virtual float getVX() const override
Definition: CUComplexObstacle.h:366
virtual float getMass() const override
Definition: CUComplexObstacle.h:954
virtual Vec2 getLinearVelocity() const override
Definition: CUComplexObstacle.h:322
Definition: CUColor4.h:1104
virtual void setAngularDamping(float value) override
Definition: CUComplexObstacle.h:770
virtual void setVX(float value) override
Definition: CUComplexObstacle.h:384
virtual void setFixedRotation(bool value) override
Definition: CUComplexObstacle.h:645
virtual void setY(float value) override
Definition: CUComplexObstacle.h:273
virtual float getInertia() const override
Definition: CUComplexObstacle.h:922
Definition: CUAnimationNode.h:52
virtual Vec2 getPosition() const override
Definition: CUComplexObstacle.h:186
virtual void setDebugColor(Color4 color) override
virtual void setMass(float value) override
Definition: CUComplexObstacle.h:967
virtual void setAwake(bool value) override
Definition: CUComplexObstacle.h:523
virtual bool isSleepingAllowed() const override
Definition: CUComplexObstacle.h:545
virtual void resetMass()
Definition: CUObstacle.h:766
virtual void setPosition(float x, float y) override
Definition: CUComplexObstacle.h:215
std::vector< std::shared_ptr< Obstacle > > _bodies
Definition: CUComplexObstacle.h:90
virtual void setInertia(float value)
virtual void setLinearDamping(float value) override
Definition: CUComplexObstacle.h:725
virtual void setAngularVelocity(float value) override
Definition: CUComplexObstacle.h:445
virtual void setX(float value) override
Definition: CUComplexObstacle.h:244
virtual float getAngle() const override
Definition: CUComplexObstacle.h:289