/****************************************************************************************************

		ISelfSampler.h
		Copyright: (c) 2001 Eovia Corp. All rights reserved.

		Author:	pascalc
		Date:	11/15/2005

****************************************************************************************************/

#ifndef __ISelfSampler__
#define __ISelfSampler__

#if CP_PRAGMA_ONCE
#pragma once
#endif

#include "COMTypes.h"

MCDEFINE_GUID_H(IID_ISelfSampler);

struct TSamplePoint;
struct ShadingIn;

struct ISelfSampler : public IMCUnknown
{
	// ****************************************************************************
	//								GetSamplePoint
	// 
	/// returns a new sample point
	/// 
	/// \param outSample  the result
	/// \param s          two random parameters between 0 and 1
	/// \param t          statistically spread on a (0,0) (1,1) square
	/// 
	virtual void MCCOMAPI GetSamplePoint(TSamplePoint& outSample, real s, real t) = 0;

	// ****************************************************************************
	//								GetSampleInfos
	// 
	/// Get the current position, normal and shading infos of a sample point
	/// 
	/// \param place        the sample point
	/// \param shadingInfos return the shading infos
	/// 
	virtual void MCCOMAPI GetSampleInfos(const TSamplePoint& place, ShadingIn& shadingInfos) = 0;
};

#endif
