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

		Star.h

		Copyright (c)1990 - 1999 MetaCreations. All rights reserved.

		Definitions shared by the C++ files and the resource definition files (.r)


		Author:	Jerome Bignon

		Date:	04/30/99

		Revision History

		when		who			what & why
		==========	==========	======================================================
		05/08/99	Jerome		Added a getUVSpaceRDS5 method
		04/30/99	Jerome		Creation

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

#ifndef __Star__
#define __Star__  

#if CP_PRAGMA_ONCE
#pragma once
#endif

#include "BasicPrimitive.h"
#include "StarDef.h"
 
// Define the StarPrimitive CLSID ( see the RStarDef.h file to get R_CLSID_Star value )

extern const MCGUID CLSID_Star;

                 
// 3D Star Data definition
struct StarData
{
	int16	fNbBranches;  // Number of branches of the 3D Star (from 2 to 20)
	real32	fScalingFactor;
};
 

// 3D Star Object definition : 
// Facets Object :

class Star : public TBasicPrimitive
{
public :  

	Star();
     
	STANDARD_RELEASE;

	// IExDataExchanger methods :
	virtual void*		MCCOMAPI GetExtensionDataBuffer();
	virtual int32		MCCOMAPI	GetParamsBufferSize		() const	{ return sizeof(fData);}
  
	// I3DExGeometricPrimitive
	virtual void		MCCOMAPI GetBoundingBox			(TBBox3D& bbox); 					
	virtual MCCOMErr    MCCOMAPI GetNbrLOD(int16 &nbrLod);
	virtual MCCOMErr	MCCOMAPI GetFacetMesh			(uint32 lodIndex, FacetMesh** outMesh);


//	virtual MCCOMErr	MCCOMAPI EnumFacets				(EnumFacetsCallback callback, void* privData, real fidelity);
	virtual uint32		MCCOMAPI GetUVSpaceCount		();
	virtual MCCOMErr	MCCOMAPI GetUVSpace				(uint32 uvSpaceID, UVSpaceInfo* uvSpaceInfo);
	virtual MCCOMErr	MCCOMAPI GetUVSpaceRDS5			(uint32 uvSpaceID, UVSpaceInfoRDS5* uvSpaceInfo);

	// Handle scene magnitude
	virtual boolean		MCCOMAPI IsScalable() const			{ return true; }
	virtual real32		MCCOMAPI GetScalingFactor()	const	{ return fData.fScalingFactor; }
	virtual void		MCCOMAPI SetScalingFactor(real32 inValue) { fData.fScalingFactor = inValue; }

protected :
	StarData   fData;      // 3D Star Data

};

#endif // __FACETS__

