Main Page | Alphabetical List | Compound List | File List | Compound Members | File Members

sprite.h File Reference

#include "genesis.h"
#include "basetype.h"
#include "extbox.h"
#include "bitmap.h"

Go to the source code of this file.

Typedefs

typedef geSprite geSprite

Functions

GENESISAPI geSprite *GENESISCC geSprite_Create (geBitmap *SpriteBitmap, geBitmap *SpriteBackfaceBitmap)
GENESISAPI void GENESISCC geSprite_CreateRef (geSprite *Sprite)
GENESISAPI void GENESISCC geSprite_Destroy (geSprite **pS)
GENESISAPI int32 GENESISCC geSprite_GetCount ()
GENESISAPI geBoolean GENESISCC geSprite_IsValid (const geSprite *S)
GENESISAPI geBitmap *GENESISCC geSprite_GetBitmap (const geSprite *S)
GENESISAPI geBitmap *GENESISCC geSprite_GetBackfaceBitmap (const geSprite *S)
GENESISAPI void GENESISCC geSprite_GetBackface (const geSprite *S, geBoolean *Enabled, geBoolean *MirrorImage)
GENESISAPI void GENESISCC geSprite_SetBackface (geSprite *S, const geBoolean Enabled, const geBoolean MirrorImage)
GENESISAPI void GENESISCC geSprite_GetFaceCamera (const geSprite *S, geBoolean *Enabled)
GENESISAPI void GENESISCC geSprite_SetFaceCamera (geSprite *S, geBoolean Enabled)
GENESISAPI void GENESISCC geSprite_GetPosition (const geSprite *S, geVec3d *Pos)
GENESISAPI void GENESISCC geSprite_SetPosition (geSprite *S, const geVec3d *Pos)
GENESISAPI void GENESISCC geSprite_GetTransform (const geSprite *S, geXForm3d *Transform)
GENESISAPI void GENESISCC geSprite_SetTransform (geSprite *S, const geXForm3d *Transform)
GENESISAPI void GENESISCC geSprite_GetInternalTransform (const geSprite *S, geXForm3d *Transform)
GENESISAPI void GENESISCC geSprite_SetInternalTransform (geSprite *S, const geXForm3d *Transform)
GENESISAPI void GENESISCC geSprite_GetScale (const geSprite *S, geFloat *ScaleX, geFloat *ScaleY)
GENESISAPI void GENESISCC geSprite_SetScale (geSprite *S, geFloat ScaleX, geFloat ScaleY)
GENESISAPI void GENESISCC geSprite_GetExtBox (const geSprite *S, geExtBox *ExtBox)
GENESISAPI void GENESISCC geSprite_GetNonWorldExtBox (const geSprite *S, geExtBox *ExtBox)
GENESISAPI void GENESISCC geSprite_SetExtBox (geSprite *S, const geExtBox *ExtBox)
GENESISAPI void GENESISCC geSprite_GetTextureParameters (const geSprite *S, geFloat *OffsetX, geFloat *OffsetY, geFloat *ScaleX, geFloat *ScaleY)
GENESISAPI void GENESISCC geSprite_SetTextureParameters (geSprite *S, geFloat OffsetX, geFloat OffsetY, geFloat ScaleX, geFloat ScaleY)
GENESISAPI void GENESISCC geSprite_GetLightingOptions (const geSprite *S, geFloat *AmbientLightRed, geFloat *AmbientLightGreen, geFloat *AmbientLightBlue, geBoolean *UseFillLight, geVec3d *FillLightNormal, geFloat *FillLightRed, geFloat *FillLightGreen, geFloat *FillLightBlue, geBoolean *UseLightFromFloor, int32 *MaximumDynamicLightsToUse)
GENESISAPI void GENESISCC geSprite_SetLightingOptions (geSprite *S, geFloat AmbientLightRed, geFloat AmbientLightGreen, geFloat AmbientLightBlue, geBoolean UseFillLight, const geVec3d *FillLightNormal, geFloat FillLightRed, geFloat FillLightGreen, geFloat FillLightBlue, geBoolean UseLightFromFloor, int32 MaximumDynamicLightsToUse)
GENESISAPI void GENESISCC geSprite_GetAlpha (const geSprite *S, geFloat *Alpha, geFloat *BackfaceAlpha)
GENESISAPI void GENESISCC geSprite_SetAlpha (geSprite *S, geFloat Alpha, geFloat BackfaceAlpha)
GENESISAPI void *GENESISCC geSprite_GetUserData (const geSprite *S)
GENESISAPI void GENESISCC geSprite_SetUserData (geSprite *S, void *UserData)


