42 #ifndef __CU_SCENE_H__
43 #define __CU_SCENE_H__
45 #include "../math/cu_math.h"
47 #include "../renderer/CUOrthographicCamera.h"
70 std::shared_ptr<OrthographicCamera>
_camera;
81 #pragma mark Constructors
96 ~Scene() { _camera =
nullptr; _children.clear(); }
129 bool init(
float width,
float height) {
130 return init(0,0,width,height);
181 bool init(
float x,
float y,
float width,
float height);
184 #pragma mark Static Constructors
195 std::shared_ptr<Scene> result = std::make_shared<Scene>();
196 return (result->init(size) ? result :
nullptr);
209 static std::shared_ptr<Scene>
alloc(
float width,
float height) {
210 std::shared_ptr<Scene> result = std::make_shared<Scene>();
211 return (result->init(width,height) ? result :
nullptr);
226 std::shared_ptr<Scene> result = std::make_shared<Scene>();
227 return (result->init(rect) ? result :
nullptr);
243 std::shared_ptr<Scene> result = std::make_shared<Scene>();
244 return (result->init(origin,size) ? result :
nullptr);
261 static std::shared_ptr<Scene>
alloc(
float x,
float y,
float width,
float height) {
262 std::shared_ptr<Scene> result = std::make_shared<Scene>();
263 return (result->init(x,y,width,height) ? result :
nullptr);
267 #pragma mark Attributes
280 void setName(
const std::string& name) { _name = name; }
294 const std::shared_ptr<Camera>
getCamera()
const;
326 virtual std::string
toString(
bool verbose =
false)
const;
329 operator std::string()
const {
return toString(); }
332 #pragma mark View Size
353 _camera->set(width,height);
365 _camera->set(width,_camera->getViewport().size.height);
377 _camera->set(_camera->getViewport().size.width,height);
405 _camera->set(origin,size);
420 void setBounds(
float x,
float y,
float width,
float height) {
421 _camera->set(x,y,width,height);
434 _camera->set(origin,_camera->getViewport().size);
457 return _camera->screenToWorldCoords(screenCoords);
476 return _camera->worldToScreenCoords(worldCoords);
480 #pragma mark Scene Graph
499 std::shared_ptr<Node>
getChild(
unsigned int pos);
512 const std::shared_ptr<Node>&
getChild(
unsigned int pos)
const;
530 template <
typename T>
531 inline std::shared_ptr<T>
getChild(
unsigned int pos)
const {
532 return std::dynamic_pointer_cast<
T>(
getChild(pos));
566 template <
typename T>
583 std::shared_ptr<Node>
getChildByName(
const std::string& name)
const;
602 template <
typename T>
646 virtual void addChild(
const std::shared_ptr<Node>& child,
int zval);
676 void addChildWithTag(
const std::shared_ptr<Node>& child,
unsigned int tag,
int zval) {
693 child->setName(name);
709 void addChildWithName(
const std::shared_ptr<Node>& child,
const std::string &name,
int zval) {
711 child->setName(name);
727 void swapChild(
const std::shared_ptr<Node>& child1,
const std::shared_ptr<Node>& child2,
bool inherit=
false);
749 void removeChild(
const std::shared_ptr<Node>& child);
851 #pragma mark Rendering
865 void render(
const std::shared_ptr<SpriteBatch>& batch);
869 #pragma mark Internal Helpers
887 void setZDirty(
bool value) { _zDirty = value; }
std::shared_ptr< Node > getChildByName(const std::string &name) const
std::shared_ptr< Node > getChildByTag(unsigned int tag) const
float x
Definition: CUVec2.h:66
virtual void removeChild(unsigned int pos)
std::shared_ptr< T > getChildByName(const std::string &name) const
Definition: CUScene.h:603
void addChildWithName(const std::shared_ptr< Node > &child, const std::string &name, int zval)
Definition: CUScene.h:709
float y
Definition: CUVec2.h:68
void setSize(const Size &size)
Definition: CUScene.h:340
void setOffset(const Vec2 &origin)
Definition: CUScene.h:433
bool init(const Rect &rect)
Definition: CUScene.h:145
void setBounds(const Rect &rect)
Definition: CUScene.h:389
static std::shared_ptr< Scene > alloc(float x, float y, float width, float height)
Definition: CUScene.h:261
static std::shared_ptr< Scene > alloc(const Size &size)
Definition: CUScene.h:194
std::string _name
Definition: CUScene.h:68
void removeChildByName(const std::string &name)
void setWidth(float width)
Definition: CUScene.h:364
void setBounds(float x, float y, float width, float height)
Definition: CUScene.h:420
Color4 getColor()
Definition: CUScene.h:304
bool init(const Vec2 &origin, const Size &size)
Definition: CUScene.h:162
void setBounds(const Vec2 &origin, const Size &size)
Definition: CUScene.h:404
std::shared_ptr< Node > getChild(unsigned int pos)
void addChildWithTag(const std::shared_ptr< Node > &child, unsigned int tag)
Definition: CUScene.h:658
bool _zDirty
Definition: CUScene.h:76
Vec2 worldToScreenCoords(const Vec3 &worldCoords) const
Definition: CUScene.h:475
std::vector< std::shared_ptr< Node > > _children
Definition: CUScene.h:72
void addChildWithName(const std::shared_ptr< Node > &child, const std::string &name)
Definition: CUScene.h:691
bool isZAutoSort()
Definition: CUScene.h:795
void addChild(std::shared_ptr< Node > child)
Definition: CUScene.h:630
std::shared_ptr< T > getChild(unsigned int pos) const
Definition: CUScene.h:531
static std::shared_ptr< Scene > alloc(const Rect &rect)
Definition: CUScene.h:225
void setZAutoSort(bool value)
Definition: CUScene.h:810
static std::shared_ptr< Scene > alloc(float width, float height)
Definition: CUScene.h:209
bool init(float width, float height)
Definition: CUScene.h:129
float width
Definition: CUSize.h:61
Vec3 screenToWorldCoords(const Vec2 &screenCoords) const
Definition: CUScene.h:456
void setHeight(float height)
Definition: CUScene.h:376
std::shared_ptr< Camera > getCamera()
virtual void removeAllChildren()
float height
Definition: CUSize.h:63
void render(const std::shared_ptr< SpriteBatch > &batch)
Color4 _color
Definition: CUScene.h:74
void swapChild(const std::shared_ptr< Node > &child1, const std::shared_ptr< Node > &child2, bool inherit=false)
Vec2 origin
Definition: CURect.h:49
bool _zSort
Definition: CUScene.h:78
const std::vector< std::shared_ptr< Node > > & getChildren() const
Definition: CUScene.h:619
size_t getChildCount() const
Definition: CUScene.h:486
bool init(const Size &size)
Definition: CUScene.h:115
Size size
Definition: CURect.h:51
std::shared_ptr< OrthographicCamera > _camera
Definition: CUScene.h:70
std::shared_ptr< T > getChildByTag(unsigned int tag) const
Definition: CUScene.h:567
void removeChildByTag(unsigned int tag)
void setName(const std::string &name)
Definition: CUScene.h:280
const std::string & getName() const
Definition: CUScene.h:273
void setSize(float width, float height)
Definition: CUScene.h:352
void setColor(Color4 color)
Definition: CUScene.h:314
Definition: CUColor4.h:1104
~Scene()
Definition: CUScene.h:96
void addChildWithTag(const std::shared_ptr< Node > &child, unsigned int tag, int zval)
Definition: CUScene.h:676
Definition: CUAnimationNode.h:52
static std::shared_ptr< Scene > alloc(const Vec2 &origin, const Size &size)
Definition: CUScene.h:242
std::vector< std::shared_ptr< Node > > getChildren()
Definition: CUScene.h:612
virtual std::string toString(bool verbose=false) const
bool isZDirty() const
Definition: CUScene.h:829