void ProximitySensorNode::update() { if (!isEnabled()) return; SceneGraph *sg = getSceneGraph(); if (!sg) return; ViewpointNode *vpoint = sg->getViewpointNode(); if (vpoint == NULL) vpoint = sg->getDefaultViewpointNode(); float vpos[3]; vpoint->getPosition(vpos); float center[3]; getCenter(center); float size[3]; getSize(size); if (inRegion() == false) { if (isRegion(vpos, center, size) == true) { setInRegion(true); double time = GetCurrentSystemTime(); setEnterTime(time); sendEvent(getEventOut(enterTimeFieldString)); setIsActive(true); sendEvent(getEventOut(isActiveFieldString)); } } else { if (isRegion(vpos, center, size) == false) { setInRegion(false); double time = GetCurrentSystemTime(); setExitTime(time); sendEvent(getEventOut(exitTimeFieldString)); setIsActive(false); sendEvent(getEventOut(isActiveFieldString)); } } }