mirror of
https://foundry.openuru.org/gitblit/r/CWE-ou-minkata.git
synced 2025-07-17 10:52:46 +00:00
Convert plUoid's object name to a plString
This commit is contained in:
@ -65,12 +65,12 @@ hsBool hsKeyedObject::SendRef(plRefMsg* refMsg, plRefFlags::Type flags)
|
||||
return hsgResMgr::SendRef(key, refMsg, flags);
|
||||
}
|
||||
|
||||
const char* hsKeyedObject::GetKeyName() const
|
||||
plString hsKeyedObject::GetKeyName() const
|
||||
{
|
||||
if (fpKey)
|
||||
return fpKey->GetName();
|
||||
else
|
||||
return "(unknown)";
|
||||
return _TEMP_CONVERT_FROM_LITERAL("(unknown)");
|
||||
}
|
||||
|
||||
hsKeyedObject::~hsKeyedObject()
|
||||
@ -123,7 +123,7 @@ void hsKeyedObject::UnRegisterAs(plFixedKeyId fixedKey)
|
||||
UnRegisterAsManual(uoid);
|
||||
}
|
||||
|
||||
plKey hsKeyedObject::RegisterAsManual(plUoid& meUoid, const char* p)
|
||||
plKey hsKeyedObject::RegisterAsManual(plUoid& meUoid, const plString& p)
|
||||
{
|
||||
hsAssert(meUoid.GetClassType() == ClassIndex(),"Registering as wrong type!");
|
||||
// Really should be a NewKey() call just for fixed keys, so change this once player rooms behave
|
||||
|
@ -62,7 +62,7 @@ public:
|
||||
GETINTERFACE_ANY(hsKeyedObject, plReceiver);
|
||||
|
||||
const plKey& GetKey() const { return fpKey; }
|
||||
const char* GetKeyName() const;
|
||||
plString GetKeyName() const;
|
||||
|
||||
virtual void Validate();
|
||||
virtual hsBool IsFinal() { return true; }; // experimental; currently "is ready to process Loads"
|
||||
@ -85,7 +85,7 @@ public:
|
||||
void UnRegisterAs(plFixedKeyId fixedKey);
|
||||
|
||||
// used when manually loading the player room
|
||||
plKey RegisterAsManual(plUoid& uoid, const char* p);
|
||||
plKey RegisterAsManual(plUoid& uoid, const plString& p);
|
||||
void UnRegisterAsManual(plUoid& uoid);
|
||||
|
||||
// If you want clone keys to share a type of object, override this function for it.
|
||||
|
@ -64,11 +64,11 @@ struct plKeySeed
|
||||
// NOTE: The following fields are broken out to make adding to the fixed key list easier.
|
||||
// However, what they really are, are just the fields of plUoid (including plLocation)
|
||||
UInt16 fType;
|
||||
const char *fObj;
|
||||
plString fObj;
|
||||
|
||||
hsBool Match( plKeySeed *p )
|
||||
{
|
||||
if( ( fType == p->fType ) && stricmp( p->fObj, fObj ) == 0 )
|
||||
if( ( fType == p->fType ) && p->fObj.Compare( fObj, plString::kCaseInsensitive ) == 0 )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@ -82,48 +82,50 @@ struct plKeySeed
|
||||
// 2) Be sure your ClassIndex CLASS_INDEX(plSceneObject) matches the type of object you want to have the fixedKey
|
||||
// 3) Make sure the Obj is unique for this location/Type Combo... (validated at runtime)
|
||||
|
||||
#define _TCFL _TEMP_CONVERT_FROM_LITERAL
|
||||
plKeySeed SeedList[] = {
|
||||
// Key Enum Type Obj
|
||||
|
||||
{ kFirst_Fixed_KEY, CLASS_INDEX_SCOPED( plSceneObject ), "kFirst_Fixed_KEY" },
|
||||
{ kFirst_Fixed_KEY, CLASS_INDEX_SCOPED( plSceneObject ), _TCFL("kFirst_Fixed_KEY") },
|
||||
|
||||
{ kLOSObject_KEY, CLASS_INDEX_SCOPED( plLOSDispatch ), "kLOSObject_KEY", },
|
||||
{ kTimerCallbackManager_KEY, CLASS_INDEX_SCOPED( plTimerCallbackManager ), "kTimerCallbackManager_KEY", },
|
||||
{ kConsoleObject_KEY, CLASS_INDEX_SCOPED( pfConsole ), "kConsoleObject_KEY", },
|
||||
{ kAudioSystem_KEY, CLASS_INDEX_SCOPED( plAudioSystem ), "kAudioSystem_KEY", },
|
||||
{ kInput_KEY, CLASS_INDEX_SCOPED( plInputManager ), "kInput_KEY", },
|
||||
{ kClient_KEY, CLASS_INDEX_SCOPED( plClient ), "kClient_KEY", },
|
||||
{ kNetClientMgr_KEY, CLASS_INDEX_SCOPED( plNetClientMgr ), "kNetClientMgr_KEY", },
|
||||
{ kListenerMod_KEY, CLASS_INDEX_SCOPED( plListener ), "kListenerMod_KEY", },
|
||||
{ kTransitionMgr_KEY, CLASS_INDEX_SCOPED( plTransitionMgr ), "kTransitionMgr_KEY", },
|
||||
{ kLinkEffectsMgr_KEY, CLASS_INDEX_SCOPED( plLinkEffectsMgr ), "kLinkEffectsMgr_KEY", },
|
||||
{ kGameGUIMgr_KEY, CLASS_INDEX_SCOPED( pfGameGUIMgr ), "kGameGUIMgr_KEY", },
|
||||
{ kGameGUIDynamicDlg_KEY, CLASS_INDEX_SCOPED( plSceneNode ), "kGameGUIDynamicDlg_KEY", },
|
||||
{ kVirtualCamera1_KEY, CLASS_INDEX_SCOPED( plVirtualCam1 ), "kVirtualCamera_KEY", },
|
||||
{ kDefaultCameraMod1_KEY, CLASS_INDEX_SCOPED( plCameraModifier1 ), "kDefaultCameraMod1_KEY", },
|
||||
{ kKIGUIGlue_KEY, CLASS_INDEX_SCOPED( pfKI ), "kKIGUIGlue_KEY", },
|
||||
{ kClothingMgr_KEY, CLASS_INDEX_SCOPED( plClothingMgr ), "kClothingMgr_KEY", },
|
||||
{ kInputInterfaceMgr_KEY, CLASS_INDEX_SCOPED( plInputInterfaceMgr ), "kInputInterfaceMgr_KEY", },
|
||||
{ kAVIWriter_KEY, CLASS_INDEX_SCOPED( plAVIWriter ), "kAVIWriter_KEY", },
|
||||
{ kResManagerHelper_KEY, CLASS_INDEX_SCOPED( plResManagerHelper ), "kResManagerHelper_KEY", },
|
||||
{ kAvatarMgr_KEY, CLASS_INDEX_SCOPED( plAvatarMgr ), "kAvatarMgr_KEY", },
|
||||
{ kSimulationMgr_KEY, CLASS_INDEX_SCOPED( plSimulationMgr ), "kSimulationMgr_KEY", },
|
||||
{ kTransitionCamera_KEY, CLASS_INDEX_SCOPED( plCameraModifier1 ), "kTransitionCamera_KEY", },
|
||||
{ kCCRMgr_KEY, CLASS_INDEX_SCOPED( plCCRMgr ), "kCCRMgr_KEY", },
|
||||
{ kNetClientCloneRoom_KEY, CLASS_INDEX_SCOPED( plSceneNode ), "kNetClientCloneRoom_KEY", },
|
||||
{ kMarkerMgr_KEY, CLASS_INDEX_SCOPED( pfMarkerMgr ), "kMarkerMgr_KEY", },
|
||||
{ kAutoProfile_KEY, CLASS_INDEX_SCOPED( plAutoProfile ), "kAutoProfile_KEY", },
|
||||
{ kGlobalVisMgr_KEY, CLASS_INDEX_SCOPED( plVisMgr ), "kGlobalVisMgr_KEY", },
|
||||
{ kFontCache_KEY, CLASS_INDEX_SCOPED( plFontCache ), "kFontCache_KEY", },
|
||||
{ kRelevanceMgr_KEY, CLASS_INDEX_SCOPED( plRelevanceMgr ), "kRelevanceMgr_KEY", },
|
||||
{ kJournalBookMgr_KEY, CLASS_INDEX_SCOPED( pfJournalBook ), "kJournalBookMgr_KEY" },
|
||||
{ kAgeLoader_KEY, CLASS_INDEX_SCOPED( plAgeLoader), "kAgeLoader_KEY" },
|
||||
{ kBuiltIn3rdPersonCamera_KEY, CLASS_INDEX_SCOPED( plCameraModifier1 ), "kBuiltIn3rdPersonCamera_KEY", },
|
||||
{ kSecurePreloader_KEY, CLASS_INDEX_SCOPED( pfSecurePreloader ), "kSecurePreloader_KEY", },
|
||||
{ kLOSObject_KEY, CLASS_INDEX_SCOPED( plLOSDispatch ), _TCFL("kLOSObject_KEY"), },
|
||||
{ kTimerCallbackManager_KEY, CLASS_INDEX_SCOPED( plTimerCallbackManager ), _TCFL("kTimerCallbackManager_KEY"), },
|
||||
{ kConsoleObject_KEY, CLASS_INDEX_SCOPED( pfConsole ), _TCFL("kConsoleObject_KEY"), },
|
||||
{ kAudioSystem_KEY, CLASS_INDEX_SCOPED( plAudioSystem ), _TCFL("kAudioSystem_KEY"), },
|
||||
{ kInput_KEY, CLASS_INDEX_SCOPED( plInputManager ), _TCFL("kInput_KEY"), },
|
||||
{ kClient_KEY, CLASS_INDEX_SCOPED( plClient ), _TCFL("kClient_KEY"), },
|
||||
{ kNetClientMgr_KEY, CLASS_INDEX_SCOPED( plNetClientMgr ), _TCFL("kNetClientMgr_KEY"), },
|
||||
{ kListenerMod_KEY, CLASS_INDEX_SCOPED( plListener ), _TCFL("kListenerMod_KEY"), },
|
||||
{ kTransitionMgr_KEY, CLASS_INDEX_SCOPED( plTransitionMgr ), _TCFL("kTransitionMgr_KEY"), },
|
||||
{ kLinkEffectsMgr_KEY, CLASS_INDEX_SCOPED( plLinkEffectsMgr ), _TCFL("kLinkEffectsMgr_KEY"), },
|
||||
{ kGameGUIMgr_KEY, CLASS_INDEX_SCOPED( pfGameGUIMgr ), _TCFL("kGameGUIMgr_KEY"), },
|
||||
{ kGameGUIDynamicDlg_KEY, CLASS_INDEX_SCOPED( plSceneNode ), _TCFL("kGameGUIDynamicDlg_KEY"), },
|
||||
{ kVirtualCamera1_KEY, CLASS_INDEX_SCOPED( plVirtualCam1 ), _TCFL("kVirtualCamera_KEY"), },
|
||||
{ kDefaultCameraMod1_KEY, CLASS_INDEX_SCOPED( plCameraModifier1 ), _TCFL("kDefaultCameraMod1_KEY"), },
|
||||
{ kKIGUIGlue_KEY, CLASS_INDEX_SCOPED( pfKI ), _TCFL("kKIGUIGlue_KEY"), },
|
||||
{ kClothingMgr_KEY, CLASS_INDEX_SCOPED( plClothingMgr ), _TCFL("kClothingMgr_KEY"), },
|
||||
{ kInputInterfaceMgr_KEY, CLASS_INDEX_SCOPED( plInputInterfaceMgr ), _TCFL("kInputInterfaceMgr_KEY"), },
|
||||
{ kAVIWriter_KEY, CLASS_INDEX_SCOPED( plAVIWriter ), _TCFL("kAVIWriter_KEY"), },
|
||||
{ kResManagerHelper_KEY, CLASS_INDEX_SCOPED( plResManagerHelper ), _TCFL("kResManagerHelper_KEY"), },
|
||||
{ kAvatarMgr_KEY, CLASS_INDEX_SCOPED( plAvatarMgr ), _TCFL("kAvatarMgr_KEY"), },
|
||||
{ kSimulationMgr_KEY, CLASS_INDEX_SCOPED( plSimulationMgr ), _TCFL("kSimulationMgr_KEY"), },
|
||||
{ kTransitionCamera_KEY, CLASS_INDEX_SCOPED( plCameraModifier1 ), _TCFL("kTransitionCamera_KEY"), },
|
||||
{ kCCRMgr_KEY, CLASS_INDEX_SCOPED( plCCRMgr ), _TCFL("kCCRMgr_KEY"), },
|
||||
{ kNetClientCloneRoom_KEY, CLASS_INDEX_SCOPED( plSceneNode ), _TCFL("kNetClientCloneRoom_KEY"), },
|
||||
{ kMarkerMgr_KEY, CLASS_INDEX_SCOPED( pfMarkerMgr ), _TCFL("kMarkerMgr_KEY"), },
|
||||
{ kAutoProfile_KEY, CLASS_INDEX_SCOPED( plAutoProfile ), _TCFL("kAutoProfile_KEY"), },
|
||||
{ kGlobalVisMgr_KEY, CLASS_INDEX_SCOPED( plVisMgr ), _TCFL("kGlobalVisMgr_KEY"), },
|
||||
{ kFontCache_KEY, CLASS_INDEX_SCOPED( plFontCache ), _TCFL("kFontCache_KEY"), },
|
||||
{ kRelevanceMgr_KEY, CLASS_INDEX_SCOPED( plRelevanceMgr ), _TCFL("kRelevanceMgr_KEY"), },
|
||||
{ kJournalBookMgr_KEY, CLASS_INDEX_SCOPED( pfJournalBook ), _TCFL("kJournalBookMgr_KEY") },
|
||||
{ kAgeLoader_KEY, CLASS_INDEX_SCOPED( plAgeLoader), _TCFL("kAgeLoader_KEY") },
|
||||
{ kBuiltIn3rdPersonCamera_KEY, CLASS_INDEX_SCOPED( plCameraModifier1 ), _TCFL("kBuiltIn3rdPersonCamera_KEY"), },
|
||||
{ kSecurePreloader_KEY, CLASS_INDEX_SCOPED( pfSecurePreloader ), _TCFL("kSecurePreloader_KEY"), },
|
||||
|
||||
|
||||
{ kLast_Fixed_KEY, CLASS_INDEX_SCOPED( plSceneObject ), "kLast_Fixed_KEY", }
|
||||
{ kLast_Fixed_KEY, CLASS_INDEX_SCOPED( plSceneObject ), _TCFL("kLast_Fixed_KEY"), }
|
||||
};
|
||||
#undef _TCFL
|
||||
|
||||
|
||||
//// plFixedKeyValidator /////////////////////////////////////////////////////
|
||||
@ -166,14 +168,13 @@ plUoid::plUoid(plFixedKeyId fixedkey)
|
||||
{
|
||||
hsAssert(fixedkey < kLast_Fixed_KEY, "Request for Fixed key is out of Range");
|
||||
|
||||
fObjectName = nil;
|
||||
Invalidate();
|
||||
|
||||
plKeySeed* p= &SeedList[fixedkey];
|
||||
|
||||
fLocation = plLocation::kGlobalFixedLoc;
|
||||
fClassType = p->fType;
|
||||
fObjectName = hsStrcpy(p->fObj);
|
||||
fObjectName = p->fObj;
|
||||
fObjectID = 0;
|
||||
fCloneID = 0;
|
||||
fClonePlayerID = 0;
|
||||
|
@ -55,6 +55,7 @@ class hsBitVector;
|
||||
|
||||
class plKeyData;
|
||||
class plKeyImp;
|
||||
class plString;
|
||||
|
||||
class plKey
|
||||
{
|
||||
@ -96,7 +97,7 @@ class plKeyData
|
||||
{
|
||||
public:
|
||||
virtual const plUoid& GetUoid() const=0;
|
||||
virtual const char* GetName() const=0;
|
||||
virtual const plString& GetName() const=0;
|
||||
|
||||
virtual hsKeyedObject* GetObjectPtr()=0;
|
||||
virtual hsKeyedObject* ObjectIsLoaded() const=0;
|
||||
|
@ -55,8 +55,8 @@ plProfile_CreateMemCounter("Keys", "Memory", KeyMem);
|
||||
static UInt32 CalcKeySize(plKeyImp* key)
|
||||
{
|
||||
UInt32 nameLen = 0;
|
||||
if (key->GetUoid().GetObjectName())
|
||||
nameLen = strlen(key->GetUoid().GetObjectName()) + 1;
|
||||
if (!key->GetUoid().GetObjectName().IsNull())
|
||||
nameLen = key->GetUoid().GetObjectName().GetSize() + 1;
|
||||
return sizeof(plKeyImp) + nameLen;
|
||||
}
|
||||
|
||||
@ -143,7 +143,7 @@ void plKeyImp::SetUoid(const plUoid& uoid)
|
||||
#endif
|
||||
}
|
||||
|
||||
const char* plKeyImp::GetName() const
|
||||
const plString& plKeyImp::GetName() const
|
||||
{
|
||||
return fUoid.GetObjectName();
|
||||
}
|
||||
|
@ -59,7 +59,7 @@ public:
|
||||
virtual ~plKeyImp();
|
||||
|
||||
virtual const plUoid& GetUoid() const { return fUoid; }
|
||||
virtual const char* GetName() const;
|
||||
virtual const plString& GetName() const;
|
||||
|
||||
virtual hsKeyedObject* GetObjectPtr();
|
||||
virtual hsKeyedObject* ObjectIsLoaded() const;
|
||||
|
@ -167,7 +167,7 @@ hsBool plMsgForwarder::IForwardCallbackMsg(plMessage *msg)
|
||||
if (--fc->fNumCallbacks == 0)
|
||||
{
|
||||
hsStatusMessageF("plEventCallbackMsg received, erasing, sender=%s, remoteMsg=%d\n",
|
||||
msg->GetSender() ? msg->GetSender()->GetName() : "nil", msg->HasBCastFlag(plMessage::kNetNonLocal));
|
||||
msg->GetSender() ? msg->GetSender()->GetName().c_str() : "nil", msg->HasBCastFlag(plMessage::kNetNonLocal));
|
||||
|
||||
fCallbacks.erase(eventMsg);
|
||||
|
||||
@ -190,7 +190,7 @@ hsBool plMsgForwarder::IForwardCallbackMsg(plMessage *msg)
|
||||
else
|
||||
{
|
||||
hsStatusMessageF("! Unknown plEventCallbackMsg received, sender=%s, remoteMsg=%d\n",
|
||||
msg->GetSender() ? msg->GetSender()->GetName() : "nil", msg->HasBCastFlag(plMessage::kNetNonLocal));
|
||||
msg->GetSender() ? msg->GetSender()->GetName().c_str() : "nil", msg->HasBCastFlag(plMessage::kNetNonLocal));
|
||||
hsAssert(0, "Unknown plEventCallbackMsg received");
|
||||
}
|
||||
return true;
|
||||
|
@ -135,21 +135,19 @@ plLocation plLocation::MakeNormal(UInt32 number)
|
||||
|
||||
//// plUoid //////////////////////////////////////////////////////////////////
|
||||
|
||||
plUoid::plUoid(const plLocation& location, UInt16 classType, const char* objectName, const plLoadMask& m)
|
||||
plUoid::plUoid(const plLocation& location, UInt16 classType, const plString& objectName, const plLoadMask& m)
|
||||
{
|
||||
fObjectName = nil;
|
||||
Invalidate();
|
||||
|
||||
fLocation = location;
|
||||
fClassType = classType;
|
||||
fObjectName = hsStrcpy(objectName);
|
||||
fObjectName = objectName;
|
||||
fLoadMask = m;
|
||||
fClonePlayerID = 0;
|
||||
}
|
||||
|
||||
plUoid::plUoid(const plUoid& src)
|
||||
{
|
||||
fObjectName = nil;
|
||||
Invalidate();
|
||||
*this = src;
|
||||
}
|
||||
@ -177,7 +175,7 @@ void plUoid::Read(hsStream* s)
|
||||
s->LogReadLE(&fClassType, "ClassType");
|
||||
s->LogReadLE(&fObjectID, "ObjectID");
|
||||
s->LogSubStreamPushDesc("ObjectName");
|
||||
fObjectName = s->LogReadSafeString();
|
||||
fObjectName = s->LogReadSafeString_TEMP();
|
||||
|
||||
// conditional cloneIDs read
|
||||
if (contents & kHasCloneIDs)
|
||||
@ -210,7 +208,7 @@ void plUoid::Write(hsStream* s) const
|
||||
|
||||
s->WriteLE( fClassType );
|
||||
s->WriteLE( fObjectID );
|
||||
s->WriteSafeString( fObjectName );
|
||||
s->WriteSafeString_TEMP( fObjectName );
|
||||
|
||||
// conditional cloneIDs write
|
||||
if (contents & kHasCloneIDs)
|
||||
@ -228,9 +226,7 @@ void plUoid::Invalidate()
|
||||
fCloneID = 0;
|
||||
fClonePlayerID = 0;
|
||||
fClassType = 0;
|
||||
if (fObjectName)
|
||||
delete [] fObjectName;
|
||||
fObjectName = nil;
|
||||
fObjectName = plString::Null;
|
||||
fLocation.Invalidate();
|
||||
fLoadMask = plLoadMask::kAlways;
|
||||
|
||||
@ -238,7 +234,7 @@ void plUoid::Invalidate()
|
||||
|
||||
hsBool plUoid::IsValid() const
|
||||
{
|
||||
if (!fLocation.IsValid() || fObjectName == nil)
|
||||
if (!fLocation.IsValid() || fObjectName.IsNull())
|
||||
return false;
|
||||
|
||||
return true;
|
||||
@ -249,7 +245,7 @@ hsBool plUoid::operator==(const plUoid& u) const
|
||||
return fLocation == u.fLocation
|
||||
&& fLoadMask == u.fLoadMask
|
||||
&& fClassType == u.fClassType
|
||||
&& hsStrEQ(fObjectName, u.fObjectName)
|
||||
&& fObjectName == u.fObjectName
|
||||
&& fObjectID == u.fObjectID
|
||||
&& fCloneID == u.fCloneID
|
||||
&& fClonePlayerID == u.fClonePlayerID;
|
||||
@ -261,9 +257,7 @@ plUoid& plUoid::operator=(const plUoid& rhs)
|
||||
fCloneID = rhs.fCloneID;
|
||||
fClonePlayerID = rhs.fClonePlayerID;
|
||||
fClassType = rhs.fClassType;
|
||||
if (fObjectName)
|
||||
delete [] fObjectName;
|
||||
fObjectName = hsStrcpy(rhs.fObjectName);
|
||||
fObjectName = rhs.fObjectName;
|
||||
fLocation = rhs.fLocation;
|
||||
fLoadMask = rhs.fLoadMask;
|
||||
|
||||
@ -276,7 +270,7 @@ plString plUoid::StringIze() const // Format to displayable string
|
||||
return plString::Format("(0x%x:0x%x:%s:C:[%u,%u])",
|
||||
fLocation.GetSequenceNumber(),
|
||||
int(fLocation.GetFlags()),
|
||||
fObjectName,
|
||||
fObjectName.c_str(),
|
||||
GetClonePlayerID(),
|
||||
GetCloneID());
|
||||
}
|
||||
|
@ -57,9 +57,9 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
#include "hsTypes.h"
|
||||
#include "plFixedKey.h"
|
||||
#include "plLoadMask.h"
|
||||
#include "plString.h"
|
||||
|
||||
class hsStream;
|
||||
class plString;
|
||||
|
||||
//// plLocation //////////////////////////////////////////////////////////////
|
||||
|
||||
@ -144,15 +144,15 @@ public:
|
||||
class plUoid
|
||||
{
|
||||
public:
|
||||
plUoid() { fObjectName = nil; Invalidate(); }
|
||||
plUoid(const plLocation& location, UInt16 classType, const char* objectName, const plLoadMask& m=plLoadMask::kAlways);
|
||||
plUoid() { Invalidate(); }
|
||||
plUoid(const plLocation& location, UInt16 classType, const plString& objectName, const plLoadMask& m=plLoadMask::kAlways);
|
||||
plUoid(plFixedKeyId fixedKey);
|
||||
plUoid(const plUoid& src);
|
||||
~plUoid();
|
||||
|
||||
const plLocation& GetLocation() const { return fLocation; }
|
||||
UInt16 GetClassType() const { return fClassType; }
|
||||
const char* GetObjectName() const { return fObjectName; }
|
||||
const plString& GetObjectName() const { return fObjectName; }
|
||||
const plLoadMask& GetLoadMask() const { return fLoadMask; }
|
||||
|
||||
void Read(hsStream* s);
|
||||
@ -188,7 +188,7 @@ protected:
|
||||
UInt32 fClonePlayerID; // The ID of the player who made this clone
|
||||
UInt16 fCloneID; // The ID of this clone (unique per client)
|
||||
UInt16 fClassType;
|
||||
char* fObjectName;
|
||||
plString fObjectName;
|
||||
plLocation fLocation;
|
||||
plLoadMask fLoadMask;
|
||||
};
|
||||
|
Reference in New Issue
Block a user