Typedef Documentation

typedef struct geSprite geSprite
 

Definition at line 39 of file sprite.h.


Function Documentation

GENESISAPI geSprite* GENESISCC geSprite_Create geBitmap SpriteBitmap,
geBitmap SpriteBackfaceBitmap
 

Definition at line 797 of file sprite.c.

References GE_RGBA::a, geSprite::AlwaysFaceCamera, geSprite::AmbientLight, geColor::b, geSprite::BackfaceBitmap, geSprite::BackfaceEnabled, geSprite::BackfaceMirrorImage, geSprite::BackfaceRGBA, geSprite::Bitmap, geSprite::BoundingBoxMaxCorner, geSprite::BoundingBoxMinCorner, ERR_SPRITE_ENOMEM, ERR_SPRITE_INVALIDBITMAP, geColor::g, GE_FALSE, GE_RAM_ALLOCATE_STRUCT, GE_TRUE, geBitmap_CreateRef(), geBitmap_IsValid(), geErrorLog_Add, GENESISAPI, GENESISCC, geSprite_Count, geSprite_IsValid(), geSprite_UpdateCorners(), geSprite_UpdatePosition(), geSprite_UpdateTextureMap(), geVec3d_Clear(), geXForm3d_SetIdentity(), geSprite::InternalTransform, geSprite::InternalTransformUsed, geSprite::LightingChanged, geSprite::LightingUsesSurfaceNormal, geSprite::MaximumDynamicLightsToUse, NULL, geColor::r, geSprite::RefCount, geSprite::RGBA, geSprite::ScaleX, geSprite::ScaleY, geSprite::TextureOffsetX, geSprite::TextureOffsetY, geSprite::TextureScaleX, geSprite::TextureScaleY, geSprite::Transform, geSprite::TransformChanged, geSprite::UseFillLight, geSprite::UseLightFromFloor, and geSprite::UserData.

00798 {
00799         geSprite *S;
00800 
00801         if (SpriteBitmap)
00802         {
00803                 if ( geBitmap_IsValid(SpriteBitmap) == GE_FALSE )
00804                 {
00805                         geErrorLog_Add( ERR_SPRITE_INVALIDBITMAP , NULL);
00806                         return NULL;
00807                 }
00808         }
00809 
00810         if ( (SpriteBackfaceBitmap) && (SpriteBackfaceBitmap != SpriteBitmap) )
00811         {
00812                 if ( geBitmap_IsValid(SpriteBackfaceBitmap) == GE_FALSE )
00813                 {
00814                         geErrorLog_Add( ERR_SPRITE_INVALIDBITMAP , NULL);
00815                         return NULL;
00816                 }
00817         }
00818 
00819 
00820         S = GE_RAM_ALLOCATE_STRUCT( geSprite );
00821         if ( S == NULL )
00822         {
00823                 geErrorLog_Add( ERR_SPRITE_ENOMEM , NULL);
00824                 return NULL;
00825         }
00826         
00827         S->RefCount = 0;
00828 
00829         S->Bitmap = SpriteBitmap;
00830         if (SpriteBitmap)
00831                 geBitmap_CreateRef(SpriteBitmap);
00832 
00833         S->BackfaceBitmap = SpriteBackfaceBitmap;
00834         if ( (SpriteBackfaceBitmap) && (SpriteBitmap != SpriteBackfaceBitmap) )
00835                 geBitmap_CreateRef(SpriteBackfaceBitmap);
00836 
00837         S->BackfaceEnabled = GE_TRUE;
00838         S->BackfaceMirrorImage = GE_TRUE;
00839 
00840         S->AlwaysFaceCamera = GE_FALSE;
00841         
00842         geXForm3d_SetIdentity(&(S->Transform));
00843 
00844         S->InternalTransformUsed = GE_FALSE;
00845         geXForm3d_SetIdentity(&(S->InternalTransform));
00846 
00847         geSprite_UpdatePosition(S);
00848 
00849         S->ScaleX = 1.0f;
00850         S->ScaleY = 1.0f;
00851         geSprite_UpdateCorners(S);
00852 
00853         S->TextureOffsetX = 0.0f;
00854         S->TextureOffsetY = 0.0f;
00855         S->TextureScaleX = 1.0f;
00856         S->TextureScaleY = 1.0f;
00857         geSprite_UpdateTextureMap(S);
00858 
00859         geVec3d_Clear(&(S->BoundingBoxMinCorner));
00860         geVec3d_Clear(&(S->BoundingBoxMaxCorner));
00861 
00862         S->AmbientLight.r = 0.1f;               
00863         S->AmbientLight.g = 0.1f;                       
00864         S->AmbientLight.b = 0.1f;
00865         S->UseFillLight = GE_FALSE;
00866         S->UseLightFromFloor = GE_FALSE;
00867         S->MaximumDynamicLightsToUse = 0;
00868 
00869         S->LightingUsesSurfaceNormal = GE_FALSE;
00870 
00871         S->RGBA.a = 255.0f;
00872         S->BackfaceRGBA.a = 255.0f;
00873 
00874         S->UserData = NULL;
00875 
00876         S->TransformChanged = GE_TRUE;
00877         S->LightingChanged = GE_TRUE;
00878 
00879         assert( geSprite_IsValid(S) );
00880 
00881         geSprite_Count++;
00882 
00883         return S;
00884 }       

