File Sprite.c

File List > Components > Sprite.c

Go to the documentation of this file

#include "Sprite.h"
#include "Entities.h"
#include "GameFramework.h"
#include "InputContext.h"
#include "DrawContext.h"
#include "Atlas.h"
#include "Game2DLayer.h"
#include "Game2DVertexOutputHelpers.h"

void SpriteComp_OnInit(struct Entity2D* pEnt, struct GameFrameworkLayer* pLayer, float deltaT)
{

}

void SpriteComp_Update(struct Entity2D* pEnt, struct GameFrameworkLayer* pLayer, float deltaT)
{
}

void SpriteComp_UpdatePostPhysics(struct Entity2D* pEnt, struct GameFrameworkLayer* pLayer, float deltaT)
{

}

void SpriteComp_Draw(
    struct Sprite* pSpriteComp,
    struct Entity2D* pEnt,
    struct GameFrameworkLayer* pLayer,
    struct Transform2D* pCam,
    VECTOR(Worldspace2DVert)* outVerts,
    VECTOR(VertIndexT)* outIndices,
    VertIndexT* pNextIndex
)
{
    if(!pSpriteComp->bDraw)
        return;

    HSprite_DrawBase(pSpriteComp->sprite, &pSpriteComp->transform, pEnt, pLayer, outVerts, outIndices, pNextIndex);
}

void SpriteComp_Input(struct Entity2D* pEnt, struct GameFrameworkLayer* pLayer, InputContext* context)
{

}

void SpriteComp_OnDestroy(struct Entity2D* pEnt)
{

}

void SpriteComp_GetBoundingBox(struct Entity2D* pEnt, struct Sprite* pSpriteComp, struct GameFrameworkLayer* pLayer, vec2 outTL, vec2 outBR)
{
    if(!pSpriteComp->bDraw) return;
    struct GameLayer2DData* pLayerData = pLayer->userData;
    AtlasSprite* pSprite = At_GetSprite(pSpriteComp->sprite, pLayerData->hAtlas);
    vec2 tl = {pEnt->transform.position[0], pEnt->transform.position[1]};
    vec2 br;
    vec2 size = {
        pSprite->widthPx  * pEnt->transform.scale[0] * pSpriteComp->transform.scale[0],
        pSprite->heightPx * pEnt->transform.scale[1] * pSpriteComp->transform.scale[1]
    };
    glm_vec2_add(pEnt->transform.position, size, br);
    glm_vec2_add(tl, pSpriteComp->transform.position, tl);
    glm_vec2_add(br, pSpriteComp->transform.position, br);

    outTL[0] = tl[0];
    outTL[1] = tl[1];
    outBR[0] = br[0];
    outBR[1] = br[1];
}