GX2_GUI_Template/src/gui/GameIcon.h

86 lines
2.4 KiB
C++

#ifndef _GAME_ICON_H_
#define _GAME_ICON_H_
#include "GuiImageAsync.h"
#include "video/shaders/Shader3D.h"
class GameIcon : public GuiImageAsync
{
public:
GameIcon(const std::string & filename, GuiImageData *preloadImage);
virtual ~GameIcon();
void setRotationX(f32 r) {
rotationX = r;
}
void setColorIntensity(const glm::vec4 & color) {
colorIntensity = color;
colorIntensityMirror = colorIntensity;
selectionBlurOuterColorIntensity = color * glm::vec4(0.09411764f * 1.15f, 0.56862745f * 1.15f, 0.96862745098f * 1.15f, 1.0f);
selectionBlurInnerColorIntensity = color * glm::vec4(0.46666667f, 0.90588235f, 1.0f, 1.0f);
}
const glm::vec4 & getColorIntensity() const {
return colorIntensity;
}
void setAlphaFadeOutNorm(const glm::vec4 & a) {
alphaFadeOutNorm = a;
}
void setAlphaFadeOutRefl(const glm::vec4 & a) {
alphaFadeOutRefl = a;
}
void setRenderReflection(bool enable) {
bRenderReflection = enable;
}
void setSelected(bool enable) {
bSelected = enable;
}
void setStrokeRender(bool enable) {
bRenderStroke = enable;
}
void setRenderIconLast(bool enable) {
bIconLast = enable;
}
void draw(CVideo *pVideo) {
static const glm::mat4 identity(1.0f);
draw(pVideo, identity, identity, identity);
}
void draw(CVideo *pVideo, const glm::mat4 & projection, const glm::mat4 & view, const glm::mat4 & modelView);
bool checkRayIntersection(const glm::vec3 & rayOrigin, const glm::vec3 & rayDirFrac);
private:
enum eRenderState
{
RENDER_REFLECTION,
RENDER_NORMAL
};
bool bSelected;
bool bRenderStroke;
bool bRenderReflection;
bool bIconLast;
glm::vec4 colorIntensity;
glm::vec4 colorIntensityMirror;
glm::vec4 alphaFadeOutNorm;
glm::vec4 alphaFadeOutRefl;
f32 reflectionAlpha;
f32 strokeWidth;
f32 rotationX;
f32 rgbReduction;
f32 distanceFadeout;
f32 *texCoordsMirror;
f32 *strokePosVtxs;
f32 *strokeTexCoords;
u8 *strokeColorVtxs;
int strokeFractalEnable;
f32 strokeBlurBorder;
glm::vec4 selectionBlurOuterColorIntensity;
f32 selectionBlurOuterSize;
f32 selectionBlurOuterBorderSize;
glm::vec4 selectionBlurInnerColorIntensity;
f32 selectionBlurInnerSize;
f32 selectionBlurInnerBorderSize;
};
#endif // _GAME_ICON_H_