diff --git a/Sources/Plasma/CoreLib/hsWindows.h b/Sources/Plasma/CoreLib/hsWindows.h index 4ac6cb82..86f616c6 100644 --- a/Sources/Plasma/CoreLib/hsWindows.h +++ b/Sources/Plasma/CoreLib/hsWindows.h @@ -28,10 +28,6 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com #if HS_BUILD_FOR_WIN32 #ifndef __AFX_H__ // MFC apps won't let us include windows from here. =( -#ifndef _WIN32_WINNT -#define _WIN32_WINNT 0x0400 -#endif // _WIN32_WINNT - #ifndef MAXPLUGINCODE #include #endif // MAXPLUGINCODE diff --git a/Sources/Tools/MaxComponent/plAnimComponent.cpp b/Sources/Tools/MaxComponent/plAnimComponent.cpp index c2b01843..b664f2d3 100644 --- a/Sources/Tools/MaxComponent/plAnimComponent.cpp +++ b/Sources/Tools/MaxComponent/plAnimComponent.cpp @@ -47,7 +47,6 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com #include "plAvatar/plScalarChannel.h" #include "MaxMain/plMaxNode.h" #include "MaxConvert/hsControlConverter.h" -#include "MaxPlasmaMtls/Materials/plPassMtlBase.h" #include "pnKeyedObject/plUoid.h" #include "plMaxAnimUtils.h" @@ -140,35 +139,6 @@ plAnimObjInterface *plAnimComponentBase::GetAnimInterface( INode *inode ) return nil; } -//This enum is necessary and can only be appended. -//This is used in the ParamBlock2Desc. -enum -{ - kAnimRadio_DEAD, - kAnimAutoStart, // Start the Animation on load (V2) - kAnimLoop, // Start Looping at Begin Location - kAnimBegin_DEAD, - kAnimEnd_DEAD, - kAnimLoopSegCkBx_DEAD, - kAnimLoopSegBeg_DEAD, - kAnimLoopSegEnd_DEAD, - kAnimName, // Name of the notetrack animation to play - kAnimLoopSegBegBox_DEAD, - kAnimLoopSegEndBox_DEAD, - kAnimUseGlobal, - kAnimGlobalName, - kAnimLoopName, // Name of the notetrack specified loop - kAnimEaseInType, - kAnimEaseOutType, - kAnimEaseInLength, - kAnimEaseOutLength, - kAnimEaseInMin, - kAnimEaseInMax, - kAnimEaseOutMin, - kAnimEaseOutMax, - kAnimPhysAnim, -}; - void plAnimComponentProc::EnableGlobal(HWND hWnd, hsBool enable) { ComboBox_Enable(GetDlgItem(hWnd, IDC_ANIM_GLOBAL_LIST), enable); @@ -178,7 +148,7 @@ void plAnimComponentProc::EnableGlobal(HWND hWnd, hsBool enable) Button_Enable(GetDlgItem(hWnd, IDC_COMP_ANIM_LOOP_CKBX), !enable); } -void plAnimComponentProc::FillAgeGlobalComboBox(HWND box, char *varName) +void plAnimComponentProc::FillAgeGlobalComboBox(HWND box, const char *varName) { plStateDescriptor *sd = plSDLMgr::GetInstance()->FindDescriptor(plPageInfoComponent::GetCurrExportAgeName(), plSDL::kLatestVersion); if (sd) @@ -199,7 +169,7 @@ void plAnimComponentProc::FillAgeGlobalComboBox(HWND box, char *varName) ComboBox_AddString(box, "(none)"); } -void plAnimComponentProc::SetBoxToAgeGlobal(HWND box, char *varName) +void plAnimComponentProc::SetBoxToAgeGlobal(HWND box, const char *varName) { char buff[512]; if (!varName || !strcmp(varName, "")) @@ -412,9 +382,6 @@ public: } }; */ -static plEaseAccessor gAnimCompEaseAccessor(plComponentBase::kBlkComp, - kAnimEaseInMin, kAnimEaseInMax, kAnimEaseInLength, - kAnimEaseOutMin, kAnimEaseOutMax, kAnimEaseOutLength); CLASS_DESC(plAnimComponent, gAnimDesc, "Animation", "Animation", COMP_TYPE_MISC, ANIM_COMP_CID) CLASS_DESC(plAnimGroupedComponent, gAnimGroupedDesc, "Animation Grouped", "AnimGrouped", COMP_TYPE_MISC, ANIM_GROUP_COMP_CID) @@ -734,14 +701,14 @@ hsBool plAnimComponentBase::PreConvert(plMaxNode *node, plErrorMsg *pErrMsg) // we've added all keys during convert. Some cleanup might // be necessary in this case. - char *animName = fCompPB->GetStr(kAnimName); + const char *animName = fCompPB->GetStr(kAnimName); if (animName == nil || !strcmp(animName, "")) animName = ENTIRE_ANIMATION_NAME; if (fCompPB->GetInt(ParamID(kAnimUseGlobal))) { plAgeGlobalAnim *ageAnim = TRACKED_NEW plAgeGlobalAnim(animName, 0, 0); - ageAnim->SetGlobalVarName(fCompPB->GetStr(ParamID(kAnimGlobalName))); + ageAnim->SetGlobalVarName((char*)fCompPB->GetStr(ParamID(kAnimGlobalName))); fAnims[node] = ageAnim; } @@ -765,7 +732,7 @@ hsBool plAnimComponentBase::PreConvert(plMaxNode *node, plErrorMsg *pErrMsg) if (fCompPB->GetInt(kAnimLoop)) { ATCAnim->SetLoop(true); - char *loopName = fCompPB->GetStr(kAnimLoopName); + const char *loopName = fCompPB->GetStr(kAnimLoopName); hsScalar loopStart = info.GetLoopStart(loopName); hsScalar loopEnd = info.GetLoopEnd(loopName); @@ -926,7 +893,7 @@ hsBool plAnimComponentBase::Convert(plMaxNode *node, plErrorMsg *pErrMsg) if (fCompPB->GetInt(ParamID(kAnimUseGlobal))) { - ((plAgeGlobalAnim *)fAnims[node])->SetGlobalVarName(fCompPB->GetStr(ParamID(kAnimGlobalName))); + ((plAgeGlobalAnim *)fAnims[node])->SetGlobalVarName((char*)fCompPB->GetStr(ParamID(kAnimGlobalName))); } else // It's an ATCAnim { diff --git a/Sources/Tools/MaxComponent/plAnimComponent.h b/Sources/Tools/MaxComponent/plAnimComponent.h index 5416eeba..18376d6d 100644 --- a/Sources/Tools/MaxComponent/plAnimComponent.h +++ b/Sources/Tools/MaxComponent/plAnimComponent.h @@ -33,11 +33,45 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com #include "hsTemplates.h" #include "plAnimObjInterface.h" #include "plNoteTrackDlgComp.h" +#include "MaxPlasmaMtls/Materials/plPassMtlBase.h" #define ANIM_COMP_CID Class_ID(0x32e77ab, 0x28a80383) #define ANIM_GROUP_COMP_CID Class_ID(0x341a57fc, 0x4cda6c64) #define ANIM_COMPRESS_COMP_CID Class_ID(0x116d3175, 0x4e465807) +//This enum is necessary and can only be appended. +//This is used in the ParamBlock2Desc. +enum +{ + kAnimRadio_DEAD, + kAnimAutoStart, // Start the Animation on load (V2) + kAnimLoop, // Start Looping at Begin Location + kAnimBegin_DEAD, + kAnimEnd_DEAD, + kAnimLoopSegCkBx_DEAD, + kAnimLoopSegBeg_DEAD, + kAnimLoopSegEnd_DEAD, + kAnimName, // Name of the notetrack animation to play + kAnimLoopSegBegBox_DEAD, + kAnimLoopSegEndBox_DEAD, + kAnimUseGlobal, + kAnimGlobalName, + kAnimLoopName, // Name of the notetrack specified loop + kAnimEaseInType, + kAnimEaseOutType, + kAnimEaseInLength, + kAnimEaseOutLength, + kAnimEaseInMin, + kAnimEaseInMax, + kAnimEaseOutMin, + kAnimEaseOutMax, + kAnimPhysAnim, +}; + +static plEaseAccessor gAnimCompEaseAccessor(plComponentBase::kBlkComp, + kAnimEaseInMin, kAnimEaseInMax, kAnimEaseInLength, + kAnimEaseOutMin, kAnimEaseOutMax, kAnimEaseOutLength); + class plComponentBase; class plMaxNode; class plSimpleTMModifier; @@ -163,8 +197,8 @@ protected: void EnableGlobal(HWND hWnd, hsBool enable); public: - static void FillAgeGlobalComboBox(HWND box, char *varName); - static void SetBoxToAgeGlobal(HWND box, char *varName); + static void FillAgeGlobalComboBox(HWND box, const char *varName); + static void SetBoxToAgeGlobal(HWND box, const char *varName); virtual BOOL DlgProc(TimeValue t, IParamMap2 *map, HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); virtual void Update(TimeValue t, Interval &valid, IParamMap2 *map); diff --git a/Sources/Tools/MaxComponent/plAudioComponents.cpp b/Sources/Tools/MaxComponent/plAudioComponents.cpp index e28d888a..6a5415c7 100644 --- a/Sources/Tools/MaxComponent/plAudioComponents.cpp +++ b/Sources/Tools/MaxComponent/plAudioComponents.cpp @@ -66,7 +66,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com // Sound Related #include "plPhysical/plEnvEffectDetector.h" #include "pnMessage/plEnvEffectMsg.h" -#include "PubUtilLib/plAudible/plWinAudible.h" +#include "plAudible/plWinAudible.h" #include "pnSceneObject/plAudioInterface.h" // Anim Related @@ -80,7 +80,9 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com #include "plFile/plFileUtils.h" // Valdez Asset Manager Related +#ifdef MAXASS_AVAILABLE #include "../../AssetMan/PublicInterface/MaxAssInterface.h" +#endif #include // Fun soft volume stuff @@ -93,8 +95,10 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com // EAX stuff #include "plAudio/plEAXListenerMod.h" +#ifdef EAX_SDK_AVAILABLE #include #include +#endif #include "plResMgr/plLocalization.h" #include "plPhysical/plPhysicalSndGroup.h" @@ -242,8 +246,10 @@ RefTargetHandle plBaseSoundEmitterComponent::Clone( RemapDir &remap ) // Do the base clone plBaseSoundEmitterComponent *obj = (plBaseSoundEmitterComponent *)plComponentBase::Clone( remap ); +#ifdef MAXASS_AVAILABLE obj->fSoundAssetId = fSoundAssetId; obj->fCoverSoundAssetID = fCoverSoundAssetID; +#endif return obj; } @@ -285,6 +291,7 @@ IOResult plBaseSoundEmitterComponent::Save(ISave *isave) if (res != IO_OK) return res; +#ifdef MAXASS_AVAILABLE isave->BeginChunk(MAX_ASS_CHUNK); ULONG nwrite; @@ -299,6 +306,7 @@ IOResult plBaseSoundEmitterComponent::Save(ISave *isave) return res; isave->EndChunk(); +#endif return IO_OK; } @@ -309,6 +317,7 @@ IOResult plBaseSoundEmitterComponent::Load(ILoad *iload) if (res != IO_OK) return res; +#ifdef MAXASS_AVAILABLE while (IO_OK == (res = iload->OpenChunk())) { if (iload->CurChunkID() == OLD_MAX_ASS_CHUNK) @@ -332,10 +341,12 @@ IOResult plBaseSoundEmitterComponent::Load(ILoad *iload) if (res != IO_OK) return res; } +#endif return IO_OK; } +#ifdef MAXASS_AVAILABLE void plBaseSoundEmitterComponent::SetSoundAssetId( plBaseSoundEmitterComponent::WhichSound which, jvUniqueId assetId, const TCHAR *fileName ) { if( which == kBaseSound ) @@ -362,9 +373,11 @@ jvUniqueId plBaseSoundEmitterComponent::GetSoundAssetID( plBaseSoundEmitterCompo hsAssert( false, "Getting a sound that isn't supported on this component" ); return fSoundAssetId; } +#endif void plBaseSoundEmitterComponent::IUpdateAssets( void ) { +#ifdef MAXASS_AVAILABLE if( fAssetsUpdated ) return; @@ -386,9 +399,10 @@ void plBaseSoundEmitterComponent::IUpdateAssets( void ) } else fAssetsUpdated = true; +#endif } -TCHAR *plBaseSoundEmitterComponent::GetSoundFileName( plBaseSoundEmitterComponent::WhichSound which ) +const char* plBaseSoundEmitterComponent::GetSoundFileName( plBaseSoundEmitterComponent::WhichSound which ) { IUpdateAssets(); @@ -671,6 +685,7 @@ plSoundBuffer *plBaseSoundEmitterComponent::IGetSourceBuffer( const char *file // copied over to the AssetMan directory, returning the path to said asset. // Returns true if found, false if not. +#ifdef MAXASS_AVAILABLE hsBool plBaseSoundEmitterComponent::LookupLatestAsset( const char *waveName, char *retPath, plErrorMsg *errMsg ) { MaxAssInterface* assetMan = GetMaxAssInterface(); @@ -698,10 +713,11 @@ hsBool plBaseSoundEmitterComponent::LookupLatestAsset( const char *waveName, ch return false; } +#endif plSoundBuffer *plBaseSoundEmitterComponent::IProcessSourceBuffer( plMaxNode *maxNode, plErrorMsg *errMsg ) { - char *fileName = GetSoundFileName( kBaseSound ); + const char *fileName = GetSoundFileName( kBaseSound ); if( fileName == nil ) return nil; @@ -999,34 +1015,35 @@ protected: void IGetNewLocalFileName( plBaseSoundEmitterComponent *soundComponent, plBaseSoundEmitterComponent::WhichSound which ) { - TCHAR fileName[ MAX_PATH ], dirName[ MAX_PATH ], *name; + char* fileName[ MAX_PATH ], dirName[ MAX_PATH ]; + const char* name = soundComponent->GetSoundFileName( which ); - - name = soundComponent->GetSoundFileName( which ); if( name != nil ) - strcpy( fileName, name ); + strcpy( (char*)fileName, name ); else - strcpy( fileName, _T( "" ) ); + strcpy( (char*)fileName, _T( "" ) ); - strcpy( dirName, fileName ); + strcpy( dirName, (const char*)fileName ); ::PathRemoveFileSpec( dirName ); OPENFILENAME ofn = {0}; ofn.lStructSize = sizeof( OPENFILENAME ); ofn.hwndOwner = GetCOREInterface()->GetMAXHWnd(); ofn.lpstrFilter = "WAV Files (*.wav)\0*.wav\0Windows Media Audio Files (*.wma)\0*.wma\0OGG Vorbis Files (*.ogg)\0*.ogg\0"; - ofn.lpstrFile = fileName; + ofn.lpstrFile = (LPSTR)fileName; ofn.nMaxFile = sizeof( fileName ); ofn.lpstrInitialDir = dirName; ofn.lpstrTitle = "Choose a sound file"; ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_PATHMUSTEXIST; ofn.lpstrDefExt = "wav"; +#ifdef MAXASS_AVAILABLE if( GetOpenFileName( &ofn ) ) { jvUniqueId emptyId; soundComponent->SetSoundAssetId( which, emptyId, fileName ); } +#endif } void IUpdateSoundButton( plBaseSoundEmitterComponent *soundComponent, HWND hDlg, int dlgBtnItemToSet, plBaseSoundEmitterComponent::WhichSound which ) @@ -1038,7 +1055,7 @@ protected: custButton = GetICustButton( GetDlgItem( hDlg, dlgBtnItemToSet ) ); if( custButton != nil ) { - TCHAR *origName = soundComponent->GetSoundFileName( which ); + const char* origName = soundComponent->GetSoundFileName( which ); if( origName != nil && strlen( origName ) > 0 ) { @@ -1057,6 +1074,7 @@ protected: void ISelectSoundFile( plBaseSoundEmitterComponent *soundComponent, HWND hDlg, int dlgBtnItemToSet, plBaseSoundEmitterComponent::WhichSound which ) { +#ifdef MAXASS_AVAILABLE MaxAssInterface* maxAssInterface = GetMaxAssInterface(); // if we have the assetman plug-in, then try to use it, unless shift is held down @@ -1075,6 +1093,9 @@ protected: { IGetNewLocalFileName( soundComponent, which ); } +#else + IGetNewLocalFileName( soundComponent, which ); +#endif // Update the button now if( hDlg != nil ) @@ -2135,7 +2156,7 @@ hsBool plSound3DEmitterComponent::Convert(plMaxNode *node, plErrorMsg *pErrMsg) if( fCreateGrouped ) return true; - char* fileName = GetSoundFileName( kBaseSound ); + const char* fileName = GetSoundFileName( kBaseSound ); int fIndex = -1; if (fIndices.find(node) != fIndices.end()) @@ -2219,7 +2240,7 @@ hsBool plSound3DEmitterComponent::ConvertGrouped( plMaxNode *baseNode, hsTArray } // Grab the buffer for this sound directly from the original source - char *fileName = groupArray[ i ]->GetSoundFileName( kBaseSound ); + const char *fileName = groupArray[ i ]->GetSoundFileName( kBaseSound ); plSoundBuffer *buffer = TRACKED_NEW plSoundBuffer( fileName ); if( !buffer->IsValid() || !buffer->EnsureInternal() ) @@ -2230,11 +2251,11 @@ hsBool plSound3DEmitterComponent::ConvertGrouped( plMaxNode *baseNode, hsTArray bool worked = false; if( plasmaDir != nil ) { - char newPath[ MAX_PATH ], *c; + char newPath[ MAX_PATH ]; strcpy( newPath, plasmaDir ); strcat( newPath, "sfx\\" ); - c = strrchr( fileName, '\\' ); + const char* c = strrchr( fileName, '\\' ); if( c == nil ) c = strrchr( fileName, '/' ); if( c == nil ) @@ -2459,7 +2480,7 @@ hsBool plBackgroundMusicComponent::Convert(plMaxNode *node, plErrorMsg *pErrMsg) if (!fValidNodes[node]) return false; - char* fileName = GetSoundFileName( kBaseSound ); + const char* fileName = GetSoundFileName( kBaseSound ); int fIndex = -1; if (fIndices.find(node) != fIndices.end()) @@ -2614,7 +2635,7 @@ hsBool plGUISoundComponent::Convert(plMaxNode *node, plErrorMsg *pErrMsg) if (!fValidNodes[node]) return false; - char* fileName = GetSoundFileName( kBaseSound ); + const char* fileName = GetSoundFileName( kBaseSound ); int fIndex = -1; if (fIndices.find(node) != fIndices.end()) @@ -2790,9 +2811,11 @@ public: HWND comboBox = GetDlgItem( hWnd, IDC_EAX_PRESET_COMBO ); ComboBox_ResetContent( comboBox ); +#ifdef EAX_SDK_AVAILABLE for( i = 0; i < /*sizeof( EAX30_ORIGINAL_PRESETS ) / sizeof( EAXLISTENERPROPERTIES )*/26 ; i++ ) ComboBox_AddString( comboBox, EAX30_ORIGINAL_PRESET_NAMES[ i ] ); +#endif ComboBox_SetCurSel( comboBox, pb->GetInt( (ParamID)plEAXListenerComponent::kRefPreset ) ); @@ -2927,6 +2950,7 @@ hsBool plEAXListenerComponent::Convert(plMaxNode *node, plErrorMsg *errMsg) // Add the soft region hsgResMgr::ResMgr()->AddViaNotify( softKey, TRACKED_NEW plGenRefMsg( listener->GetKey(), plRefMsg::kOnCreate, 0, plEAXListenerMod::kRefSoftRegion ), plRefFlags::kActiveRef ); +#ifdef EAX_SDK_AVAILABLE // Set up the parameters of the listener mod EAXLISTENERPROPERTIES *listenerProps = listener->GetListenerProps(); if( fCompPB->GetInt( (ParamID)kRefWhichSettings ) == 0 ) @@ -2961,6 +2985,7 @@ hsBool plEAXListenerComponent::Convert(plMaxNode *node, plErrorMsg *errMsg) listenerProps->flRoomRolloffFactor = fCompPB->GetFloat( (ParamID)kRefRoomRolloffFactor ); listenerProps->ulFlags = fCompPB->GetInt( (ParamID)kRefFlags ); } +#endif return true; } @@ -3132,7 +3157,7 @@ enum kRandomSoundGroup, }; -static const kMaxGroups = 10; +static const int kMaxGroups = 10; class plRandomSoundComponentProc : public ParamMap2UserDlgProc { diff --git a/Sources/Tools/MaxComponent/plAudioComponents.h b/Sources/Tools/MaxComponent/plAudioComponents.h index 29cc4b93..dc1ab731 100644 --- a/Sources/Tools/MaxComponent/plAudioComponents.h +++ b/Sources/Tools/MaxComponent/plAudioComponents.h @@ -31,7 +31,9 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com #define SOUND_PHYS_COMP_ID Class_ID(0x29415900, 0x1ade37a5) #include "pnKeyedObject/plKey.h" +#ifdef MAXASS_AVAILABLE #include "../../AssetMan/PublicInterface/AssManBaseTypes.h" +#endif #include "hsTemplates.h" class plComponentBase; @@ -67,9 +69,11 @@ class plBaseSoundEmitterComponent : public plComponent kCoverSound }; +#ifdef MAXASS_AVAILABLE virtual void SetSoundAssetId( WhichSound which, jvUniqueId assetId, const TCHAR *fileName ); virtual jvUniqueId GetSoundAssetID( WhichSound which ); - virtual TCHAR *GetSoundFileName( WhichSound which ); +#endif + virtual const char* GetSoundFileName( WhichSound which ); // Internal setup and write-only set properties on the MaxNode. No reading // of properties on the MaxNode, as it's still indeterminant. @@ -111,8 +115,10 @@ class plBaseSoundEmitterComponent : public plComponent virtual hsScalar GetSoundVolume( void ) const; protected: +#ifdef MAXASS_AVAILABLE jvUniqueId fSoundAssetId; // used for the AssMan jvUniqueId fCoverSoundAssetID; +#endif hsBool fAssetsUpdated; friend class plAudioBaseComponentProc; diff --git a/Sources/Tools/MaxComponent/plAvatarComponent.cpp b/Sources/Tools/MaxComponent/plAvatarComponent.cpp index 8a9e2efa..17411dd7 100644 --- a/Sources/Tools/MaxComponent/plAvatarComponent.cpp +++ b/Sources/Tools/MaxComponent/plAvatarComponent.cpp @@ -640,7 +640,7 @@ static AvatarCompDlgProc gAvatarCompDlgProc; /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// -class plCompoundCtrlComponent : plComponent +class plCompoundCtrlComponent : public plComponent { public: plCompoundCtrlComponent(); diff --git a/Sources/Tools/MaxComponent/plCAnimParamBlock.cpp b/Sources/Tools/MaxComponent/plCAnimParamBlock.cpp index c63738a0..8ea3ebdb 100644 --- a/Sources/Tools/MaxComponent/plCAnimParamBlock.cpp +++ b/Sources/Tools/MaxComponent/plCAnimParamBlock.cpp @@ -43,7 +43,6 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com #include "plCAnimParamBlock.h" #include "plInterp/plAnimEaseTypes.h" -#include "MaxPlasmaMtls/Materials/plPassMtlBase.h" #include "plAnimComponent.h" #include "resource.h" diff --git a/Sources/Tools/MaxComponent/plComponentBase.cpp b/Sources/Tools/MaxComponent/plComponentBase.cpp index 381531fb..40c9c3b1 100644 --- a/Sources/Tools/MaxComponent/plComponentBase.cpp +++ b/Sources/Tools/MaxComponent/plComponentBase.cpp @@ -300,14 +300,18 @@ plMaxNodeBase *plComponentBase::GetINode() { // Go through the reflist looking for RefMakers with a ref to this component. // There should only be one INode in this list. - RefList &refList = GetRefList(); - RefListItem *item = refList.FirstItem(); - while (item) + DependentIterator di(this); + ReferenceMaker* rm = di.Next(); + while (rm != nil) { - if (item->maker->SuperClassID() == BASENODE_CLASS_ID) - return (plMaxNodeBase*)item->maker; + for (int i = 0; i < rm->NumRefs(); i++) + { + RefTargetHandle h = rm->GetReference(i); + if (h->SuperClassID() == BASENODE_CLASS_ID) + return (plMaxNodeBase*)h; + } - item = item->next; + rm = di.Next(); } return nil; diff --git a/Sources/Tools/MaxComponent/plComponentMgr.cpp b/Sources/Tools/MaxComponent/plComponentMgr.cpp index bfb46aa5..65708ee9 100644 --- a/Sources/Tools/MaxComponent/plComponentMgr.cpp +++ b/Sources/Tools/MaxComponent/plComponentMgr.cpp @@ -88,16 +88,16 @@ int IDescCompare(ClassDesc *desc1, ClassDesc *desc2); void plComponentMgr::Register(ClassDesc *desc) { // Organize desc's by category and name - for (unsigned int i = 0; i < fDescs.size(); i++) + + std::vector::iterator it; + for (it = fDescs.begin(); it != fDescs.end(); it++) { - if (IDescCompare(desc, fDescs[i]) < 0) + if (IDescCompare(desc, (*it)) < 0) { - fDescs.insert(&fDescs[i], desc); + fDescs.insert(it, desc); return; } } - - fDescs.push_back(desc); } int IDescCompare(ClassDesc *desc1, ClassDesc *desc2) diff --git a/Sources/Tools/MaxComponent/plGUIComponents.cpp b/Sources/Tools/MaxComponent/plGUIComponents.cpp index 51f913bc..e2df524b 100644 --- a/Sources/Tools/MaxComponent/plGUIComponents.cpp +++ b/Sources/Tools/MaxComponent/plGUIComponents.cpp @@ -1189,14 +1189,14 @@ hsBool plGUIDialogComponent::SetupProperties(plMaxNode *node, plErrorMsg *pErrM /// Either way, we mangle our own location component. None of this user-defined-location stuff. - char *dialogName = fCompPB->GetStr( kRefDialogName ); + const char *dialogName = fCompPB->GetStr( kRefDialogName ); if( dialogName == nil || *dialogName == 0 ) { pErrMsg->Set(true, "GUI Dialog Component Error", "No dialog name specified on GUI Dialog component (object: %s)", node->GetName()).Show(); return false; } - char *ageName = fCompPB->GetStr(kRefAgeName); + const char *ageName = fCompPB->GetStr(kRefAgeName); Int32 seqNum = plPageInfoUtils::GetSeqNumFromAgeDesc( ageName, dialogName ); Int32 newNum = plPluginResManager::ResMgr()->VerifySeqNumber( seqNum, ageName, dialogName ); if( newNum != seqNum ) @@ -1425,7 +1425,7 @@ void plGUIDialogProc::ILoadPages( HWND hWnd, IParamBlock2 *pb ) return; plAgePage *page; - char *selPageName = pb->GetStr( plGUIDialogComponent::kRefDialogName ); + const char *selPageName = pb->GetStr( plGUIDialogComponent::kRefDialogName ); aged->SeekFirstPage(); ComboBox_ResetContent( hWnd ); diff --git a/Sources/Tools/MaxComponent/plMiscComponents.cpp b/Sources/Tools/MaxComponent/plMiscComponents.cpp index 6317a8b6..a9289fd6 100644 --- a/Sources/Tools/MaxComponent/plMiscComponents.cpp +++ b/Sources/Tools/MaxComponent/plMiscComponents.cpp @@ -28,7 +28,9 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com #include "resource.h" #include "plMiscComponents.h" #include "plComponentReg.h" +#ifdef MAXASS_AVAILABLE #include "../../AssetMan/PublicInterface/MaxAssInterface.h" +#endif #include "MaxMain/plPlasmaRefMsgs.h" #include "MaxMain/plMaxNodeData.h" @@ -368,8 +370,8 @@ hsBool plPageInfoComponent::SetupProperties(plMaxNode *pNode, plErrorMsg *pErrMs if (pNode->GetRoomKey()) return false; - char *age = fCompPB->GetStr(kInfoAge); - char *room = fCompPB->GetStr(kInfoPage); + const char *age = fCompPB->GetStr(kInfoAge); + const char *room = fCompPB->GetStr(kInfoPage); if (!age || *age == '\0' || !room || *room == '\0') { @@ -539,7 +541,7 @@ hsBool plPageInfoComponent::DeInit(plMaxNode *node, plErrorMsg *pErrMsg) return true; } -char *plPageInfoComponent::GetAgeName() +const char *plPageInfoComponent::GetAgeName() { return fCompPB->GetStr(ParamID(kInfoAge)); } @@ -550,6 +552,7 @@ char *plPageInfoComponent::GetAgeName() void plPageInfoComponent::IVerifyLatestAgeAsset( const char *ageName, const char *localPath, plErrorMsg *errMsg ) { +#ifdef MAXASS_AVAILABLE char ageFileName[ MAX_PATH ], assetPath[ MAX_PATH ]; @@ -579,6 +582,7 @@ void plPageInfoComponent::IVerifyLatestAgeAsset( const char *ageName, const c { // Not found, so just assume it's a local one (no error) } +#endif } //// IUpdateSeqNumbersFromAgeFile //////////////////////////////////////////// @@ -812,7 +816,7 @@ const char* LocCompGetPage(plComponentBase* comp) return nil; } -static char *CheckPageInfoCompsRecur(plMaxNode *node) +static const char *CheckPageInfoCompsRecur(plMaxNode *node) { plComponentBase *comp = node->ConvertToComponent(); if (comp && comp->ClassID() == PAGEINFO_CID) @@ -823,7 +827,7 @@ static char *CheckPageInfoCompsRecur(plMaxNode *node) for (int i = 0; i < node->NumberOfChildren(); i++) { - char *result = CheckPageInfoCompsRecur((plMaxNode*)node->GetChildNode(i)); + const char *result = CheckPageInfoCompsRecur((plMaxNode*)node->GetChildNode(i)); if (result) return result; } @@ -834,7 +838,7 @@ void plPageInfoComponent::NotifyProc(void *param, NotifyInfo *info) { if (info->intcode == NOTIFY_FILE_POST_OPEN) { - char *ageName = CheckPageInfoCompsRecur((plMaxNode*)GetCOREInterface()->GetRootNode()); + const char *ageName = CheckPageInfoCompsRecur((plMaxNode*)GetCOREInterface()->GetRootNode()); if (ageName != nil) strncpy( fCurrExportedAge, ageName, sizeof( fCurrExportedAge ) ); } diff --git a/Sources/Tools/MaxComponent/plMiscComponents.h b/Sources/Tools/MaxComponent/plMiscComponents.h index 7683fc9d..840d8a17 100644 --- a/Sources/Tools/MaxComponent/plMiscComponents.h +++ b/Sources/Tools/MaxComponent/plMiscComponents.h @@ -71,7 +71,7 @@ public: virtual hsBool SetupProperties(plMaxNode *pNode, plErrorMsg *pErrMsg); virtual hsBool Convert(plMaxNode *node, plErrorMsg *pErrMsg); virtual hsBool DeInit(plMaxNode *node, plErrorMsg *pErrMsg); - char *GetAgeName(); + const char *GetAgeName(); hsBool GetItinerant() {return fItinerant; } enum diff --git a/Sources/Tools/MaxComponent/plResponderAnim.cpp b/Sources/Tools/MaxComponent/plResponderAnim.cpp index 1908bf3e..319ae996 100644 --- a/Sources/Tools/MaxComponent/plResponderAnim.cpp +++ b/Sources/Tools/MaxComponent/plResponderAnim.cpp @@ -52,12 +52,12 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com enum { - kAnimComp, - kAnimLoop, - kAnimType, - kAnimOwner, - kAnimObject, - kAnimObjectType, + kRespAnimComp, + kRespAnimLoop, + kRespAnimType, + kRespAnimOwner, + kRespAnimObject, + kRespAnimObjectType, }; class plResponderAnimProc; @@ -69,19 +69,19 @@ ParamBlockDesc2 gResponderAnimBlock IDD_COMP_RESPOND_ANIM, IDS_COMP_CMD_PARAMS, 0, 0, &gResponderAnimProc, - kAnimComp, _T("comp"), TYPE_REFTARG, 0, 0, + kRespAnimComp, _T("comp"), TYPE_REFTARG, 0, 0, end, - kAnimObject, _T("object"), TYPE_REFTARG, 0, 0, + kRespAnimObject, _T("object"), TYPE_REFTARG, 0, 0, end, - kAnimLoop, _T("loop"), TYPE_STRING, 0, 0, + kRespAnimLoop, _T("loop"), TYPE_STRING, 0, 0, end, - kAnimType, _T("type"), TYPE_INT, 0, 0, + kRespAnimType, _T("type"), TYPE_INT, 0, 0, end, - kAnimObjectType, _T("objType"), TYPE_INT, 0, 0, + kRespAnimObjectType, _T("objType"), TYPE_INT, 0, 0, end, end @@ -270,8 +270,8 @@ const char *plResponderCmdAnim::GetInstanceName(IParamBlock2 *pb) { static char name[256]; - const char *shortName = GetShortName(pb->GetInt(kAnimType)); - plMaxNode *node = (plMaxNode*)pb->GetReferenceTarget(kAnimComp); + const char *shortName = GetShortName(pb->GetInt(kRespAnimType)); + plMaxNode *node = (plMaxNode*)pb->GetReferenceTarget(kRespAnimComp); sprintf(name, "%s (%s)", shortName, node ? node->GetName() : "none"); return name; @@ -297,14 +297,14 @@ IParamBlock2 *plResponderCmdAnim::CreatePB(int idx) // Create the paramblock and save it's type IParamBlock2 *pb = CreateParameterBlock2(&gResponderAnimBlock, nil); - pb->SetValue(kAnimType, 0, type); + pb->SetValue(kRespAnimType, 0, type); return pb; } plComponentBase *plResponderCmdAnim::GetComponent(IParamBlock2 *pb) { - plMaxNode *node = (plMaxNode*)pb->GetReferenceTarget(kAnimComp); + plMaxNode *node = (plMaxNode*)pb->GetReferenceTarget(kRespAnimComp); if (node) return node->ConvertToComponent(); else @@ -313,7 +313,7 @@ plComponentBase *plResponderCmdAnim::GetComponent(IParamBlock2 *pb) plMessage *plResponderCmdAnim::CreateMsg(plMaxNode* node, plErrorMsg *pErrMsg, IParamBlock2 *pb) { - if (IsSoundMsg(pb->GetInt(kAnimType))) + if (IsSoundMsg(pb->GetInt(kRespAnimType))) return ICreateSndMsg(node, pErrMsg, pb); else return ICreateAnimMsg(node, pErrMsg, pb); @@ -321,7 +321,7 @@ plMessage *plResponderCmdAnim::CreateMsg(plMaxNode* node, plErrorMsg *pErrMsg, I bool GetCompAndNode(IParamBlock2* pb, plMaxNode* node, plComponentBase*& comp, plMaxNode*& targNode) { - plMaxNode *compNode = (plMaxNode*)pb->GetReferenceTarget(kAnimComp); + plMaxNode *compNode = (plMaxNode*)pb->GetReferenceTarget(kRespAnimComp); if (!compNode) return false; @@ -331,10 +331,10 @@ bool GetCompAndNode(IParamBlock2* pb, plMaxNode* node, plComponentBase*& comp, p if (comp->ClassID() == ANIM_GROUP_COMP_CID) return true; - if (pb->GetInt(kAnimObjectType) == kNodeResponder) + if (pb->GetInt(kRespAnimObjectType) == kNodeResponder) targNode = node; else - targNode = (plMaxNode*)pb->GetReferenceTarget(kAnimObject); + targNode = (plMaxNode*)pb->GetReferenceTarget(kRespAnimObject); if (!targNode) return false; @@ -364,7 +364,7 @@ plMessage *plResponderCmdAnim::ICreateAnimMsg(plMaxNode* node, plErrorMsg *pErrM msg->SetAnimName(tempAnimName); // Create and initialize a message for the command - switch (pb->GetInt(kAnimType)) + switch (pb->GetInt(kRespAnimType)) { case kRespondPlayAnim: msg->SetCmd(plAnimCmdMsg::kContinue); @@ -417,7 +417,7 @@ plMessage* plResponderCmdAnim::ICreateSndMsg(plMaxNode* node, plErrorMsg *pErrMs if (!GetCompAndNode(pb, node, comp, targNode)) throw "A valid sound component and node were not found"; - int type = pb->GetInt(kAnimType); + int type = pb->GetInt(kRespAnimType); switch (type) { case kRespondPlaySound: @@ -487,7 +487,7 @@ plMessage* plResponderCmdAnim::ICreateSndMsg(plMaxNode* node, plErrorMsg *pErrMs bool plResponderCmdAnim::IsWaitable(IParamBlock2 *pb) { - int type = pb->GetInt(kAnimType); + int type = pb->GetInt(kRespAnimType); if (type == kRespondPlayAnim || type == kRespondToggleAnim || type == kRespondStopAnim || @@ -501,7 +501,7 @@ bool plResponderCmdAnim::IsWaitable(IParamBlock2 *pb) void plResponderCmdAnim::GetWaitPoints(IParamBlock2 *pb, WaitPoints& waitPoints) { - int type = pb->GetInt(kAnimType); + int type = pb->GetInt(kRespAnimType); // Don't try and get points for the stop anim, it can only stop at a stop point if (type == kRespondStopAnim || IsSoundMsg(type)) @@ -579,9 +579,9 @@ static plResponderAnimProc gResponderAnimProc; plResponderAnimProc::plResponderAnimProc() { fCompButtonID = IDC_ANIM_BUTTON; - fCompParamID = kAnimComp; + fCompParamID = kRespAnimComp; fNodeButtonID = IDC_OBJ_BUTTON; - fNodeParamID = kAnimObject; + fNodeParamID = kRespAnimObject; } BOOL plResponderAnimProc::DlgProc(TimeValue t, IParamMap2 *pm, HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) @@ -592,7 +592,7 @@ BOOL plResponderAnimProc::DlgProc(TimeValue t, IParamMap2 *pm, HWND hWnd, UINT m { IParamBlock2 *pb = pm->GetParamBlock(); - int type = pb->GetInt(kAnimType); + int type = pb->GetInt(kRespAnimType); // Only show the loop control if this is a loop command int show = (type == kRespondLoopAnimOn) ? SW_SHOW : SW_HIDE; @@ -647,7 +647,7 @@ void plResponderAnimProc::IPickComponent(IParamBlock2* pb) { std::vector cids; - int type = pb->GetInt(kAnimType); + int type = pb->GetInt(kRespAnimType); if (type == kRespondPlaySound || type == kRespondStopSound || type == kRespondToggleSound || @@ -670,7 +670,7 @@ void plResponderAnimProc::IPickComponent(IParamBlock2* pb) cids.push_back(ANIM_GROUP_COMP_CID); } - plPick::NodeRefKludge(pb, kAnimComp, &cids, true, false); + plPick::NodeRefKludge(pb, kRespAnimComp, &cids, true, false); } #include "plPickNodeBase.h" @@ -711,7 +711,7 @@ public: void plResponderAnimProc::IPickNode(IParamBlock2* pb, plComponentBase* comp) { - plPickRespNode pick(pb, kAnimObject, kAnimObjectType, comp); + plPickRespNode pick(pb, kRespAnimObject, kRespAnimObjectType, comp); pick.DoPick(); } @@ -720,7 +720,7 @@ void plResponderAnimProc::IPickNode(IParamBlock2* pb, plComponentBase* comp) void plResponderAnimProc::ILoadUser(HWND hWnd, IParamBlock2 *pb) { // Premptive strike. If this isn't a loop, don't bother! - int type = pb->GetInt(kAnimType); + int type = pb->GetInt(kRespAnimType); if (type != kRespondLoopAnimOn) return; @@ -764,7 +764,7 @@ void plResponderAnimProc::ILoadUser(HWND hWnd, IParamBlock2 *pb) void plResponderAnimProc::IUpdateNodeButton(HWND hWnd, IParamBlock2* pb) { - if (pb->GetInt(kAnimObjectType) == kNodeResponder) + if (pb->GetInt(kRespAnimObjectType) == kNodeResponder) { HWND hButton = GetDlgItem(hWnd, IDC_OBJ_BUTTON); SetWindowText(hButton, kResponderNodeName); diff --git a/Sources/Tools/MaxComponent/plResponderComponent.cpp b/Sources/Tools/MaxComponent/plResponderComponent.cpp index 2c2e3b8e..c476db80 100644 --- a/Sources/Tools/MaxComponent/plResponderComponent.cpp +++ b/Sources/Tools/MaxComponent/plResponderComponent.cpp @@ -949,13 +949,16 @@ public: return oldTarg; } - void PatchPointer(RefTargetHandle* patchThis, RefTargetHandle oldTarg) { hsAssert(0, "shit"); } RefTargetHandle FindMapping(RefTargetHandle from) { hsAssert(0, "shit"); return NULL; } + void PatchPointer(RefTargetHandle* patchThis, RefTargetHandle oldTarg) { hsAssert(0, "shit"); } + void AddPostPatchProc(PostPatchProc* proc, bool toDelete) { hsAssert(0, "shit"); } void AddEntry(RefTargetHandle hfrom, RefTargetHandle hto) { hsAssert(0, "shit"); } void Backpatch() { hsAssert(0, "shit"); } + bool BackpatchPending() { hsAssert(0, "shit"); return false; } void Clear() { hsAssert(0, "shit"); } + void ClearBackpatch() { hsAssert(0, "shit"); } void DeleteThis() { hsAssert(0, "shit"); } - void AddPostPatchProc(PostPatchProc* proc, bool toDelete) { hsAssert(0, "shit"); } + }; // Even turdier - I had to define this to compile RefTargetHandle RemapDir::CloneRef(RefTargetHandle oldTarg) { return NULL; } diff --git a/Sources/Tools/MaxComponent/resource.h b/Sources/Tools/MaxComponent/resource.h index ba5c6e8b..f6f51f82 100644 --- a/Sources/Tools/MaxComponent/resource.h +++ b/Sources/Tools/MaxComponent/resource.h @@ -1891,8 +1891,3 @@ #define _APS_NEXT_SYMED_VALUE 101 #endif #endif - -// Hack -- don't ask. -#if(WINVER < 0x0500) -#define IDC_HAND IDC_CROSS -#endif \ No newline at end of file diff --git a/Sources/Tools/MaxPlasmaLights/plRealTimeLightBase.h b/Sources/Tools/MaxPlasmaLights/plRealTimeLightBase.h index 2ef2a5d7..3746327c 100644 --- a/Sources/Tools/MaxPlasmaLights/plRealTimeLightBase.h +++ b/Sources/Tools/MaxPlasmaLights/plRealTimeLightBase.h @@ -328,7 +328,7 @@ public: // plug-in mouse creation callback CreateMouseCallBack* GetCreateMouseCallBack(); - RefTargetHandle Clone(RemapDir &remap = NoRemap()){ plRTLightBase* thisObj = TRACKED_NEW plRTLightBase(); BaseClone(this, thisObj, remap); return thisObj;} + RefTargetHandle Clone(RemapDir &remap = DefaultRemapDir()){ plRTLightBase* thisObj = TRACKED_NEW plRTLightBase(); BaseClone(this, thisObj, remap); return thisObj;} virtual void BeginEditParams(IObjParam *ip, ULONG flags, Animatable *prev); virtual void EndEditParams(IObjParam *ip, ULONG flags, Animatable *next);