
// Actually just a dummy, used by the compiler to build the precompiled header.

#include "AssimpPCH.h"
#include "./../include/aiVersion.h"

// --------------------------------------------------------------------------------
// Legal information string - dont't remove from image!
static const char* LEGAL_INFORMATION =

"Open Asset Import Library (Assimp).\n"
"A free C/C++ library to import various 3D file formats into applications\n\n"

"(c) 2008-2010, ASSIMP Development Team\n"
"License under the terms and conditions of the 3-clause BSD license\n"
"http://assimp.sourceforge.net\n"
;

// ------------------------------------------------------------------------------------------------
// Get legal string
ASSIMP_API const char*  aiGetLegalString  ()	{
	return LEGAL_INFORMATION;
}

// ------------------------------------------------------------------------------------------------
// Get Assimp minor version
ASSIMP_API unsigned int aiGetVersionMinor ()	{
	return 0;
}

// ------------------------------------------------------------------------------------------------
// Get Assimp major version
ASSIMP_API unsigned int aiGetVersionMajor ()	{
	return 2;
}

// ------------------------------------------------------------------------------------------------
// Get flags used for compilation
ASSIMP_API unsigned int aiGetCompileFlags ()	{

	unsigned int flags = 0;

#ifdef ASSIMP_BUILD_BOOST_WORKAROUND
	flags |= ASSIMP_CFLAGS_NOBOOST;
#endif
#ifdef ASSIMP_BUILD_SINGLETHREADED
	flags |= ASSIMP_CFLAGS_SINGLETHREADED;
#endif
#ifdef ASSIMP_BUILD_DEBUG
	flags |= ASSIMP_CFLAGS_DEBUG;
#endif
#ifdef ASSIMP_BUILD_DLL_EXPORT
	flags |= ASSIMP_CFLAGS_SHARED;
#endif
#ifdef _STLPORT_VERSION
	flags |= ASSIMP_CFLAGS_STLPORT;
#endif

	return flags;
}

// include current build revision, which is even updated from time to time -- :-)
#include "../revision.h"

// ------------------------------------------------------------------------------------------------
ASSIMP_API unsigned int aiGetVersionRevision ()
{
	return SVNRevision;
}

// ------------------------------------------------------------------------------------------------
aiScene::aiScene()
	: mFlags()
	, mRootNode()
	, mNumMeshes()
	, mMeshes()
	, mNumMaterials()
	, mMaterials()
	, mNumAnimations()
	, mAnimations()
	, mNumTextures()
	, mTextures()
	, mNumLights()
	, mLights()
	, mNumCameras()
	, mCameras()
	, mPrivate(new Assimp::ScenePrivateData())
	{
	}

// ------------------------------------------------------------------------------------------------
aiScene::~aiScene()
{
	// delete all sub-objects recursively
	delete mRootNode;

	// To make sure we won't crash if the data is invalid it's
	// much better to check whether both mNumXXX and mXXX are
	// valid instead of relying on just one of them.
	if (mNumMeshes && mMeshes) 
		for( unsigned int a = 0; a < mNumMeshes; a++)
			delete mMeshes[a];
	delete [] mMeshes;

	if (mNumMaterials && mMaterials) 
		for( unsigned int a = 0; a < mNumMaterials; a++)
			delete mMaterials[a];
	delete [] mMaterials;

	if (mNumAnimations && mAnimations) 
		for( unsigned int a = 0; a < mNumAnimations; a++)
			delete mAnimations[a];
	delete [] mAnimations;

	if (mNumTextures && mTextures) 
		for( unsigned int a = 0; a < mNumTextures; a++)
			delete mTextures[a];
	delete [] mTextures;

	if (mNumLights && mLights) 
		for( unsigned int a = 0; a < mNumLights; a++)
			delete mLights[a];
	delete [] mLights;

	if (mNumCameras && mCameras) 
		for( unsigned int a = 0; a < mNumCameras; a++)
			delete mCameras[a];
	delete [] mCameras;

	delete static_cast<Assimp::ScenePrivateData*>( mPrivate );
}

