The UpdateSensor function is called once per frame, regardless of how many instances of your sensors have been created. You should store each sensor pointer in a global vector during initialization, then iterate through them in the UpdateSensor function. Here is some pseudo code that should explain the general idea:
Code:
typedef struct {
VRUTSensorObj* instance;
SOME_OBJECT_HANDLE handle;
} MySensor;
std::vector< MySensor > m_sensors;
void InitializeSensor(void *sensor)
{
//Create internal sensor object
MySensor ms;
ms.instance = (VRUTSensorObj *)sensor);
ms.handle = CREATE_OBJECT_HANDLE;
//Save sensor number in user field
ms.instance->user[0] = m_sensors.size();
//Set data size
ms.instance->dataSize = 7;
//Notify successfull initialization
ms.instance->status = TRUE;
//Save object in global array
m_sensors.push_back(ms);
}
void UpdateSensor(void *sensor)
{
//Update 'data' field of all sensors
for(unsigned int i = 0; i < m_sensors.size(); ++i) {
GET_OBJECT_DATA(m_sensors[i].handle,m_sensors[i].instance->data);
}
}
Let me know if anything is unclear.