Main Page | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals

pge::Sprite Class Reference

#include <Sprite.h>

Inheritance diagram for pge::Sprite:

Inheritance graph
[legend]
Collaboration diagram for pge::Sprite:

Collaboration graph
[legend]

Public Member Functions

 Sprite (Vector3f topLeft, Vector3f topRight, Vector3f bottomRight, Vector3f bottomLeft)
 Constructor.

 Sprite (Vector3f center, float size)
virtual ~Sprite (void)
 Destructor.

Vector3f getCenter (void)
void setCenter (Vector3f center)
void setSize (float size)
void setTexture (Texture *texture)
void setColor (Vector4f color)
bool isBillboardEnabled (void)
void setBillboardEnabled (bool enabled)
bool init (void)
void render (void)
 Called when the object should render itself.

void timer (unsigned int delay)
 Called when the timer event comes.


Protected Attributes

Vector3f m_topLeft
Vector3f m_topRight
Vector3f m_bottomLeft
Vector3f m_bottomRight
Vector3f m_center

Private Attributes

bool m_forceBillboard
bool m_billboardEnabled
float m_mat [16]
float m_size
Vector3f m_right
Vector3f m_up
Vector4f m_color
Texturem_texture
float m_texRepeatU
float m_texRepeatV

Constructor & Destructor Documentation

pge::Sprite::Sprite Vector3f  topLeft,
Vector3f  topRight,
Vector3f  bottomRight,
Vector3f  bottomLeft
 

Constructor.

Definition at line 17 of file Sprite.cpp.

References m_billboardEnabled, m_bottomLeft, m_bottomRight, m_center, m_color, m_forceBillboard, m_right, m_size, m_texRepeatU, m_texRepeatV, m_texture, m_topLeft, m_topRight, and m_up.

00017                                                                                                      {
00018                 m_topLeft = topLeft;
00019                 m_topRight = topRight;
00020                 m_bottomLeft = bottomLeft;
00021                 m_bottomRight = bottomRight;
00022 
00023                 // TODO: Calculate center
00024                 m_center = topLeft;
00025 
00026                 m_forceBillboard = false;
00027                 m_billboardEnabled = false;
00028 
00029                 m_size = ((topLeft.subtract(topRight)).magnitude());
00030                 m_right = Vector3f();
00031                 m_up = Vector3f();
00032 
00033                 m_texRepeatU = 0.0f;
00034                 m_texRepeatV = 0.0f;
00035 
00036                 m_texture = NULL;
00037 
00038                 m_color = Vector4f(1.0f, 1.0f, 1.0f, 1.0f);
00039         }

pge::Sprite::Sprite Vector3f  center,
float  size
 

Definition at line 47 of file Sprite.cpp.

References m_billboardEnabled, m_bottomLeft, m_bottomRight, m_center, m_color, m_forceBillboard, m_right, m_size, m_texRepeatU, m_texRepeatV, m_texture, m_topLeft, m_topRight, and m_up.

00047                                                   {
00048                 m_topLeft = Vector3f();
00049                 m_topRight = Vector3f();
00050                 m_bottomLeft = Vector3f();
00051                 m_bottomRight = Vector3f();
00052 
00053                 m_center = center;
00054                 m_forceBillboard = true;
00055                 m_billboardEnabled = true;
00056 
00057                 m_size = size;
00058                 m_right = Vector3f();
00059                 m_up = Vector3f();
00060 
00061                 m_texRepeatU = 0.0f;
00062                 m_texRepeatV = 0.0f;
00063 
00064                 m_texture = NULL;
00065 
00066                 m_color = Vector4f(1.0f, 1.0f, 1.0f, 1.0f);
00067         }

pge::Sprite::~Sprite void   )  [virtual]
 

Destructor.

Definition at line 75 of file Sprite.cpp.

00075                             {
00076         }


Member Function Documentation

Vector3f pge::Sprite::getCenter void   ) 
 

Definition at line 84 of file Sprite.cpp.

References m_center.

00084                                        {
00085                 return m_center;
00086         }

bool pge::Sprite::init void   )  [virtual]
 

Implements pge::IRenderableObject.

Reimplemented in pge::GPUFire.

Definition at line 154 of file Sprite.cpp.

00154                               {
00155                 return true;
00156         }

