Bomberman-OverlordEngine-x64 / BombermanGame / Prefabs / Bomberman / Butterfly.h
Butterfly.h
Raw
#pragma once

class Butterfly : public GameObject
{
public:
	enum class Type : UINT
	{
		Yellow,
		White,
		Blue,
		Count,
		Random
	};

	enum class Direction : int
	{
		CCW = -1,
		Clockwise = 1
	};

	Butterfly(const XMFLOAT3& startPos, Butterfly::Type type = Butterfly::Type::Random, Butterfly::Direction direction = Butterfly::Direction::Clockwise);
	~Butterfly() override = default;

	Butterfly(const Butterfly& other) = delete;
	Butterfly(Butterfly&& other) noexcept = delete;
	Butterfly& operator=(const Butterfly& other) = delete;
	Butterfly& operator=(Butterfly&& other) noexcept = delete;

	void DrawImGui();

protected:
	void Initialize(const SceneContext&) override;
	void Update(const SceneContext&) override;

private:

	static std::vector<UINT> m_MaterialIds;
	const float m_Radius{ 5.f };
	const float m_RotationSpeed{ 60.f };
	const float m_Amplitude{ 0.1f };
	const float m_Frequency{ 5.f };
	const float m_Size{ 5.f };
	static int m_Count;

	XMFLOAT3 m_StartPos;
	GameObject* m_pButterflyGo;
	int m_RotationSign;
	int m_MaterialId;
	float m_RotationAngle{};
	float m_OffsetY{};
};