⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 icezcbbreaker.cpp

📁 使用stl技术,(还没看,是听说的)
💻 CPP
📖 第 1 页 / 共 5 页
字号:
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 *	Contains code to import ZCB files.
 *	\file		IceZCBBreaker.cpp
 *	\author		Pierre Terdiman
 *	\date		April, 4, 2000
 */
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 *	Contains an importer for ZCB files.
 *	- "ZCB" means "Zappy's Custom Binary"
 *	- at first it was only a test format, to check exported MAX data was ok
 *	- then people started to use it as-is !
 *	- so I kept it alive, but you may want to replace it with your own format in the end
 *
 *	\class		ZCBBreaker
 *	\author		Pierre Terdiman
 *	\version	1.0
 *	\date		2000-2002
*/
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Precompiled Header
#include "Stdafx.h"

using namespace IceRenderManager;

// Define this to make IDs unique among 3D objects/materials/textures
#define ZCB_MAKE_UNIQUE_IDS

// Lame implementation of a progress bar.
#define ZCB_PROGRESS_BAR

#define ZCB_CHECKALLOC(x)	{ if(!x) { ZCBImportError("Out of memory.", ZCB_ERROR_OUT_OF_MEMORY); return false;} }
#define ZCB_CHECKVERSION(file_version, current_version, chunk_name)																														\
		{		if(file_version>current_version)	{ ZCBImportError("Obsolete code! Get the latest ZCB reader.", ZCB_ERROR_UNKNOWN_VERSION);	return false;	}	\
		else	if(file_version<current_version)	ZCBImportError(_F("Found obsolete %s chunk. Please resave the file.", chunk_name), ZCB_ERROR_OBSOLETE_FILE);	}

// Ugly but...
static bool gHasPivot = false;
static udword gZCBVersion = 0;

#ifdef ZCB_PROGRESS_BAR
static ProgressBarParams* gParams = null;
static void InitProgressBar()
{
	gParams = new ProgressBarParams;
}

static void ReleaseProgressBar()
{
	DELETESINGLE(gParams);
}
#endif

static bool Cleanup()
{
#ifdef ZCB_PROGRESS_BAR
	gParams->mRequestCode = RQ_DELETE_PROGRESS_BAR;
	GetCallbacksManager()->ExecCallbacks(ICCB_REQUEST, ICCB_REQUEST, gParams);
	ReleaseProgressBar();
#endif
	return false;
}

static void UpdateProgressBar0()
{
#ifdef ZCB_PROGRESS_BAR
	gParams->mRequestCode = RQ_UPDATE_PROGRESS_BAR0;
	GetCallbacksManager()->ExecCallbacks(ICCB_REQUEST, ICCB_REQUEST, gParams);
#endif
}

static void UpdateProgressBar1()
{
#ifdef ZCB_PROGRESS_BAR
	gParams->mRequestCode = RQ_UPDATE_PROGRESS_BAR1;
	GetCallbacksManager()->ExecCallbacks(ICCB_REQUEST, ICCB_REQUEST, gParams);
#endif
}

static void PatchTextureID(sdword& id)
{
#ifdef ZCB_MAKE_UNIQUE_IDS
	if(id!=-1)	id+=0x10000000;
#endif
}

static void PatchMaterialID(sdword& id)
{
#ifdef ZCB_MAKE_UNIQUE_IDS
	if(id!=-1)	id+=0x20000000;
#endif
}

