#pragma once
#include "DirectXFramework.h"
#include "SharedMethods.h"
#include "GamePadController.h"
#include "TexturedCubeNode.h"
#include "MeshNode.h"
#include "SplitMeshNode.h"
#include "ControlledMeshNode.h"
#include "ControlledSplitMeshNode.h"
#include "HeightMapTerrainNode.h"
#include "PerlinTerrainNode.h"
#include "FractalTerrainNode.h"
#include "SkyNode.h"
#include <ctime>
#include <set>

class Graphics2 : public DirectXFramework
{
public:
	void CreateSceneGraph();
	void UpdateSceneGraph();

private:
	bool _initDone = false;

	bool _boosting = false;
	float _boostMultiplier = 1;
	float _boostMin = 1;
	float _boostStep = 0.5f;
	float _boostMax = 5.0f;

	float _flySpeed;
	float _turnSpeed;
	int _invertPitch;

	float _currentRotation = 0.0f;
	float _currentSideRotation = 0.0f;
	float _currentPropRotation = 0.0f;

	GamePadController _currentController;

	// Changed from a vector to a set because sets only allow for unique values and thats all i want
	set<ControlInputs> _currentInputs;

	shared_ptr<ObjectNode> _currentPlayerObject;

	void GetCurrentControlInputs();
	void ResetCurrentControlInputs();
	void GenerateClutter();
};

