#pragma once class DiffuseAnimatedMaterial; class Bush : public GameObject { public: Bush(const XMFLOAT3& startPos); ~Bush() override = default; Bush(const Bush& other) = delete; Bush(Bush&& other) noexcept = delete; Bush& operator=(const Bush& other) = delete; Bush& operator=(Bush&& other) noexcept = delete; void Explode(); void DrawImGui(); protected: void Initialize(const SceneContext&) override; void Update(const SceneContext&) override; private: static PxMaterial* m_pPxMaterial; float m_ExplosionTime{ 0.5f }; bool m_DidExplode{ false }; DiffuseAnimatedMaterial* m_pAnimatedMaterial; static std::vector m_MaterialIds; static int m_Count; const float m_Amplitude{ 0.1f }; const float m_Frequency{ 2.f }; GameObject* m_pFoliage{ nullptr }; GameObject* m_pShadow{ nullptr }; GameObject* m_pExplosionQuad{ nullptr }; XMFLOAT3 m_StartPos; float m_ScaleDelay{}; float m_OffsetY{}; };