mirror of
https://foundry.openuru.org/gitblit/r/CWE-ou-minkata.git
synced 2025-07-14 10:37:41 -04:00
Differentiate between float and int types in plNotify
This commit is contained in:
@ -1358,12 +1358,19 @@ hsBool plPythonFileMod::MsgReceive(plMessage* msg)
|
||||
// depending on the data type create the data
|
||||
switch ( eventData->fDataType )
|
||||
{
|
||||
case proEventData::kNumber:
|
||||
PyList_SetItem(event, 3, PyFloat_FromDouble(eventData->fNumber));
|
||||
case proEventData::kFloat:
|
||||
PyList_SetItem(event, 3, PyFloat_FromDouble(eventData->fNumber.f));
|
||||
break;
|
||||
case proEventData::kKey:
|
||||
PyList_SetItem(event, 3, pyKey::New(eventData->fKey));
|
||||
break;
|
||||
case proEventData::kInt:
|
||||
PyList_SetItem(event, 3, PyInt_FromLong(eventData->fNumber.i));
|
||||
break;
|
||||
default:
|
||||
Py_XINCREF(Py_None);
|
||||
PyList_SetItem(event, 3, Py_None);
|
||||
break;
|
||||
}
|
||||
// add this event record to the main event list (lists within a list)
|
||||
PyList_Append(levents, event);
|
||||
|
@ -148,7 +148,17 @@ void pyNotify::AddControlKeyEvent( int32_t key, hsBool down )
|
||||
|
||||
void pyNotify::AddVarNumber(const char* name, float number)
|
||||
{
|
||||
fBuildMsg.AddVariableEvent(name,number);
|
||||
fBuildMsg.AddVariableEvent(name, number);
|
||||
}
|
||||
|
||||
void pyNotify::AddVarNumber(const char* name, int number)
|
||||
{
|
||||
fBuildMsg.AddVariableEvent(name, number);
|
||||
}
|
||||
|
||||
void pyNotify::AddVarNull(const char* name)
|
||||
{
|
||||
fBuildMsg.AddVariableEvent(name);
|
||||
}
|
||||
|
||||
void pyNotify::AddVarKey(const char* name, pyKey* key)
|
||||
|
@ -100,6 +100,8 @@ public:
|
||||
virtual void AddPickEvent(hsBool enabled, pyKey* other, pyKey* self, pyPoint3 hitPoint);
|
||||
virtual void AddControlKeyEvent( int32_t key, hsBool down );
|
||||
virtual void AddVarNumber(const char* name, float number);
|
||||
virtual void AddVarNumber(const char* name, int number);
|
||||
virtual void AddVarNull(const char* name);
|
||||
virtual void AddVarKey(const char* name, pyKey* key);
|
||||
virtual void AddFacingEvent( hsBool enabled, pyKey* other, pyKey* self, float dot);
|
||||
virtual void AddContainerEvent( hsBool entering, pyKey* container, pyKey* contained);
|
||||
|
@ -194,18 +194,71 @@ PYTHON_METHOD_DEFINITION(ptNotify, addControlKeyEvent, args)
|
||||
}
|
||||
|
||||
PYTHON_METHOD_DEFINITION(ptNotify, addVarNumber, args)
|
||||
{
|
||||
char* name;
|
||||
PyObject* number = NULL;
|
||||
if (!PyArg_ParseTuple(args, "s|O", &name, &number))
|
||||
{
|
||||
PyErr_SetString(PyExc_TypeError, "addVarNumber expects a string and optional number");
|
||||
PYTHON_RETURN_ERROR;
|
||||
}
|
||||
|
||||
if (number == NULL || number == Py_None)
|
||||
self->fThis->AddVarNull(name);
|
||||
else if (PyInt_Check(number))
|
||||
self->fThis->AddVarNumber(name, PyInt_AsLong(number));
|
||||
else if (PyNumber_Check(number))
|
||||
{
|
||||
PyObject* f = PyNumber_Float(number);
|
||||
self->fThis->AddVarNumber(name, (float)PyFloat_AsDouble(f));
|
||||
Py_DECREF(f);
|
||||
}
|
||||
else
|
||||
{
|
||||
PyErr_SetString(PyExc_TypeError, "addVarNumber expects a string and a number");
|
||||
PYTHON_RETURN_ERROR;
|
||||
}
|
||||
PYTHON_RETURN_NONE;
|
||||
}
|
||||
|
||||
PYTHON_METHOD_DEFINITION(ptNotify, addVarFloat, args)
|
||||
{
|
||||
char* name;
|
||||
float number;
|
||||
if (!PyArg_ParseTuple(args, "sf", &name, &number))
|
||||
{
|
||||
PyErr_SetString(PyExc_TypeError, "addVarNumber expects a string and a float");
|
||||
PyErr_SetString(PyExc_TypeError, "addVarFloat expects a string and a float");
|
||||
PYTHON_RETURN_ERROR;
|
||||
}
|
||||
self->fThis->AddVarNumber(name, number);
|
||||
PYTHON_RETURN_NONE;
|
||||
}
|
||||
|
||||
PYTHON_METHOD_DEFINITION(ptNotify, addVarInt, args)
|
||||
{
|
||||
char* name;
|
||||
int number;
|
||||
if (!PyArg_ParseTuple(args, "si", &name, &number))
|
||||
{
|
||||
PyErr_SetString(PyExc_TypeError, "addVarInt expects a string and a integer");
|
||||
PYTHON_RETURN_ERROR;
|
||||
}
|
||||
self->fThis->AddVarNumber(name, number);
|
||||
PYTHON_RETURN_NONE;
|
||||
}
|
||||
|
||||
PYTHON_METHOD_DEFINITION(ptNotify, addVarNull, args)
|
||||
{
|
||||
char* name;
|
||||
if (!PyArg_ParseTuple(args, "s", &name))
|
||||
{
|
||||
PyErr_SetString(PyExc_TypeError, "addVarNull expects a string");
|
||||
PYTHON_RETURN_ERROR;
|
||||
}
|
||||
self->fThis->AddVarNull(name);
|
||||
PYTHON_RETURN_NONE;
|
||||
}
|
||||
|
||||
PYTHON_METHOD_DEFINITION(ptNotify, addVarKey, args)
|
||||
{
|
||||
char* name;
|
||||
@ -337,6 +390,13 @@ PYTHON_START_METHODS_TABLE(ptNotify)
|
||||
PYTHON_METHOD(ptNotify, addPickEvent, "Params: enabledFlag,pickerKey,pickeeKey,hitPoint\nAdd a pick event record to the Notify message"),
|
||||
PYTHON_METHOD(ptNotify, addControlKeyEvent, "Params: keynumber,downFlag\nAdd a keyboard event record to the Notify message"),
|
||||
PYTHON_METHOD(ptNotify, addVarNumber, "Params: name,number\nAdd a number variable event record to the Notify message\n"
|
||||
"Method will try to pick appropriate variable type\n"
|
||||
"This event record is used to pass a number variable to another python program"),
|
||||
PYTHON_METHOD(ptNotify, addVarFloat, "Params: name,number\nAdd a float variable event record to the Notify message\n"
|
||||
"This event record is used to pass a number variable to another python program"),
|
||||
PYTHON_METHOD(ptNotify, addVarInt, "Params: name,number\nAdd a int variable event record to the Notify message\n"
|
||||
"This event record is used to pass a number variable to another python program"),
|
||||
PYTHON_METHOD(ptNotify, addVarNull, "Params: name,number\nAdd a null (no data) variable event record to the Notify message\n"
|
||||
"This event record is used to pass a number variable to another python program"),
|
||||
PYTHON_METHOD(ptNotify, addVarKey, "Params: name,key\nAdd a ptKey variable event record to the Notify message\n"
|
||||
"This event record is used to pass a ptKey variable to another python program"),
|
||||
@ -402,7 +462,9 @@ void pyNotify::AddPlasmaConstantsClasses(PyObject *m)
|
||||
PYTHON_ENUM_END(m, PtEventType);
|
||||
|
||||
PYTHON_ENUM_START(PtNotifyDataType);
|
||||
PYTHON_ENUM_ELEMENT(PtNotifyDataType, kNumber, proEventData::kNumber);
|
||||
PYTHON_ENUM_ELEMENT(PtNotifyDataType, kFloat, proEventData::kFloat);
|
||||
PYTHON_ENUM_ELEMENT(PtNotifyDataType, kInt, proEventData::kInt);
|
||||
PYTHON_ENUM_ELEMENT(PtNotifyDataType, kNull, proEventData::kNull);
|
||||
PYTHON_ENUM_ELEMENT(PtNotifyDataType, kKey, proEventData::kKey);
|
||||
PYTHON_ENUM_END(m, PtNotifyDataType);
|
||||
|
||||
|
Reference in New Issue
Block a user