CUGL 2.1
Cornell University Game Library
|
#include <CUSpriteNode.h>
Public Member Functions | |
SpriteNode () | |
~SpriteNode () | |
bool | initWithSprite (const std::shared_ptr< Texture > &texture, int rows, int cols) |
bool | initWithSprite (const std::shared_ptr< Texture > &texture, int rows, int cols, int size) |
virtual bool | initWithData (const Scene2Loader *loader, const std::shared_ptr< JsonValue > &data) override |
virtual std::shared_ptr< SceneNode > | copy (const std::shared_ptr< SceneNode > &dst) const override |
int | getSize () const |
unsigned int | getFrame () const |
void | setFrame (int frame) |
CU_DISALLOW_COPY_AND_ASSIGN (SpriteNode) | |
Public Member Functions inherited from cugl::scene2::PolygonNode | |
PolygonNode () | |
~PolygonNode () | |
bool | initWithPoly (const std::vector< Vec2 > &vertices) |
bool | initWithPoly (const Poly2 &poly) |
bool | initWithPoly (const Rect rect) |
virtual bool | initWithFile (const std::string &filename) override |
bool | initWithFilePoly (const std::string &filename, const std::vector< Vec2 > &vertices) |
bool | initWithFilePoly (const std::string &filename, const Poly2 &poly) |
bool | initWithFilePoly (const std::string &filename, const Rect rect) |
virtual bool | initWithTexture (const std::shared_ptr< Texture > &texture) override |
bool | initWithTexturePoly (const std::shared_ptr< Texture > &texture, const std::vector< Vec2 > &vertices) |
bool | initWithTexturePoly (const std::shared_ptr< Texture > &texture, const Poly2 &poly) |
bool | initWithTexturePoly (const std::shared_ptr< Texture > &texture, const Rect rect) |
float | getFringe () const |
void | setFringe (float fringe) |
virtual void | setPolygon (const std::vector< Vec2 > &vertices) |
virtual void | setPolygon (const Poly2 &poly) |
virtual void | setPolygon (const Rect rect) |
const Poly2 & | getPolygon () const |
const Rect | getBoundingRect () const |
virtual void | draw (const std::shared_ptr< SpriteBatch > &batch, const Affine2 &transform, Color4 tint) override |
Public Member Functions inherited from cugl::scene2::TexturedNode | |
TexturedNode () | |
~TexturedNode () | |
virtual void | dispose () override |
virtual bool | init () override |
void | setTexture (const std::string &filename) |
void | setTexture (const std::shared_ptr< Texture > &texture) |
std::shared_ptr< Texture > & | getTexture () |
const std::shared_ptr< Texture > & | getTexture () const |
const std::shared_ptr< Gradient > & | getGradient () const |
void | setGradient (const std::shared_ptr< Gradient > &gradient) |
void | shiftTexture (float dx, float dy) |
void | setBlendFunc (GLenum srcFactor, GLenum dstFactor) |
GLenum | getSourceBlendFactor () const |
GLenum | getDestinationBlendFactor () const |
void | setBlendEquation (GLenum equation) |
GLenum | getBlendEquation () const |
void | flipHorizontal (bool flag) |
bool | isFlipHorizontal () const |
void | flipVertical (bool flag) |
bool | isFlipVertical () const |
virtual std::string | toString (bool verbose=false) const override |
bool | isAbsolute () const |
void | setAbsolute (bool flag) |
virtual void | setAnchor (const Vec2 anchor) override |
virtual void | setAnchor (float x, float y) override |
virtual void | setContentSize (const Size size) override |
virtual void | setContentSize (float width, float height) override |
void | refresh () |
Public Member Functions inherited from cugl::scene2::SceneNode | |
SceneNode () | |
~SceneNode () | |
virtual bool | initWithPosition (const Vec2 pos) |
bool | initWithPosition (float x, float y) |
virtual bool | initWithBounds (const Size size) |
virtual bool | initWithBounds (float width, float height) |
virtual bool | initWithBounds (const Rect rect) |
virtual bool | initWithBounds (float x, float y, float width, float height) |
unsigned int | getTag () const |
void | setTag (unsigned int tag) |
const std::string | getName () const |
void | setName (const std::string name) |
const std::string | getClassName () const |
operator std::string () const | |
const Vec2 | getPosition () const |
void | setPosition (const Vec2 &position) |
void | setPosition (float x, float y) |
float | getPositionX (void) const |
void | setPositionX (float x) |
float | getPositionY (void) const |
void | setPositionY (float y) |
Vec2 | getWorldPosition () const |
const Size | getContentSize () const |
float | getContentWidth () const |
void | setContentWidth (float width) |
float | getContentHeight () const |
void | setContentHeight (float height) |
virtual Rect | getLayoutBounds () const |
Size | getSize () const |
float | getWidth () const |
float | getHeight () const |
Rect | getBoundingBox () const |
const Vec2 | getAnchor () const |
Vec2 | getAnchorInPixels () |
Color4 | getColor () const |
virtual void | setColor (Color4 color) |
Color4 | getAbsoluteColor () |
bool | isVisible () const |
void | setVisible (bool visible) |
bool | hasRelativeColor () const |
void | setRelativeColor (bool flag) |
std::shared_ptr< Scissor > | getScissor () const |
void | setScissor (const std::shared_ptr< Scissor > &scissor) |
void | setScissor () |
const Vec2 | getScale () const |
float | getScaleX () const |
float | getScaleY () const |
void | setScale (float scale) |
void | setScale (const Vec2 vec) |
void | setScale (float sx, float sy) |
float | getAngle () |
void | setAngle (float angle) |
const Affine2 & | getTransform () const |
const Affine2 & | getAlternateTransform () const |
void | setAlternateTransform (const Affine2 &transform) |
bool | withAlternateTransform () |
void | chooseAlternateTransform (bool active) |
const Affine2 & | getNodeToParentTransform () const |
Affine2 | getParentToNodeTransform () const |
Affine2 | getNodeToWorldTransform () const |
Affine2 | getWorldToNodeTransform () const |
Vec2 | screenToNodeCoords (const Vec2 screenPoint) const |
Vec2 | worldToNodeCoords (const Vec2 worldPoint) const |
Vec2 | nodeToScreenCoords (const Vec2 nodePoint) const |
Vec2 | nodeToWorldCoords (const Vec2 nodePoint) const |
Vec2 | parentToNodeCoords (const Vec2 parentPoint) const |
Vec2 | nodeToParentCoords (const Vec2 nodePoint) const |
size_t | getChildCount () const |
std::shared_ptr< SceneNode > | getChild (unsigned int pos) |
const std::shared_ptr< SceneNode > & | getChild (unsigned int pos) const |
template<typename T > | |
std::shared_ptr< T > | getChild (unsigned int pos) const |
std::shared_ptr< SceneNode > | getChildByTag (unsigned int tag) const |
template<typename T > | |
std::shared_ptr< T > | getChildByTag (unsigned int tag) const |
std::shared_ptr< SceneNode > | getChildByName (const std::string name) const |
template<typename T > | |
std::shared_ptr< T > | getChildByName (const std::string name) const |
std::vector< std::shared_ptr< SceneNode > > | getChildren () |
const std::vector< std::shared_ptr< SceneNode > > & | getChildren () const |
void | addChild (const std::shared_ptr< SceneNode > &child) |
void | addChildWithTag (const std::shared_ptr< SceneNode > &child, unsigned int tag) |
void | addChildWithName (const std::shared_ptr< SceneNode > &child, const std::string name) |
void | swapChild (const std::shared_ptr< SceneNode > &child1, const std::shared_ptr< SceneNode > &child2, bool inherit=false) |
SceneNode * | getParent () |
const SceneNode * | getParent () const |
Scene2 * | getScene () |
const Scene2 * | getScene () const |
void | removeFromParent () |
virtual void | removeChild (unsigned int pos) |
void | removeChild (const std::shared_ptr< SceneNode > &child) |
void | removeChildByTag (unsigned int tag) |
void | removeChildByName (const std::string name) |
virtual void | removeAllChildren () |
void | setPriority (float priority) |
float | getPriority () |
virtual void | render (const std::shared_ptr< SpriteBatch > &batch, const Affine2 &transform, Color4 tint) |
virtual void | render (const std::shared_ptr< SpriteBatch > &batch) |
const std::shared_ptr< Layout > & | getLayout () const |
void | setLayout (const std::shared_ptr< Layout > &layout) |
virtual void | doLayout () |
Static Public Member Functions | |
static std::shared_ptr< SpriteNode > | alloc (const std::shared_ptr< Texture > &texture, int rows, int cols) |
static std::shared_ptr< SpriteNode > | alloc (const std::shared_ptr< Texture > &texture, int rows, int cols, int size) |
static std::shared_ptr< SceneNode > | allocWithData (const Scene2Loader *loader, const std::shared_ptr< JsonValue > &data) |
Static Public Member Functions inherited from cugl::scene2::PolygonNode | |
static std::shared_ptr< PolygonNode > | alloc () |
static std::shared_ptr< PolygonNode > | allocWithPoly (const std::vector< Vec2 > &vertices) |
static std::shared_ptr< PolygonNode > | allocWithPoly (const Poly2 &poly) |
static std::shared_ptr< PolygonNode > | allocWithPoly (const Rect rect) |
static std::shared_ptr< PolygonNode > | allocWithFile (const std::string &filename) |
static std::shared_ptr< PolygonNode > | allocWithFilePoly (const std::string &filename, const std::vector< Vec2 > &vertices) |
static std::shared_ptr< PolygonNode > | allocWithFilePoly (const std::string &filename, const Poly2 &poly) |
static std::shared_ptr< PolygonNode > | allocWithFilePoly (const std::string &filename, const Rect rect) |
static std::shared_ptr< PolygonNode > | allocWithTexture (const std::shared_ptr< Texture > &texture) |
static std::shared_ptr< PolygonNode > | allocWithTexture (const std::shared_ptr< Texture > &texture, const std::vector< Vec2 > &vertices) |
static std::shared_ptr< PolygonNode > | allocWithTexture (const std::shared_ptr< Texture > &texture, const Poly2 &poly) |
static std::shared_ptr< PolygonNode > | allocWithTexture (const std::shared_ptr< Texture > &texture, const Rect rect) |
static std::shared_ptr< SceneNode > | allocWithData (const Scene2Loader *loader, const std::shared_ptr< JsonValue > &data) |
Static Public Member Functions inherited from cugl::scene2::SceneNode | |
static std::shared_ptr< SceneNode > | alloc () |
static std::shared_ptr< SceneNode > | allocWithPosition (const Vec2 pos) |
static std::shared_ptr< SceneNode > | allocWithPosition (float x, float y) |
static std::shared_ptr< SceneNode > | allocWithBounds (const Size size) |
static std::shared_ptr< SceneNode > | allocWithBounds (float width, float height) |
static std::shared_ptr< SceneNode > | allocWithBounds (const Rect rect) |
static std::shared_ptr< SceneNode > | allocWithBounds (float x, float y, float width, float height) |
static std::shared_ptr< SceneNode > | allocWithData (const Scene2Loader *loader, const std::shared_ptr< JsonValue > &data) |
Additional Inherited Members | |
Protected Member Functions inherited from cugl::scene2::TexturedNode | |
void | clearRenderData () |
CU_DISALLOW_COPY_AND_ASSIGN (TexturedNode) | |
This is a scene graph node to support simple sprite sheet animation
The API for this class is very similar to PolygonNode, except that it treats the texture as a sprite sheet. This means that you must specify the rows and columns in the sprite sheet so that it can break up the images for you.
The basic constructors always set this object equal to a rectangle the same size as a single frame in the sprite sheet. However, you could conceivably animate the sprite sheet over polygons, simpy by changing the shape via setPolygon. This can have undesirable effects if the polygon coordinate extend beyond a single animation frame. The basic renderer does not allow us to wrap a single frame of a texture atlas.
For example, suppose you have a sprite sheet where each frame has a given width and height. Setting the polygon to a triangle with vertices (0,0), (width/2, height), and (width,height) is okay. However, the vertices (0,0), (width, 2*height), and (2*width, height) are not okay.
cugl::scene2::SpriteNode::SpriteNode | ( | ) |
Constructs a ActionNode with no filmstrip
You must initialize this object before use.
NEVER USE A CONSTRUCTOR WITH NEW. If you want to allocate an object on the heap, use one of the static constructors instead.
|
inline |
Releases all resources allocated with this node.
This will release, but not necessarily delete the associated texture. However, the polygon and drawing commands will be deleted and no longer safe to use.
|
inlinestatic |
Returns a newly allocated filmstrip node from the given texture.
This constructor assumes that the filmstrip is rectangular, and that there are no unused frames.
The size of the node is equal to the size of a single frame in the filmstrip. To resize the node, scale it up or down. Do NOT change the polygon, as that will interfere with the animation.
texture | The texture image to use |
rows | The number of rows in the filmstrip |
cols | The number of columns in the filmstrip |
|
inlinestatic |
Returns a newly allocated filmstrip node from the given texture.
The parameter size is to indicate that there are unused frames in the filmstrip. The value size must be less than or equal to rows*cols, or this constructor will raise an error.
The size of the node is equal to the size of a single frame in the filmstrip. To resize the node, scale it up or down. Do NOT change the polygon, as that will interfere with the animation.
texture | The texture image to use |
rows | The number of rows in the filmstrip |
cols | The number of columns in the filmstrip |
size | The number of frames in the filmstrip |
|
inlinestatic |
Returns a newly allocated node with the given JSON specificaton.
This initializer is designed to receive the "data" object from the JSON passed to Scene2Loader. This JSON format supports all of the attribute values of its parent class. In addition, it supports the following additional attributes:
"span": The number of frames in the filmstrip "cols": An int specifying the number of columns "frame": The initial starting frame.
All attributes are optional. However, if nothing is specified, it assumes that this is a degenerate filmstrip with just one frame. If only span is specified, it assumes that it is just one row.
loader | The scene loader passing this JSON file |
data | The JSON object specifying the node |
|
overridevirtual |
Performs a shallow copy of this Node into dst.
No children from this node are copied, and no children of dst are modified. In addition, the parents of both Nodes are unchanged. However, all other attributes of this node are copied.
dst | The Node to copy into |
Reimplemented from cugl::scene2::PolygonNode.
cugl::scene2::SpriteNode::CU_DISALLOW_COPY_AND_ASSIGN | ( | SpriteNode | ) |
This macro disables the copy constructor (not allowed on scene graphs)
|
inline |
Returns the current active frame.
|
inline |
Returns the number of frames in this filmstrip.
|
overridevirtual |
Initializes a node with the given JSON specificaton.
This initializer is designed to receive the "data" object from the JSON passed to Scene2Loader. This JSON format supports all of the attribute values of its parent class. In addition, it supports the following additional attributes:
"span": The number of frames in the filmstrip "cols": An int specifying the number of columns "frame": The initial starting frame.
All attributes are optional. However, if nothing is specified, it assumes that this is a degenerate filmstrip with just one frame. If only span is specified, it assumes that it is just one row.
loader | The scene loader passing this JSON file |
data | The JSON object specifying the node |
Reimplemented from cugl::scene2::PolygonNode.
|
inline |
Initializes the film strip with the given texture.
This initializer assumes that the filmstrip is rectangular, and that there are no unused frames.
The size of the node is equal to the size of a single frame in the filmstrip. To resize the node, scale it up or down. Do NOT change the polygon, as that will interfere with the animation.
texture | The texture image to use |
rows | The number of rows in the filmstrip |
cols | The number of columns in the filmstrip |
bool cugl::scene2::SpriteNode::initWithSprite | ( | const std::shared_ptr< Texture > & | texture, |
int | rows, | ||
int | cols, | ||
int | size | ||
) |
Initializes the film strip with the given texture.
The parameter size is to indicate that there are unused frames in the filmstrip. The value size must be less than or equal to rows*cols, or this constructor will raise an error.
The size of the node is equal to the size of a single frame in the filmstrip. To resize the node, scale it up or down. Do NOT change the polygon, as that will interfere with the animation.
texture | The texture image to use |
rows | The number of rows in the filmstrip |
cols | The number of columns in the filmstrip |
size | The number of frames in the filmstrip |
void cugl::scene2::SpriteNode::setFrame | ( | int | frame | ) |
Sets the active frame as the given index.
If the frame index is invalid, an error is raised.
frame | the index to make the active frame |
|
protected |
The size of a single animation frame (different from active polygon)
|
protected |
The number of columns in this filmstrip
|
protected |
The active animation frame
|
protected |
The number of frames in this filmstrip