Files
2022-10-26 12:25:11 +08:00

52 lines
1.5 KiB
C++

#pragma once
class uiRadarMapData
{
public:
uiRadarMapData()
{
Clear();
}
~uiRadarMapData() {}
float map_image_width() { return map_image_width_; }
void set_map_image_width(float image_width) { map_image_width_ = image_width; }
float map_image_height() { return map_image_height_; }
void set_map_image_height(float image_height) { map_image_height_ = image_height; }
WzMatrix& transform_matrix() { return transform_matrix_; }
void set_transform_matrix(WzMatrix* matrix) { transform_matrix_ = *matrix; }
void CalculateTransformPosition(WzVector hero_position);
WzVector transform_position() { return transform_position_; }
void Clear();
private:
// 맵 이미지 사이즈
float map_image_width_;
float map_image_height_;
// 좌표 변환 메트릭스
WzMatrix transform_matrix_;
WzVector transform_position_;
};
inline void uiRadarMapData::Clear()
{
map_image_width_ = 960.0f;
map_image_height_ = 720.0f;
MatrixIdentity(&transform_matrix_);
}
inline void uiRadarMapData::CalculateTransformPosition(WzVector hero_position)
{
D3DXVECTOR4 transfirm_position(hero_position.x, hero_position.z, hero_position.y, 1.0f);
D3DXVec4Transform(&transfirm_position, &transfirm_position, (D3DXMATRIX*)(&transform_matrix()));
transform_position_.x = (((transfirm_position.x * 0.5f) + 0.5f) * map_image_width());
transform_position_.y = (((transfirm_position.y * (-0.5f)) + 0.5f) * map_image_height());
}