1
0
mirror of https://foundry.openuru.org/gitblit/r/CWE-ou-minkata.git synced 2025-07-17 10:52:46 +00:00

Merge default into msvc10

This commit is contained in:
Skoader
2012-05-28 13:11:16 +10:00
29 changed files with 679 additions and 59 deletions

View File

@ -173,8 +173,14 @@ void plNotifyMsg::AddEvent( proEventData* ed )
proVariableEventData *evt = (proVariableEventData *)ed;
switch (evt->fDataType)
{
case proEventData::kNumber:
AddVariableEvent(evt->fName, evt->fNumber);
case proEventData::kFloat:
AddVariableEvent(evt->fName, evt->fNumber.f);
break;
case proEventData::kInt:
AddVariableEvent(evt->fName, evt->fNumber.i);
break;
case proEventData::kNull:
AddVariableEvent(evt->fName);
break;
case proEventData::kKey:
AddVariableEvent(evt->fName, evt->fKey);
@ -587,10 +593,43 @@ void plNotifyMsg::AddVariableEvent( const char* name, hsScalar number )
// create the control key event record
proVariableEventData* pED = TRACKED_NEW proVariableEventData;
pED->fName = hsStrcpy(nil,name);
// pED->fName = (char*)name;
pED->fDataType = proEventData::kNumber;
pED->fNumber = number;
fEvents.Append(pED); // then add it to the list of event records
pED->fDataType = proEventData::kFloat;
pED->fNumber.f = number;
fEvents.Append(pED); // then add it to the list of event records
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : AddVariableEvent
// PARAMETERS : name - name of the variable
// : number - the value of the variable as a number
//
// PURPOSE : Add a variable event record to this notify message
//
void plNotifyMsg::AddVariableEvent( const char* name, Int32 number )
{
// create the control key event record
proVariableEventData* pED = TRACKED_NEW proVariableEventData;
pED->fName = hsStrcpy(nil,name);
pED->fDataType = proEventData::kInt;
pED->fNumber.i = number;
fEvents.Append(pED); // then add it to the list of event records
}
/////////////////////////////////////////////////////////////////////////////
//
// Function : AddVariableEvent
// PARAMETERS : name - name of the variable
//
// PURPOSE : Add a variable event record to this notify message
//
void plNotifyMsg::AddVariableEvent( const char* name)
{
// create the control key event record
proVariableEventData* pED = TRACKED_NEW proVariableEventData;
pED->fName = hsStrcpy(nil,name);
pED->fDataType = proEventData::kNull;
fEvents.Append(pED); // then add it to the list of event records
}
@ -1284,11 +1323,39 @@ void proVariableEventData::IDestruct()
fName = nil;
}
void proVariableEventData::IReadNumber(hsStream * stream) {
switch (fDataType) {
case kFloat:
fNumber.f = stream->ReadSwapScalar();
break;
case kInt:
fNumber.i = stream->ReadSwap32();
break;
default:
stream->ReadSwap32(); //ignore
break;
}
}
void proVariableEventData::IWriteNumber(hsStream * stream) {
switch (fDataType) {
case kFloat:
stream->WriteSwapScalar(fNumber.f);
break;
case kInt:
stream->WriteSwap32(fNumber.i);
break;
default:
stream->WriteSwap32(0);
break;
}
}
void proVariableEventData::IRead(hsStream* stream, hsResMgr* mgr)
{
fName = stream->ReadSafeString();
fDataType = stream->ReadSwap32();
fNumber = stream->ReadSwapScalar();
IReadNumber(stream);
fKey = mgr->ReadKey(stream);
}
@ -1296,7 +1363,7 @@ void proVariableEventData::IWrite(hsStream* stream, hsResMgr* mgr)
{
stream->WriteSafeString(fName);
stream->WriteSwap32(fDataType);
stream->WriteSwapScalar(fNumber);
IWriteNumber(stream);
mgr->WriteKey(stream, fKey);
}
@ -1318,7 +1385,7 @@ void proVariableEventData::IReadVersion(hsStream* s, hsResMgr* mgr)
if (contentFlags.IsBitSet(kProVariableDataType))
fDataType = s->ReadSwap32();
if (contentFlags.IsBitSet(kProVariableNumber))
fNumber = s->ReadSwapScalar();
IReadNumber(s);
if (contentFlags.IsBitSet(kProVariableKey))
fKey = mgr->ReadKey(s);
}
@ -1337,7 +1404,7 @@ void proVariableEventData::IWriteVersion(hsStream* s, hsResMgr* mgr)
// kProVariableDataType
s->WriteSwap32(fDataType);
// kProVariableNumber
s->WriteSwapScalar(fNumber);
IWriteNumber(s);
// kProVariableKey
mgr->WriteKey(s, fKey);
}

View File

@ -87,8 +87,10 @@ public:
enum dataType
{
kNumber=1,
kFloat=1,
kKey,
kInt,
kNull,
kNotta
};
@ -181,7 +183,10 @@ proEventType(Variable)
Int32 fDataType; // type of data
// Can't be a union, sadly, but it isn't that much of a waste of space...
hsScalar fNumber; // if its a number
union {
hsScalar f;
Int32 i;
} fNumber; // if its a number
plKey fKey; // if its a plKey (pointer to something)
@ -193,6 +198,9 @@ protected:
virtual void IReadVersion(hsStream* s, hsResMgr* mgr);
virtual void IWriteVersion(hsStream* s, hsResMgr* mgr);
virtual void IReadNumber(hsStream * stream);
virtual void IWriteNumber(hsStream * stream);
};
proEventType(Facing)
@ -368,6 +376,8 @@ public:
void AddPickEvent( const plKey &other, const plKey& self, hsBool enabled, hsPoint3 hitPoint );
void AddControlKeyEvent( Int32 key, hsBool down );
void AddVariableEvent( const char* name, hsScalar number );
void AddVariableEvent( const char* name, Int32 number );
void AddVariableEvent( const char* name );
void AddVariableEvent( const char *name, const plKey &key);
void AddFacingEvent( const plKey &other, const plKey &self, hsScalar dot, hsBool enabled);
void AddContainerEvent( const plKey &container, const plKey &contained, hsBool entering);