text: #pragma once
  
  #include "DXCore.h"
  #include "SimpleShader.h"
  #include <DirectXMath.h>
  #include "Mesh.h"
  #include "Entity.h"
  #include "Camera.h"
  #include "Lights.h"
  #include "Renderer.h"
  #include "Scene.h"
  #include "Menu.h"
  #include "Space.h"
  #include "GameScene.h"
  #include <map>
  #include "DXResource.h"
  
  class Game 
  	: public DXCore
  {
  
  public:
  	Game(HINSTANCE hInstance);
  	~Game();
  
  	// Overridden setup and game loop methods, which
  	// will be called automatically
  	void Init();
  	void OnResize();
  	void Update(float deltaTime, float totalTime);
  	void Draw(float deltaTime, float totalTime);
  
  	// Overridden mouse input helper methods
  	void OnMouseDown (WPARAM buttonState, int x, int y);
  	void OnMouseUp	 (WPARAM buttonState, int x, int y);
  	void OnMouseMove (WPARAM buttonState, int x, int y);
  	void OnMouseWheel(float wheelDelta,   int x, int y);
  private:
  
  	// Initialization helper methods - feel free to customize, combine, etc.
  	void CreateLights();
  
  	std::unique_ptr<Renderer> renderer;
  
  	//Textures
  	ID3D11ShaderResourceView* crateSrv;
  
  	//Rendering Data
  	std::unique_ptr<Camera> camera;
  	DirectionalLight* lights;
  
  
  	// Keeps track of the old mouse position.  Useful for 
  	// determining how far the mouse moved in a single frame.
  	POINT prevMousePos;
  	bool mouseDragging;
  };
  
  