#pragma once

// Following flags describe optional info that can be contained inside an .oxh file
#define OXIO_NONE						0
#define OXIO_ASCII						(1<<0)
#define OXIO_GUIDES						(1<<1)
#define OXIO_HAS_ROOT_TOPO				(1<<2)
#define OXIO_HAS_ROOT_TM				(1<<3)
#define OXIO_HAS_SURF_DEP				(1<<4)
#define OXIO_HAS_GUIDE_DEP				(1<<5)
#define OXIO_HAS_UV_COORDS				(1<<6)

/**
 *  Export root structure
 */
struct OrnaExpRoot
{
	unsigned long startingVertexIndex, npts;	///< index into vertex array: starting position, number of points
};

/**
 *  Export root transform structure
 */
struct OrnaExpRootTM
{
	float tm[4][3];				///< 4x3 transform matrix relative to object space
};

/**
 *  Export surface dependency structure
 */
struct OrnaExpSurfDep
{
	unsigned long face;			///< index into mesh face array: face this root is placed on
	float barycentricCoordinate[3];				///< barycentric coordinates of this root on face
};

/**
 *  Export guide dependency structure
 */
struct OrnaExpGuideDep
{
	int closestRootIndices[3];					///< index into guides (if available): 3 control guides
	float closestRootDistances[3];				// distances to 3 control guides
};

/**
 *  Export channel structure
 */
struct OrnaExpChanInfo
{
	wchar_t name[16];				///< Channel info just contains the name of each channel
};