bool pge::Sprite::isBillboardEnabled void   ) 
 

Definition at line 134 of file Sprite.cpp.

References m_billboardEnabled, and m_forceBillboard.

00134                                             {
00135                 return (m_billboardEnabled || m_forceBillboard);
00136         }

void pge::Sprite::render void   )  [virtual]
 

Called when the object should render itself.

Implements pge::IRenderableObject.

Reimplemented in pge::GPUFire.

Definition at line 164 of file Sprite.cpp.

References pge::Vector3f::add(), pge::Texture::hasAlphaBlending(), m_billboardEnabled, m_bottomLeft, m_bottomRight, m_center, m_color, m_forceBillboard, m_mat, m_right, m_size, m_texRepeatU, m_texRepeatV, m_texture, m_topLeft, m_topRight, m_up, pge::Vector3f::m_v, and pge::Vector3f::subtract().

Referenced by pge::SkyBox::render(), and pge::EffectTest::render().

00164                                 {
00165                 // Use billboarding
00166                 if(m_forceBillboard || m_billboardEnabled) {
00167 
00168                         glGetFloatv(GL_MODELVIEW_MATRIX, m_mat);
00169 
00170                         m_right.m_v[0] = m_mat[0];
00171                         m_right.m_v[1] = m_mat[4];
00172                         m_right.m_v[2] = m_mat[8];
00173                         m_up.m_v[0] = m_mat[1];
00174                         m_up.m_v[1] = m_mat[5];
00175                         m_up.m_v[2] = m_mat[9];
00176 
00177                         m_bottomLeft = m_center.add((m_right.add(m_up)).multiply(-m_size));
00178                         m_bottomRight = m_center.add((m_right.subtract(m_up)).multiply(m_size));
00179                         m_topRight = m_center.add((m_right.add(m_up)).multiply(m_size));
00180                         m_topLeft = m_center.add((m_up.subtract(m_right)).multiply(m_size));
00181 
00182                         // Set texture and color.
00183                         if(m_texture != NULL) {
00184                                 if(m_texture->hasAlphaBlending()) {
00185                                         renderer::setTextureAlphaBlendEnabled(true);
00186                                 }
00187                                 renderer::setTexture(m_texture, GL_MODULATE);
00188                                 renderer::color4f(m_color);
00189                         }
00190 
00191                         glBegin(GL_QUADS);
00192                         // Bottom left
00193                         renderer::vertex3f(m_bottomLeft, 0.0f + m_texRepeatU, 1.0f + m_texRepeatV);
00194                         // Bottom right
00195                         renderer::vertex3f(m_bottomRight, 1.0f + m_texRepeatU, 1.0f + m_texRepeatV);
00196                         // Top right
00197                         renderer::vertex3f(m_topRight, 1.0f + m_texRepeatU, 0.0f + m_texRepeatV);
00198                         // Top left
00199                         renderer::vertex3f(m_topLeft, 0.0f + m_texRepeatU, 0.0f + m_texRepeatV);
00200                         glEnd();
00201                         
00202                         if(m_texture != NULL) {
00203                                 if(m_texture->hasAlphaBlending()) {
00204                                         renderer::setTextureAlphaBlendEnabled(false);
00205                                 }
00206                                 renderer::color4f(1.0f, 1.0f, 1.0f, 1.0f);
00207                         }
00208 
00209                 } else {
00210                         // Set texture and color.
00211                         if(m_texture != NULL) {
00212                                 if(m_texture->hasAlphaBlending()) {
00213                                         renderer::setTextureAlphaBlendEnabled(true);
00214                                 }
00215                                 renderer::setTexture(m_texture, GL_MODULATE);
00216                                 renderer::color4f(m_color);
00217                         }
00218 
00219                         glBegin(GL_QUADS);
00220                         // Bottom left
00221                         renderer::vertex3f(m_bottomLeft, 0.0f + m_texRepeatU, 1.0f + m_texRepeatV);
00222                         // Bottom right
00223                         renderer::vertex3f(m_bottomRight, 1.0f + m_texRepeatU, 1.0f + m_texRepeatV);
00224                         // Top right
00225                         renderer::vertex3f(m_topRight, 1.0f + m_texRepeatU, 0.0f + m_texRepeatV);
00226                         // Top left
00227                         renderer::vertex3f(m_topLeft, 0.0f + m_texRepeatU, 0.0f + m_texRepeatV);
00228                         glEnd();
00229 
00230                         if(m_texture != NULL) {
00231                                 if(m_texture->hasAlphaBlending()) {
00232                                         renderer::setTextureAlphaBlendEnabled(false);
00233                                 }
00234                                 renderer::color4f(1.0f, 1.0f, 1.0f, 1.0f);
00235                         }
00236                 }
00237         }

