|
CUGL 1.3
Cornell University Game Library
|
45 #include <cugl/math/cu_math.h>
46 #include <cugl/renderer/CUSpriteBatch.h>
47 #include <cugl/util/CUDebug.h>
48 #include <cugl/assets/CUJsonValue.h>
204 #pragma mark Constructors
380 #pragma mark Static Constructors
389 static std::shared_ptr<Node>
alloc() {
390 std::shared_ptr<Node> result = std::make_shared<Node>();
391 return (result->init() ? result :
nullptr);
405 std::shared_ptr<Node> result = std::make_shared<Node>();
406 return (result->initWithPosition(pos) ? result :
nullptr);
421 std::shared_ptr<Node> result = std::make_shared<Node>();
422 return (result->initWithPosition(x,y) ? result :
nullptr);
438 std::shared_ptr<Node> result = std::make_shared<Node>();
439 return (result->initWithBounds(size) ? result :
nullptr);
456 std::shared_ptr<Node> result = std::make_shared<Node>();
457 return (result->initWithBounds(width,height) ? result :
nullptr);
476 std::shared_ptr<Node> result = std::make_shared<Node>();
477 return (result->initWithBounds(rect) ? result :
nullptr);
498 static std::shared_ptr<Node>
allocWithBounds(
float x,
float y,
float width,
float height) {
499 std::shared_ptr<Node> result = std::make_shared<Node>();
500 return (result->initWithBounds(x,y,width,height) ? result :
nullptr);
526 const std::shared_ptr<JsonValue>& data) {
527 std::shared_ptr<Node> result = std::make_shared<Node>();
528 return (result->initWithData(loader,data) ? result :
nullptr);
532 #pragma mark Identifiers
590 virtual std::string
toString(
bool verbose =
false)
const;
593 operator std::string()
const {
return toString(); }
597 #pragma mark Position
924 #pragma mark Visibility
1008 #pragma mark Transforms
1332 #pragma mark Z-order
1411 #pragma mark Scene Graph
1430 std::shared_ptr<Node>
getChild(
unsigned int pos);
1443 const std::shared_ptr<Node>&
getChild(
unsigned int pos)
const;
1461 template <
typename T>
1462 inline std::shared_ptr<T>
getChild(
unsigned int pos)
const {
1463 return std::dynamic_pointer_cast<T>(
getChild(pos));
1479 std::shared_ptr<Node>
getChildByTag(
unsigned int tag)
const;
1499 template <
typename T>
1517 std::shared_ptr<Node>
getChildByName(
const std::string& name)
const;
1537 template <
typename T>
1581 virtual void addChild(
const std::shared_ptr<Node>& child,
int zval);
1628 child->setName(name);
1646 child->setName(name);
1662 void swapChild(
const std::shared_ptr<Node>& child1,
const std::shared_ptr<Node>& child2,
bool inherit=
false);
1731 void removeChild(
const std::shared_ptr<Node>& child);
1766 #pragma mark Rendering
1778 virtual void render(
const std::shared_ptr<SpriteBatch>& batch,
const Mat4& transform,
Color4 tint);
1789 virtual void render(
const std::shared_ptr<SpriteBatch>& batch) {
1816 virtual void draw(
const std::shared_ptr<SpriteBatch>& batch,
const Mat4& transform,
Color4 tint) {}
1820 #pragma mark Layout Automation
1861 #pragma mark Internal Helpers
1879 void setZDirty(
bool value);
1889 void setParent(
Node* parent) {
_parent = parent; }
1899 void setScene(Scene* scene) {
_graph = scene; }
1909 void pushScene(Scene* scene);
1921 static bool compareNodeSibs(
const std::shared_ptr<Node>& a,
const std::shared_ptr<Node>& b);
1929 virtual void updateTransform();
1932 CU_DISALLOW_COPY_AND_ASSIGN(
Node);
std::string _name
Definition: CUNode.h:189
const std::vector< std::shared_ptr< Node > > & getChildren() const
Definition: CUNode.h:1554
void removeFromParent()
Definition: CUNode.h:1709
void setAngle(float angle)
Definition: CUNode.h:1111
virtual void setContentSize(float width, float height)
Definition: CUNode.h:737
Vec2 _position
Definition: CUNode.h:101
static std::shared_ptr< Node > allocWithBounds(const Size &size)
Definition: CUNode.h:437
unsigned int _tag
Definition: CUNode.h:181
Color4 _tintColor
Definition: CUNode.h:115
static Vec2 * transform(const Mat4 &mat, const Vec2 &point, Vec2 *dst)
void addChildWithTag(const std::shared_ptr< Node > &child, unsigned int tag)
Definition: CUNode.h:1593
Size _contentSize
Definition: CUNode.h:112
Scene * _graph
Definition: CUNode.h:167
bool hasRelativeColor()
Definition: CUNode.h:993
const Scene * getScene() const
Definition: CUNode.h:1702
bool isVisible() const
Definition: CUNode.h:971
void setVisible(bool visible)
Definition: CUNode.h:982
Mat4 _combined
Definition: CUNode.h:159
std::vector< std::shared_ptr< Node > > getChildren()
Definition: CUNode.h:1547
float getPositionX(void) const
Definition: CUNode.h:645
virtual void draw(const std::shared_ptr< SpriteBatch > &batch, const Mat4 &transform, Color4 tint)
Definition: CUNode.h:1816
bool _isVisible
Definition: CUNode.h:119
Vec2 nodeToWorldCoords(const Vec2 &nodePoint) const
Definition: CUNode.h:1297
static const Vec2 ZERO
Definition: CUVec2.h:71
bool initWithPosition(float x, float y)
Definition: CUNode.h:267
void setContentHeight(float height)
Definition: CUNode.h:789
std::vector< std::shared_ptr< Node > > _children
Definition: CUNode.h:162
virtual void setAnchor(const Vec2 &anchor)
virtual void removeAllChildren()
int getZOrder() const
Definition: CUNode.h:1369
virtual void setContentSize(const Size &size)
void setName(const std::string &name)
Definition: CUNode.h:575
unsigned int getTag() const
Definition: CUNode.h:542
virtual bool initWithPosition(const Vec2 &pos)
static const Mat4 IDENTITY
Definition: CUMat4.h:106
virtual void render(const std::shared_ptr< SpriteBatch > &batch)
Definition: CUNode.h:1789
Definition: CUColor4.h:1084
bool initWithBounds(float width, float height)
Definition: CUNode.h:298
bool isZDirty() const
Definition: CUNode.h:1388
static std::shared_ptr< Node > allocWithPosition(float x, float y)
Definition: CUNode.h:420
float width
Definition: CUSize.h:61
static std::shared_ptr< Node > allocWithBounds(const Rect &rect)
Definition: CUNode.h:475
void setTag(unsigned int tag)
Definition: CUNode.h:553
float getWidth() const
Definition: CUNode.h:813
float x
Definition: CUVec2.h:66
void setContentWidth(float width)
Definition: CUNode.h:764
std::shared_ptr< Node > getChild(unsigned int pos)
Color4 getAbsoluteColor()
virtual bool initWithData(const SceneLoader *loader, const std::shared_ptr< JsonValue > &data)
float getContentHeight() const
Definition: CUNode.h:774
void swapChild(const std::shared_ptr< Node > &child1, const std::shared_ptr< Node > &child2, bool inherit=false)
Mat4 getParentToNodeTransform() const
Definition: CUNode.h:1205
Mat4 getNodeToWorldTransform() const
virtual std::string toString(bool verbose=false) const
Vec2 worldToNodeCoords(const Vec2 &worldPoint) const
Definition: CUNode.h:1263
void setLayout(const std::shared_ptr< Layout > &layout)
Definition: CUNode.h:1848
static std::shared_ptr< Node > allocWithBounds(float width, float height)
Definition: CUNode.h:455
Vec2 parentToNodeCoords(const Vec2 &parentPoint) const
Definition: CUNode.h:1312
void addChildWithTag(const std::shared_ptr< Node > &child, unsigned int tag, int zval)
Definition: CUNode.h:1611
Definition: CUSceneLoader.h:77
const Vec2 & getPosition() const
Definition: CUNode.h:608
void setPositionX(float x)
Definition: CUNode.h:657
Vec2 screenToNodeCoords(const Vec2 &screenPoint) const
std::shared_ptr< Node > getChildByTag(unsigned int tag) const
Vec2 nodeToScreenCoords(const Vec2 &nodePoint) const
Vec2 & set(float x, float y)
Definition: CUVec2.h:153
float getScaleY() const
Definition: CUNode.h:1043
bool withAlternateTransform()
Definition: CUNode.h:1165
void setAnchor(float x, float y)
Definition: CUNode.h:883
float y
Definition: CUVec2.h:68
float getPositionY(void) const
Definition: CUNode.h:669
size_t _hashOfName
Definition: CUNode.h:196
void chooseAlternateTransform(bool active)
Definition: CUNode.h:1181
Mat4 _transform
Definition: CUNode.h:147
int _childOffset
Definition: CUNode.h:172
Node * _parent
Definition: CUNode.h:165
virtual bool initWithBounds(const Size &size)
bool _zDirty
Definition: CUNode.h:201
Mat4 getWorldToNodeTransform() const
Definition: CUNode.h:1228
const Mat4 & getAlternateTransform()
Definition: CUNode.h:1130
static std::shared_ptr< Node > allocWithBounds(float x, float y, float width, float height)
Definition: CUNode.h:498
void setScale(float sx, float sy)
Definition: CUNode.h:1086
static const Color4 WHITE
Definition: CUColor4.h:1106
float _angle
Definition: CUNode.h:137
const Node * getParent() const
Definition: CUNode.h:1682
int _zOrder
Definition: CUNode.h:199
void removeChildByName(const std::string &name)
std::shared_ptr< Layout > _layout
Definition: CUNode.h:169
void setAlternateTransform(const Mat4 &transform)
Definition: CUNode.h:1146
void addChildWithName(const std::shared_ptr< Node > &child, const std::string &name, int zval)
Definition: CUNode.h:1644
virtual Node * copy(Node *dst)
Node * getParent()
Definition: CUNode.h:1672
float getScaleX() const
Definition: CUNode.h:1031
virtual void removeChild(unsigned int pos)
void setScale(const Vec2 &vec)
Definition: CUNode.h:1070
void setRelativeColor(bool flag)
Definition: CUNode.h:1004
std::shared_ptr< Node > getChildByName(const std::string &name) const
virtual void setColor(Color4 color)
Definition: CUNode.h:949
float getAngle()
Definition: CUNode.h:1100
std::shared_ptr< T > getChild(unsigned int pos) const
Definition: CUNode.h:1462
~Node()
Definition: CUNode.h:219
Mat4 getInverse() const
Definition: CUMat4.h:1048
void setPosition(const Vec2 &position)
Definition: CUNode.h:620
const std::shared_ptr< Layout > & getLayout() const
Definition: CUNode.h:1832
Scene * getScene()
Definition: CUNode.h:1692
Vec2 getAnchorInPixels()
Definition: CUNode.h:920
void removeChildByTag(unsigned int tag)
static std::shared_ptr< Node > allocWithData(const SceneLoader *loader, const std::shared_ptr< JsonValue > &data)
Definition: CUNode.h:525
std::shared_ptr< T > getChildByName(const std::string &name) const
Definition: CUNode.h:1538
size_t getChildCount() const
Definition: CUNode.h:1417
bool _useTransform
Definition: CUNode.h:150
const std::string & getName() const
Definition: CUNode.h:564
void addChildWithName(const std::shared_ptr< Node > &child, const std::string &name)
Definition: CUNode.h:1626
bool _hasParentColor
Definition: CUNode.h:117
void setPositionY(float y)
Definition: CUNode.h:681
bool initWithBounds(float x, float y, float width, float height)
Definition: CUNode.h:337
Vec2 _scale
Definition: CUNode.h:127
const Mat4 & getNodeToParentTransform() const
Definition: CUNode.h:1194
float height
Definition: CUSize.h:63
virtual bool init()
Definition: CUNode.h:239
float getContentWidth() const
Definition: CUNode.h:749
const Vec2 & getScale() const
Definition: CUNode.h:1019
Vec2 nodeToParentCoords(const Vec2 &nodePoint) const
Definition: CUNode.h:1327
Rect getBoundingBox() const
Definition: CUNode.h:836
Vec2 getWorldPosition() const
Definition: CUNode.h:691
const Vec2 & getAnchor() const
Definition: CUNode.h:904
void addChild(std::shared_ptr< Node > child)
Definition: CUNode.h:1565
static std::shared_ptr< Node > alloc()
Definition: CUNode.h:389
const Size & getContentSize() const
Definition: CUNode.h:706
Vec2 _anchor
Definition: CUNode.h:109
Color4 getColor() const
Definition: CUNode.h:936
std::shared_ptr< T > getChildByTag(unsigned int tag) const
Definition: CUNode.h:1500
float getHeight() const
Definition: CUNode.h:825
static std::shared_ptr< Node > allocWithPosition(const Vec2 &pos)
Definition: CUNode.h:404
void setScale(float scale)
Definition: CUNode.h:1055
virtual void render(const std::shared_ptr< SpriteBatch > &batch, const Mat4 &transform, Color4 tint)