static void PatchControllerID(sdword& id)
{
#ifdef ZCB_MAKE_UNIQUE_IDS
	if(id!=-1)	id+=0x40000000;
#endif
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 *	Constructor.
 */
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ZCBComponents::ZCBComponents()
{
	mNbMeshes		= 0;
	mNbDerived		= 0;
	mNbCameras		= 0;
	mNbLights		= 0;
	mNbShapes		= 0;
	mNbHelpers		= 0;
	mNbControllers	= 0;
	mNbMaterials	= 0;
	mNbTextures		= 0;
	mNbUnknowns		= 0;
	mNbInvalidNodes	= 0;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 *	Destructor.
 */
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ZCBComponents::~ZCBComponents()
{
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 *	Constructor.
 */
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ZCBSceneInfo::ZCBSceneInfo() : mFirstFrame(0), mLastFrame(0), mFrameRate(0), mDeltaTime(0), mGlobalScale(1.0f)
{
	mBackColor		.Zero();
	mAmbientColor	.Zero();
	mGravity.Zero();
	mRestitution		= 0.0f;
	mStaticFriction		= 0.0f;
	mFriction			= 0.0f;
	mGroundPlane		= false;
	mCollisionDetection	= true;
	mTesselation		= INVALID_ID;
	mLightingMode		= INVALID_ID;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 *	Destructor.
 */
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ZCBSceneInfo::~ZCBSceneInfo()
{
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 *	Constructor.
 */
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ZCBBaseInfo::ZCBBaseInfo() : mID(INVALID_ID), mParentID(INVALID_ID), mTargetID(INVALID_ID), mMasterID(INVALID_ID)
{
	mPrs.Reset();
	mWireColor			= 0x7fffffff;
	mLocalPRS			= false;
	mD3DCompliant		= false;
	mGroup				= false;
	mIsHidden			= false;

	mDensity			= 0.0f;
	mMass				= 0.0f;
	mSamplingDensity	= 0;
	mResetPivot			= false;
	mIsCollidable		= true;
	mLockPivot			= false;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 *	Destructor.
 */
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ZCBBaseInfo::~ZCBBaseInfo()
{
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 *	Constructor.
 */
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ZCBCameraInfo::ZCBCameraInfo()
{
	mType			= ZCB_CAMERA_TARGET;
	mOrthoCam		= false;
	mFOV			= 0.0f;
	mFOVType		= ZCB_FOV_HORIZONTAL;
	mNearClip		= 0.0f;
	mFarClip		= 0.0f;
	mTDist			= 0.0f;
	mHLineDisplay	= 0;
	mEnvNearRange	= 0.0f;
	mEnvFarRange	= 0.0f;
	mEnvDisplay		= 0;
	mManualClip		= 0;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 *	Destructor.
 */
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ZCBCameraInfo::~ZCBCameraInfo()
{
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 *	Constructor.
 */
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ZCBLightInfo::ZCBLightInfo()
{
	// ...
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 *	Destructor.
 */
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ZCBLightInfo::~ZCBLightInfo()
{
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 *	Constructor.
 */
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ZCBMaterialInfo::ZCBMaterialInfo()
{
	mID						= INVALID_ID;

	mAmbientMapID			= INVALID_ID;
	mDiffuseMapID			= INVALID_ID;
	mSpecularMapID			= INVALID_ID;
	mShininessMapID			= INVALID_ID;
	mShiningStrengthMapID	= INVALID_ID;
	mSelfIllumMapID			= INVALID_ID;
	mOpacityMapID			= INVALID_ID;
	mFilterMapID			= INVALID_ID;
	mBumpMapID				= INVALID_ID;
	mReflexionMapID			= INVALID_ID;
	mRefractionMapID		= INVALID_ID;
	mDisplacementMapID		= INVALID_ID;
	mDecalMapID				= INVALID_ID;
	mDetailMapID			= INVALID_ID;
	mBillboardMapID			= INVALID_ID;

	mAmbientCoeff			= 1.0f;
	mDiffuseCoeff			= 1.0f;
	mSpecularCoeff			= 1.0f;
	mShininessCoeff			= 1.0f;
	mShiningStrengthCoeff	= 1.0f;
	mSelfIllumCoeff			= 1.0f;
	mOpacityCoeff			= 1.0f;
	mFilterCoeff			= 1.0f;
	mBumpCoeff				= 1.0f;
	mReflexionCoeff			= 1.0f;
	mRefractionCoeff		= 1.0f;
	mDisplacementCoeff		= 1.0f;

	mMtlAmbientColor		.Zero();
	mMtlDiffuseColor		.Zero();
	mMtlSpecularColor		.Zero();
	mMtlFilterColor			.Zero();

	mShading				= ZCB_SHADING_FORCE_DWORD;
	mSoften					= false;
	mFaceMap				= false;
	mTwoSided				= false;
	mWire					= false;
	mWireUnits				= false;
	mFalloffOut				= false;
	mTransparencyType		= ZCB_TRANSPA_FORCE_DWORD;

	mShininess				= 0.0f;
	mShiningStrength		= 0.0f;
	mSelfIllum				= 0.0f;
	mOpacity				= 1.0f;
	mOpaFalloff				= 0.0f;
	mWireSize				= 0.0f;
	mIOR					= 0.0f;

	mBounce					= 0.0f;
	mStaticFriction			= 0.0f;
	mSlidingFriction		= 0.0f;

	mSelfIllumOn			= false;
	mSelfIllumValue			= 0.0f;
	mSelfIllumColor			.Zero();

	mWrapU					= true;
	mMirrorU				= false;
	mWrapV					= true;
	mMirrorV				= false;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 *	Destructor.
 */
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ZCBMaterialInfo::~ZCBMaterialInfo()
{
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 *	Constructor.
 */
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ZCBTextureInfo::ZCBTextureInfo()
{
	mID					= INVALID_ID;
	mWidth				= 0;
	mHeight				= 0;
	mBitmap				= null;
	mHasAlpha			= false;
	mIsBitmapIncluded	= false;

	mWrapU					= true;
	mMirrorU				= false;
	mWrapV					= true;
	mMirrorV				= false;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 *	Destructor.
 */
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -