View Full Version : Multiple Copies of same sensor plugin

02-12-2008, 01:29 PM
I'm trying to write a sensor for Vizard that simply regurgitates a text file of (x, y, z) positions whenever the update function is called. Internally, it uses a vector to keep track of which sensor is associated with which file. This works as expected with one sensor.
When a second sensor is added, however, no data is returned and Vizard simply gets (0, 0, 0). I've tried outputting the memory address of the sensor that is passed as a parameter to the DLS and it is always the same. This suggests that either Vizard is never calling the update function with the second sensor, or that it is calling it with a pointer to the same sensor. I should note that each sensor does call the initialize function properly and that two separate memory addresses are received when they are initialized.

Any help would be greatly appreciated. Thanks!

02-12-2008, 03:06 PM
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:typedef struct {
VRUTSensorObj* instance;
} MySensor;

std::vector< MySensor > m_sensors;

void InitializeSensor(void *sensor)
//Create internal sensor object
MySensor ms;
ms.instance = (VRUTSensorObj *)sensor);

//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

void UpdateSensor(void *sensor)
//Update 'data' field of all sensors
for(unsigned int i = 0; i < m_sensors.size(); ++i) {
}Let me know if anything is unclear.

02-12-2008, 03:10 PM
beautiful, thank you for the quick reply. The lack of documentation for this is very frustrating...