#include "GenerationTemplate.h"


GenerationTemplate::GenerationTemplate(float propability, int minSurfaceDist, int maxSurfaceDist, Framework::Vec3<int> minPosOffset, Framework::Vec3<int> maxSize)
	: ReferenceCounter(),
	propability(propability),
	minSurfaceDist(minSurfaceDist),
	maxSurfaceDist(maxSurfaceDist),
	minPosOffset(minPosOffset),
	maxSize(maxSize)
{}

bool GenerationTemplate::canEffect(Framework::Vec3<int> location, Framework::Vec3<int> affectedLocation) const
{
	Framework::Vec3<int> localPos = affectedLocation - (location + minPosOffset);
	return localPos.x >= 0 && localPos.y >= 0 && localPos.z >= 0 && localPos.x < maxSize.x&& localPos.y < maxSize.y&& localPos.z < maxSize.z;
}

bool GenerationTemplate::isGenerationPossable(Framework::Vec3<int> location, int distToSurface) const
{
	return distToSurface >= minSurfaceDist && distToSurface <= maxSurfaceDist;
}

float GenerationTemplate::getPropability() const
{
	return propability;
}

Framework::Vec3<int> GenerationTemplate::getMinAffectedOffset() const
{
	return minPosOffset;
}

Framework::Vec3<int> GenerationTemplate::getMaxAffectedOffset() const
{
	return minPosOffset + maxSize;
}