/*
/ TERRAIN.H
/ *********
/ Core terrain interface class.
/
/ 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 __TERRAIN_H__
#define __TERRAIN_H__

#include "Compile.h"
#include "Types.h"
#include "Node.h"
#include <vector>
#include <fstream>

namespace Brainstem 
{
	class ITerrain : public ISceneNode
	{
	public:

		virtual void GenerateFromFile(unsigned int patches, const char* filename, float scaleFactor) = 0;
		virtual void GenerateRandom(unsigned int patches, int seed, float noiseSize, float persistence, int octaves, float scaleFactor) = 0;

		virtual float GetHeight(float x, float z) = 0;
		virtual Dimension2<int> GetDimensions() = 0;

		virtual void ApplyTexture(ITexture* texture) = 0;
		virtual ITexture* GetTexture() = 0;

		AUTO_OBJECT_SIZE;
		virtual const char* GetName() { return "Terrain"; }
	};
}


#endif