text: #pragma once
  
  #include <Hazel.h>
  
  namespace Hazel {
  
  	class EditorLayer : public Layer
  	{
  	public:
  		EditorLayer();
  		virtual ~EditorLayer() = default;
  
  		virtual void OnAttach() override;
  		virtual void OnDetach() override;
  
  		void OnUpdate(Timestep ts) override;
  		virtual void OnImGuiRender() override;
  		void OnEvent(Event& e) override;
  	private:
  		OrthographicCameraController m_CameraController;
  
  		// Temp
  		std::shared_ptr<VertexArray> m_SquareVA;
  		std::shared_ptr<Shader> m_FlatColorShader;
  		std::shared_ptr<Framebuffer> m_Framebuffer;
  
  		std::shared_ptr<Scene> m_ActiveScene;
  		Entity m_SquareEntity;
  
  		std::shared_ptr<Texture2D> m_CheckerboardTexture;
  		std::shared_ptr<Texture2D> m_logoTexture;
  
  
  		struct ProfileResult
  		{
  			const char* Name;
  			float Time;
  		};
  
  		std::vector<ProfileResult> m_ProfileResults;
  
  		bool m_ViewportFocused = false, m_ViewportHovered = false;
  		glm::vec2 m_ViewportSize = { 0.0f, 0.0f };
  
  		glm::vec4 m_SquareColor = { 0.2f, 0.3f, 0.8f, 1.0f };
  	}; 
  }
  