Rise
The Vieneo Province
Sprite.cpp
Go to the documentation of this file.
1 #include "Sprite.h"
2 #include "../Logger.h"
3 #include "DeviceObject.h"
4 
5 Sprite::Sprite(Logger* prmLogger, DeviceObject* prmpDevice, std::string prmPathAndFilename, int prmX, int prmY,
6  float prmZ, int prmTop, int prmLeft, int prmWidth, int prmHeight, DWORD prmColor, float prmScaleX, float prmScaleY)
7 {
8  logger = prmLogger;
9  logger->AddToCallStack("Sprite::ctor");
12  pSprite = prmpDevice->pSprite;
13 
14  x = prmX;
15  y = prmY;
16  z = prmZ;
17  top = prmTop;
18  left = prmLeft;
19  width = prmWidth;
20  height = prmHeight;
21  color = prmColor;
22  scale.x = prmScaleX;
23  scale.y = prmScaleY;
24 
25  //dxSprite.pTexture = prmpDevice->GetTextureSRV(prmLogger, pathAndFilename);
26  pTexture = prmpDevice->GetTextureSRV(prmPathAndFilename);
27  //if (dxSprite.pTexture)
28  //{
29  // ID3D10Resource* resource;
30  // dxSprite.pTexture->GetResource(&resource);
31  // static_cast<ID3D10Texture2D*>(resource)->GetDesc(&desc);
32  // SAFE_RELEASE(resource);
33  //}
34 
35  centerOffset.x = width * 0.5f;
36  centerOffset.y = height * 0.5f;
37 
38  Update();
39 }
40 
41 void Sprite::Update() // if scale, width, height, position, rotation, top, or left change
42 {
43  logger->AddToCallStack("Sprite::Update");
44 
45  //dxSprite.TexCoord = texCoord;
46  //dxSprite.TexSize = texSize;
47 
48  position.x = static_cast<float>(x);
49  position.y = static_cast<float>(y);
50  position.z = z;
51 
54 
55  D3DXVECTOR2 tempScale = scale * mag;
56 
57  D3DXVECTOR2 origin = D3DXVECTOR2(position.x, position.y);
58  D3DXMatrixTransformation2D(&matWorld, &origin, 0.0f, &tempScale, &centerRotation, -rotate, nullptr);
59 
60  rect.top = top;
61  rect.left = left;
62  rect.bottom = top + height;
63  rect.right = left + width;
64 }
65 
66 void Sprite::Draw(D3DXCOLOR prmColor)
67 {
68  color = prmColor;
69  Draw();
70 }
71 
72 void Sprite::Draw() const
73 {
74  HRESULT hr;
75 
76  logger->AddToCallStack("Sprite::Draw");
77  //if (normallyHidden && !bus->IsVisible(elementName)) return;
78 
79  //if (bus->IsDim(elementName))
80  // dxSprite.ColorModulate = D3DXCOLOR(color.r * 0.5f, color.g * 0.5f, color.b * 0.5f, color.a);
81  //else
82  // dxSprite.ColorModulate = color;
83 
84  V(pSprite->SetTransform(&matWorld));
85 
86  //if (FAILED(hr = pSprite->DrawSpritesBuffered(&dxSprite, 1)))
87  V(pSprite->Draw(pTexture, &rect, nullptr, &position, color));
88 }
89 
90 void Sprite::SetLocation(int absoluteX, int absoluteY)
91 {
92  x = absoluteX;
93  y = absoluteY;
94 }
95 
96 void Sprite::SetRectangle(int prmTop, int prmLeft, int prmRight, int prmBottom)
97 {
98  top = prmTop;
99  left = prmLeft;
100  height = prmBottom - top;
101  width = prmRight - left;
102 }
void SetLocation(int absoluteX, int absoluteY)
Definition: Sprite.cpp:90
void Draw() const
Definition: Sprite.cpp:72
D3DXVECTOR2 centerRotation
Definition: Sprite.h:20
float mag
Definition: Sprite.h:31
Sprite(Logger *prmLogger, DeviceObject *prmpDevice, std::string prmPathAndFilename, int prmX, int prmY, float prmZ, int prmTop, int prmLeft, int prmWidth, int prmHeight, DWORD prmColor, float scaleX=1.0f, float scaleY=1.0f)
Definition: Sprite.cpp:5
D3DXVECTOR3 position
Definition: Sprite.h:19
void SetRectangle(int top, int left, int right, int bottom)
Definition: Sprite.cpp:96
Definition: Logger.h:9
int y
Definition: Sprite.h:14
void Update()
Definition: Sprite.cpp:41
LPDIRECT3DTEXTURE9 pTexture
Definition: Sprite.h:12
float rotate
Definition: Sprite.h:30
D3DXVECTOR2 centerOffset
Definition: Sprite.h:25
int x
Definition: Sprite.h:14
float z
Definition: Sprite.h:15
int height
Definition: Sprite.h:14
LPD3DXSPRITE pSprite
Definition: Sprite.h:10
D3DXCOLOR color
Definition: Sprite.h:17
int width
Definition: Sprite.h:14
int top
Definition: Sprite.h:23
Logger * logger
Definition: Sprite.h:13
D3DXVECTOR2 scale
Definition: Sprite.h:21
D3DXMATRIX matWorld
Definition: Sprite.h:18
int left
Definition: Sprite.h:24
void AddToCallStack(const char *msg)
Definition: Logger.cpp:86
LPD3DXSPRITE pSprite
Definition: DeviceObject.h:21
RECT rect
Definition: Sprite.h:22
LPDIRECT3DTEXTURE9 GetTextureSRV(std::string pathAndFilename)