mirror of
https://foundry.openuru.org/gitblit/r/CWE-ou-minkata.git
synced 2025-07-14 10:37:41 -04:00
Fixes to make MaxComponent buildable
This commit is contained in:
@ -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 <WinSock2.h>
|
||||
#endif // MAXPLUGINCODE
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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);
|
||||
|
@ -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 <shlwapi.h>
|
||||
|
||||
// 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 <eax-util.h>
|
||||
#include <eaxlegacy.h>
|
||||
#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
|
||||
{
|
||||
|
@ -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;
|
||||
|
@ -640,7 +640,7 @@ static AvatarCompDlgProc gAvatarCompDlgProc;
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class plCompoundCtrlComponent : plComponent
|
||||
class plCompoundCtrlComponent : public plComponent
|
||||
{
|
||||
public:
|
||||
plCompoundCtrlComponent();
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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<ClassDesc*>::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)
|
||||
|
@ -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 );
|
||||
|
||||
|
@ -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 ) );
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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<Class_ID> 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);
|
||||
|
@ -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; }
|
||||
|
@ -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
|
@ -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);
|
||||
|
Reference in New Issue
Block a user