GENESISAPI void GENESISCC geSprite_CreateRef geSprite Sprite  ) 
 

Definition at line 887 of file sprite.c.

References GENESISAPI, GENESISCC, geSprite_IsValid(), geSprite_RefCount, and geSprite::RefCount.

Referenced by geWorld_AddSprite().

00888 {
00889         assert( geSprite_IsValid(S) );
00890 
00891         S->RefCount++;
00892         geSprite_RefCount++;
00893 }

GENESISAPI void GENESISCC geSprite_Destroy geSprite **  pS  ) 
 

Definition at line 896 of file sprite.c.

References geSprite::BackfaceBitmap, geSprite::Bitmap, geBitmap_Destroy(), GENESISAPI, GENESISCC, geRam_Free, geSprite_Count, geSprite_IsValid(), geSprite_RefCount, NULL, and geSprite::RefCount.

Referenced by geWorld_Free(), and geWorld_RemoveSprite().

00897 {
00898         geSprite *S;
00899         assert(  pS != NULL );
00900         assert( *pS != NULL );
00901         assert( geSprite_IsValid(*pS) );
00902         
00903         S = *pS;
00904         if (S->RefCount > 0)
00905         {
00906                 S->RefCount --;
00907                 geSprite_RefCount--;
00908                 return;
00909         }
00910 
00911         if (S->Bitmap)
00912         {
00913                 geBitmap_Destroy(&(S->Bitmap));
00914         }
00915 
00916         if ( (S->BackfaceBitmap) && (S->BackfaceBitmap != S->Bitmap) )
00917         {
00918                 geBitmap_Destroy(&(S->BackfaceBitmap));
00919         }
00920 
00921         geRam_Free(*pS);
00922         geSprite_Count--;
00923         *pS = NULL;
00924 }

GENESISAPI void GENESISCC geSprite_GetAlpha const geSprite S,
geFloat Alpha,
geFloat BackfaceAlpha
 

Definition at line 1252 of file sprite.c.

References GE_RGBA::a, geSprite::BackfaceRGBA, GENESISAPI, GENESISCC, geSprite_IsValid(), and geSprite::RGBA.

01253 {
01254         assert( geSprite_IsValid(S) );
01255         assert( Alpha );
01256         assert( BackfaceAlpha );
01257 
01258         *Alpha = S->RGBA.a;
01259         *BackfaceAlpha = S->BackfaceRGBA.a;
01260 }

GENESISAPI void GENESISCC geSprite_GetBackface const geSprite S,
geBoolean Enabled,
geBoolean MirrorImage
 

Definition at line 952 of file sprite.c.

References geSprite::BackfaceEnabled, geSprite::BackfaceMirrorImage, GENESISAPI, and GENESISCC.

