/*
/ BSTMSKY.H
/ *********
/ Handles the creation of a skydome that will
/ (eventually) support atmospheric scattering and
/ day/night cycles. This implementation is in its 
/ early stages and doesn't do much yet other than
/ create the dome mesh.
/
/ Will Beddow 2010 - http://343gs.com/brainstem
/
/ This software is currently under development
/ and is subject to change and improvement. Some
/ aspects of the system are incomplete and/or 
/ unstable due to ongoing implementation.
/
*/

#ifndef __BSTMSKY_H__
#define __BSTMSKY_H__

#include "Compile.h"
#include "Types.h"
#include "Sky.h"
#include "Camera.h"

#include "BstmDevice.h"

namespace Brainstem
{
	class Sky : public ISky
	{
	public:
		Sky(IDirect3DDevice9* device, ID3DXEffect* effect);
		~Sky();

		bool Init();
		void Update();
		void Render(ICamera* camera);
		void Release();

		void ApplyTexture(ITexture* texture);
		ITexture* GetTexture();

		BoundingVolume GetBounds() { return Bounds; }

		void SetTechnique(const char* technique) { Technique = technique; }
		const char* GetTechnique() { return Technique; };

		AUTO_OBJECT_SIZE;
		virtual const char* GetName() { return "SkyDome"; }
	private:
		IDirect3DDevice9* Device;
		ID3DXEffect* Effect;
		const char* Technique;

		LPD3DXMESH Mesh;

		BoundingVolume Bounds;
	};
}

#endif