View Single Post
  #2  
Old 02-12-2008, 02:06 PM
farshizzo farshizzo is offline
WorldViz Team Member
 
Join Date: Mar 2003
Posts: 2,849
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.
Reply With Quote