Here is the call graph for this function:

void pge::Sprite::setBillboardEnabled bool  enabled  ) 
 

Definition at line 144 of file Sprite.cpp.

References m_billboardEnabled.

00144                                                      {
00145                 m_billboardEnabled = enabled;
00146         }

void pge::Sprite::setCenter Vector3f  center  ) 
 

Definition at line 94 of file Sprite.cpp.

References m_center.

Referenced by pge::EffectTest::timer().

00094                                               {
00095                 m_center = center;
00096         }

void pge::Sprite::setColor Vector4f  color  ) 
 

Definition at line 124 of file Sprite.cpp.

References m_color.

Referenced by pge::EffectTest::initLights().

00124                                             {
00125                 m_color = color;
00126         }

void pge::Sprite::setSize float  size  ) 
 

Definition at line 104 of file Sprite.cpp.

References m_size.

00104                                        {
00105                 m_size = size;
00106         }

void pge::Sprite::setTexture Texture texture  ) 
 

Definition at line 114 of file Sprite.cpp.

References m_texture.

Referenced by pge::EffectTest::initLights().

00114                                                 {
00115                 m_texture = texture;
00116         }

void pge::Sprite::timer unsigned int  delay  )  [virtual]
 

Called when the timer event comes.

Implements pge::IRenderableObject.

Reimplemented in pge::GPUFire.

Definition at line 245 of file Sprite.cpp.

00245                                              {
00246         }


Field Documentation

bool pge::Sprite::m_billboardEnabled [private]
 

Definition at line 83 of file Sprite.h.

Referenced by isBillboardEnabled(), render(), setBillboardEnabled(), and Sprite().

Vector3f pge::Sprite::m_bottomLeft [protected]
 

Definition at line 64 of file Sprite.h.

Referenced by render(), and Sprite().

Vector3f pge::Sprite::m_bottomRight [protected]
 

Definition at line 65 of file Sprite.h.

Referenced by render(), and Sprite().

Vector3f pge::Sprite::m_center [protected]
 

Definition at line 66 of file Sprite.h.

Referenced by getCenter(), render(), setCenter(), and Sprite().

Vector4f pge::Sprite::m_color [private]
 

Definition at line 92 of file Sprite.h.

Referenced by render(), setColor(), and Sprite().

bool pge::Sprite::m_forceBillboard [private]
 

Definition at line 82 of file Sprite.h.

Referenced by isBillboardEnabled(), render(), and Sprite().

float pge::Sprite::m_mat[16] [private]
 

Definition at line 85 of file Sprite.h.

Referenced by render().

Vector3f pge::Sprite::m_right [private]
 

Definition at line 89 of file Sprite.h.

Referenced by render(), and Sprite().

float pge::Sprite::m_size [private]
 

Definition at line 87 of file Sprite.h.

Referenced by render(), setSize(), and Sprite().

float pge::Sprite::m_texRepeatU [private]
 

Definition at line 96 of file Sprite.h.

Referenced by render(), and Sprite().

float pge::Sprite::m_texRepeatV [private]
 

Definition at line 97 of file Sprite.h.

Referenced by render(), and Sprite().

Texture* pge::Sprite::m_texture [private]
 

Definition at line 94 of file Sprite.h.

Referenced by render(), setTexture(), and Sprite().

Vector3f pge::Sprite::m_topLeft [protected]
 

Definition at line 62 of file Sprite.h.

Referenced by render(), and Sprite().

Vector3f pge::Sprite::m_topRight [protected]
 

Definition at line 63 of file Sprite.h.

Referenced by render(), and Sprite().

Vector3f pge::Sprite::m_up [private]
 

Definition at line 90 of file Sprite.h.

Referenced by render(), and Sprite().


The documentation for this class was generated from the following files:
Generated on Mon Oct 16 12:09:43 2006 for Phobosengine by doxygen 1.3.4