📄 icezcbbreaker.cpp
字号:
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
* 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 + -