00953 {
00954         assert ( Enabled );
00955         assert ( MirrorImage );
00956 
00957         *Enabled = S->BackfaceEnabled;
00958         *MirrorImage = S->BackfaceMirrorImage;
00959 }

GENESISAPI geBitmap* GENESISCC geSprite_GetBackfaceBitmap const geSprite S  ) 
 

Definition at line 944 of file sprite.c.

References geSprite::BackfaceBitmap, geBitmap_IsValid(), GENESISAPI, GENESISCC, and NULL.

00945 {
00946         assert ( (S->BackfaceBitmap == NULL) || (geBitmap_IsValid(S->BackfaceBitmap)) );
00947 
00948         return S->BackfaceBitmap;
00949 }

GENESISAPI geBitmap* GENESISCC geSprite_GetBitmap const geSprite S  ) 
 

Definition at line 936 of file sprite.c.

References geSprite::Bitmap, geBitmap_IsValid(), GENESISAPI, GENESISCC, and NULL.

00937 {
00938         assert ( (S->Bitmap == NULL) || (geBitmap_IsValid(S->Bitmap)) );
00939 
00940         return S->Bitmap;
00941 }

GENESISAPI int32 GENESISCC geSprite_GetCount  ) 
 

Definition at line 791 of file sprite.c.

References GENESISAPI, GENESISCC, geSprite_Count, and int32.

00792 {
00793         return geSprite_Count;
00794 }

GENESISAPI void GENESISCC geSprite_GetExtBox const geSprite S,
geExtBox ExtBox
 

Definition at line 1102 of file sprite.c.

References geSprite::BoundingBoxMaxCorner, geSprite::BoundingBoxMinCorner, GENESISAPI, GENESISCC, geSprite_IsValid(), geVec3d_Add(), geXForm3d_IsOrthonormal(), geExtBox::Max, geExtBox::Min, NULL, geSprite::Transform, and geXForm3d::Translation.

01103 {
01104         assert( geSprite_IsValid(S) );
01105         assert( ExtBox != NULL );
01106         assert( geXForm3d_IsOrthonormal(&(S->Transform)) );
01107 
01108         geVec3d_Add( &(S->Transform.Translation), &(S->BoundingBoxMinCorner), &(ExtBox->Min));
01109         geVec3d_Add( &(S->Transform.Translation), &(S->BoundingBoxMaxCorner), &(ExtBox->Max));
01110 }

GENESISAPI void GENESISCC geSprite_GetFaceCamera const geSprite S,
geBoolean Enabled
 

Definition at line 982 of file sprite.c.

References geSprite::AlwaysFaceCamera, GENESISAPI, GENESISCC, geSprite_IsValid(), and NULL.

00983 {
00984         assert( geSprite_IsValid(S) );
00985         assert( Enabled != NULL );
00986 
00987         *Enabled = S->AlwaysFaceCamera;
00988 }

GENESISAPI void GENESISCC geSprite_GetInternalTransform const geSprite S,
geXForm3d Transform
 

Definition at line 1054 of file sprite.c.

References GENESISAPI, GENESISCC, geSprite_IsValid(), and geSprite::InternalTransform.

01055 {
01056         assert( geSprite_IsValid(S) );
01057         assert( Transform );
01058 
01059         *Transform = S->InternalTransform;
01060 }

GENESISAPI void GENESISCC geSprite_GetLightingOptions const geSprite S,
geFloat AmbientLightRed,
geFloat AmbientLightGreen,
geFloat AmbientLightBlue,
geBoolean UseFillLight,
geVec3d FillLightNormal,
geFloat FillLightRed,
geFloat FillLightGreen,
geFloat FillLightBlue,
geBoolean UseLightFromFloor,
int32 MaximumDynamicLightsToUse
 

Definition at line 1169 of file sprite.c.

References geSprite::AmbientLight, geColor::b, geSprite::FillLight, geSprite::FillLightNormal, geColor::g, GENESISAPI, GENESISCC, geSprite_IsValid(), geSprite::MaximumDynamicLightsToUse, NULL, geColor::r, geSprite::UseFillLight, and geSprite::UseLightFromFloor.

01180 {
01181         assert( geSprite_IsValid(S) );
01182 
01183         assert( AmbientLightRed != NULL );
01184         assert( AmbientLightGreen != NULL );                    
01185         assert( AmbientLightBlue != NULL );                     
01186         assert( UseFillLight != NULL );
01187         assert( FillLightNormal != NULL );
01188         assert( FillLightRed != NULL ); 
01189         assert( FillLightGreen != NULL );       
01190         assert( FillLightBlue != NULL );        
01191         assert( UseLightFromFloor != NULL );
01192         assert( MaximumDynamicLightsToUse != NULL );
01193 
01194         *AmbientLightRed = S->AmbientLight.r;
01195         *AmbientLightGreen = S->AmbientLight.g;
01196         *AmbientLightBlue = S->AmbientLight.b;
01197         *UseFillLight = S->UseFillLight;
01198         *FillLightNormal = S->FillLightNormal;
01199         *FillLightRed = S->FillLight.r;
01200         *FillLightGreen = S->FillLight.g;
01201         *FillLightBlue = S->FillLight.b;
01202         *UseLightFromFloor = S->UseLightFromFloor;
01203         *MaximumDynamicLightsToUse = S->MaximumDynamicLightsToUse;
01204 }

GENESISAPI void GENESISCC geSprite_GetNonWorldExtBox const geSprite S,
geExtBox ExtBox
 

Definition at line 1113 of file sprite.c.

References geSprite::BoundingBoxMaxCorner, geSprite::BoundingBoxMinCorner, GENESISAPI, GENESISCC, geSprite_IsValid(), geExtBox::Max, geExtBox::Min, and NULL.

01114 {
01115         assert( geSprite_IsValid(S) );
01116         assert( ExtBox != NULL );
01117         
01118         ExtBox->Min = S->BoundingBoxMinCorner;
01119         ExtBox->Max = S->BoundingBoxMaxCorner;
01120 }

GENESISAPI void GENESISCC geSprite_GetPosition const geSprite S,
geVec3d Pos
 

Definition at line 1008 of file sprite.c.

References GENESISAPI, GENESISCC, geSprite_IsValid(), geXForm3d_IsOrthonormal(), NULL, geSprite::Transform, and geXForm3d::Translation.

Referenced by geWorld_IsSpritePotentiallyVisible(), and RenderScene().

01009 {
01010         assert( geSprite_IsValid(S) );
01011         assert( Pos != NULL );
01012         assert( geXForm3d_IsOrthonormal(&(S->Transform)) );
01013 
01014         *Pos = S->Transform.Translation;
01015 }

GENESISAPI void GENESISCC geSprite_GetScale const geSprite S,
geFloat ScaleX,
geFloat ScaleY
 

Definition at line 1077 of file sprite.c.

References GE_FALSE, GENESISAPI, GENESISCC, geSprite_IsValid(), geSprite::ScaleX, and geSprite::ScaleY.

01078 {
01079         assert( geSprite_IsValid(S)!=GE_FALSE );
01080 
01081         *ScaleX = S->ScaleX;
01082         *ScaleY = S->ScaleY;
01083 }

GENESISAPI void GENESISCC geSprite_GetTextureParameters const geSprite S,
geFloat OffsetX,
geFloat OffsetY,
geFloat ScaleX,
geFloat ScaleY
 

Definition at line 1133 of file sprite.c.

References GENESISAPI, GENESISCC, geSprite_IsValid(), NULL, geSprite::TextureOffsetX, geSprite::TextureOffsetY, geSprite::TextureScaleX, and geSprite::TextureScaleY.

01138 {
01139         assert( geSprite_IsValid(S) );
01140         assert( OffsetX != NULL );
01141         assert( OffsetY != NULL );
01142         assert( ScaleX != NULL );
01143         assert( ScaleY != NULL );
01144 
01145         *OffsetX = S->TextureOffsetX;
01146         *OffsetY = S->TextureOffsetY;
01147         *ScaleX = S->TextureScaleX;
01148         *ScaleY = S->TextureScaleY;
01149 }

GENESISAPI void GENESISCC geSprite_GetTransform const geSprite S,
geXForm3d Transform
 

Definition at line 1032 of file sprite.c.

References GENESISAPI, GENESISCC, geSprite_IsValid(), NULL, and geSprite::Transform.

01033 {
01034         assert( geSprite_IsValid(S) );
01035         assert( Transform!= NULL );
01036 
01037         *Transform = S->Transform;
01038 }

GENESISAPI void* GENESISCC geSprite_GetUserData const geSprite S  ) 
 

Definition at line 1282 of file sprite.c.

References GENESISAPI, GENESISCC, geSprite_IsValid(), and geSprite::UserData.

01283 {
01284         assert( geSprite_IsValid(S) );
01285 
01286         return S->UserData;
01287 }

GENESISAPI geBoolean GENESISCC geSprite_IsValid const geSprite S  ) 
 

Definition at line 927 of file sprite.c.

References GE_FALSE, GE_TRUE, geBoolean, GENESISAPI, GENESISCC, and NULL.

Referenced by geSprite_Create(), geSprite_CreateRef(), geSprite_Destroy(), geSprite_GetAlpha(), geSprite_GetExtBox(), geSprite_GetFaceCamera(), geSprite_GetInternalTransform(), geSprite_GetLightingOptions(), geSprite_GetNonWorldExtBox(), geSprite_GetPosition(), geSprite_GetScale(), geSprite_GetTextureParameters(), geSprite_GetTransform(), geSprite_GetUserData(), geSprite_RenderPrep(), geSprite_RenderThroughFrustum(), geSprite_SetAlpha(), geSprite_SetBackface(), geSprite_SetExtBox(), geSprite_SetFaceCamera(), geSprite_SetInternalTransform(), geSprite_SetLightingOptions(), geSprite_SetPosition(), geSprite_SetScale(), geSprite_SetTextureParameters(), geSprite_SetTransform(), geSprite_SetUserData(), geWorld_AddSprite(), geWorld_IsSpritePotentiallyVisible(), geWorld_RemoveSprite(), and geWorld_SetSpriteFlags().

00928 {
00929         if (S == NULL)
00930                 return GE_FALSE;
00931 
00932         return GE_TRUE;
00933 }

GENESISAPI void GENESISCC geSprite_SetAlpha geSprite S,
geFloat  Alpha,
geFloat  BackfaceAlpha
 

Definition at line 1263 of file sprite.c.

References GE_RGBA::a, geSprite::BackfaceRGBA, GENESISAPI, GENESISCC, geSprite_IsValid(), and geSprite::RGBA.

01264 {
01265         assert( geSprite_IsValid(S) );
01266 
01267         S->RGBA.a = Alpha;
01268         S->BackfaceRGBA.a = BackfaceAlpha;
01269 
01270         // alphas cannot be less than 0 or greater than 255
01271         if (S->RGBA.a < 0)
01272                 S->RGBA.a = 0.0f;
01273         else if (S->RGBA.a > 255.0f)
01274                 S->RGBA.a = 255.0f;
01275         if (S->BackfaceRGBA.a < 0)
01276                 S->BackfaceRGBA.a = 0.0f;
01277         else if (S->BackfaceRGBA.a > 255.0f)
01278                 S->BackfaceRGBA.a = 255.0f;
01279 }

GENESISAPI void GENESISCC geSprite_SetBackface geSprite S,
const geBoolean  Enabled,
const geBoolean  MirrorImage
 

Definition at line 962 of file sprite.c.

References geSprite::BackfaceEnabled, geSprite::BackfaceMirrorImage, GENESISAPI, GENESISCC, geSprite_IsValid(), geSprite_UpdateBackfaceTextureMap(), and geSprite::LightingChanged.

00963 {
00964         assert( geSprite_IsValid(S) );
00965 
00966         // because lighting the backface requires a lot of extra calculations, the
00967         // backface doesn't have correct lighting if it has been turned off. so, if it
00968         // is turned on, lighting needs to be updated
00969         S->LightingChanged = (S->LightingChanged || ((Enabled) && (!S->BackfaceEnabled)) );
00970 
00971         // if the mirror imaging is changed, then update the texture map for the backface
00972         if (S->BackfaceMirrorImage != MirrorImage)
00973         {
00974                 S->BackfaceMirrorImage = MirrorImage;
00975                 geSprite_UpdateBackfaceTextureMap(S);
00976         }
00977 
00978         S->BackfaceEnabled = Enabled;
00979 }

GENESISAPI void GENESISCC geSprite_SetExtBox geSprite S,
const geExtBox ExtBox
 

Definition at line 1123 of file sprite.c.

References geSprite::BoundingBoxMaxCorner, geSprite::BoundingBoxMinCorner, geExtBox_IsValid(), GENESISAPI, GENESISCC, geSprite_IsValid(), geExtBox::Max, and geExtBox::Min.

01124 {
01125         assert( geSprite_IsValid(S) );
01126         assert( geExtBox_IsValid(ExtBox) );
01127 
01128         S->BoundingBoxMinCorner = ExtBox->Min;
01129         S->BoundingBoxMaxCorner = ExtBox->Max;
01130 }

GENESISAPI void GENESISCC geSprite_SetFaceCamera geSprite S,
geBoolean  Enabled
 

Definition at line 991 of file sprite.c.

References geSprite::AlwaysFaceCamera, GE_TRUE, GENESISAPI, GENESISCC, geSprite_IsValid(), geSprite_UpdatePosition(), and geSprite::TransformChanged.

00992 {
00993         assert( geSprite_IsValid(S) );
00994 
00995         // if facing the camera is being disabled, then force an
00996         // update on everything the transform affects
00997         if ( (S->AlwaysFaceCamera) && (!Enabled) )
00998         {
00999                 S->TransformChanged = GE_TRUE;
01000         }
01001 
01002         S->AlwaysFaceCamera = Enabled;
01003 
01004         geSprite_UpdatePosition(S);
01005 }

GENESISAPI void GENESISCC geSprite_SetInternalTransform geSprite S,
const geXForm3d Transform
 

Definition at line 1063 of file sprite.c.

References GE_TRUE, GENESISAPI, GENESISCC, geSprite_IsValid(), geSprite_UpdatePosition(), geXForm3d_IsIdentity(), geSprite::InternalTransform, geSprite::InternalTransformUsed, and geSprite::TransformChanged.

01064 {
01065         assert( geSprite_IsValid(S) );
01066         assert( Transform );
01067 
01068         S->InternalTransform = *Transform;
01069         S->InternalTransformUsed = !( geXForm3d_IsIdentity(Transform) );
01070 
01071         geSprite_UpdatePosition(S);
01072 
01073         S->TransformChanged = GE_TRUE;
01074 }

GENESISAPI void GENESISCC geSprite_SetLightingOptions geSprite S,
geFloat  AmbientLightRed,
geFloat  AmbientLightGreen,
geFloat  AmbientLightBlue,
geBoolean  UseFillLight,
const geVec3d FillLightNormal,
geFloat  FillLightRed,
geFloat  FillLightGreen,
geFloat  FillLightBlue,
geBoolean  UseLightFromFloor,
int32  MaximumDynamicLightsToUse
 

Definition at line 1207 of file sprite.c.

References geSprite::AlwaysFaceCamera, geSprite::AmbientLight, geColor::b, geSprite::FillLight, geSprite::FillLightNormal, geColor::g, GENESISAPI, GENESISCC, geSprite_IsValid(), geSprite_UpdateSurfaceNormal(), geVec3d_IsValid(), geSprite::LightingUsesSurfaceNormal, geSprite::MaximumDynamicLightsToUse, geColor::r, geSprite::TransformChanged, geSprite::UseFillLight, and geSprite::UseLightFromFloor.

01219 {
01220         assert( geSprite_IsValid(S) );
01221         assert( geVec3d_IsValid(FillLightNormal) );
01222 
01223         S->AmbientLight.r = AmbientLightRed;
01224         S->AmbientLight.g = AmbientLightGreen;
01225         S->AmbientLight.b = AmbientLightBlue;
01226         S->UseFillLight = UseFillLight;
01227         S->FillLightNormal = *FillLightNormal;
01228         S->FillLight.r = FillLightRed;
01229         S->FillLight.g = FillLightGreen;
01230         S->FillLight.b = FillLightBlue;
01231         S->UseLightFromFloor = UseLightFromFloor;
01232         S->MaximumDynamicLightsToUse = MaximumDynamicLightsToUse;
01233 
01234         // if fill light or dynamic lights are now used, and they weren't before,
01235         // then the surface normal will be needed.
01236         //
01237         // if the transform has changed, then it will be updated next render, so
01238         // don't do it now
01239         //
01240         // if the camera always faces the camera, then this will be updated every
01241         // render (and using a different normal), so don't do it now.
01242         if ( (!S->TransformChanged) && 
01243                          (!S->AlwaysFaceCamera) &&
01244                          (!S->LightingUsesSurfaceNormal) && ((UseFillLight) || (MaximumDynamicLightsToUse > 0)) )
01245                 geSprite_UpdateSurfaceNormal(S);
01246 
01247         // store whether vertexes are required for lighting (only for fill lights and dynamic lights)
01248         S->LightingUsesSurfaceNormal = (S->UseFillLight) || (S->MaximumDynamicLightsToUse > 0);
01249 }

GENESISAPI void GENESISCC geSprite_SetPosition geSprite S,
const geVec3d Pos
 

Definition at line 1018 of file sprite.c.

References GE_TRUE, GENESISAPI, GENESISCC, geSprite_IsValid(), geSprite_UpdatePosition(), geXForm3d_IsOrthonormal(), NULL, geSprite::Transform, geSprite::TransformChanged, and geXForm3d::Translation.

01019 {
01020         assert( geSprite_IsValid(S) );
01021         assert( Pos != NULL );
01022         assert( geXForm3d_IsOrthonormal(&(S->Transform)) );
01023 
01024         S->Transform.Translation = *Pos;
01025 
01026         geSprite_UpdatePosition(S);
01027 
01028         S->TransformChanged = GE_TRUE;
01029 }

GENESISAPI void GENESISCC geSprite_SetScale geSprite S,
geFloat  ScaleX,
geFloat  ScaleY
 

Definition at line 1086 of file sprite.c.

References GE_FALSE, GE_TRUE, GENESISAPI, GENESISCC, geSprite_IsValid(), geSprite_UpdateCorners(), geSprite::ScaleX, geSprite::ScaleY, and geSprite::TransformChanged.

01087 {
01088         assert( geSprite_IsValid(S)!=GE_FALSE );
01089 
01090         if ( (S->ScaleX != ScaleX) || (S->ScaleY != ScaleY) )
01091         {
01092                 S->ScaleX = ScaleX;
01093                 S->ScaleY = ScaleY;
01094 
01095                 geSprite_UpdateCorners(S);
01096 
01097                 S->TransformChanged = GE_TRUE;
01098         }
01099 }

GENESISAPI void GENESISCC geSprite_SetTextureParameters geSprite S,
geFloat  OffsetX,
geFloat  OffsetY,
geFloat  ScaleX,
geFloat  ScaleY
 

Definition at line 1152 of file sprite.c.

References GENESISAPI, GENESISCC, geSprite_IsValid(), geSprite_UpdateTextureMap(), geSprite::TextureOffsetX, geSprite::TextureOffsetY, geSprite::TextureScaleX, and geSprite::TextureScaleY.

01157 {
01158         assert( geSprite_IsValid(S) );
01159 
01160         S->TextureOffsetX = OffsetX;
01161         S->TextureOffsetY = OffsetY;
01162         S->TextureScaleX = ScaleX;
01163         S->TextureScaleY = ScaleY;
01164 
01165         geSprite_UpdateTextureMap(S);
01166 }

GENESISAPI void GENESISCC geSprite_SetTransform geSprite S,
const geXForm3d Transform
 

Definition at line 1041 of file sprite.c.

References GE_TRUE, GENESISAPI, GENESISCC, geSprite_IsValid(), geSprite_UpdatePosition(), geSprite::Transform, and geSprite::TransformChanged.

01042 {
01043         assert( geSprite_IsValid(S) );
01044         assert( Transform );
01045 
01046         S->Transform = *Transform;
01047         
01048         geSprite_UpdatePosition(S);
01049 
01050         S->TransformChanged = GE_TRUE;
01051 }

GENESISAPI void GENESISCC geSprite_SetUserData geSprite S,
void *  UserData
 

Definition at line 1290 of file sprite.c.

References GENESISAPI, GENESISCC, geSprite_IsValid(), and geSprite::UserData.

01291 {
01292         assert( geSprite_IsValid(S) );
01293 
01294         S->UserData = UserData;
01295 }


Generated on Tue Sep 30 12:38:10 2003 for GTestAndEngine by doxygen 1.3.2