XnStatus GeneratorWatcher::UpdateFrameSync() { // go over all nodes, and find the frame synced one Context context; m_generator.GetContext(context); NodeInfoList nodes; XnStatus nRetVal = context.EnumerateExistingNodes(nodes); XN_IS_STATUS_OK(nRetVal); for (NodeInfoList::Iterator it = nodes.Begin(); it != nodes.End(); ++it) { NodeInfo info = *it; // make sure this is a generator if (xnIsTypeDerivedFrom(info.GetDescription().Type, XN_NODE_TYPE_GENERATOR)) { Generator otherGen; nRetVal = info.GetInstance(otherGen); XN_IS_STATUS_OK(nRetVal); if (m_generator.GetFrameSyncCap().IsFrameSyncedWith(otherGen)) { nRetVal = NotifyStringPropChanged(XN_PROP_FRAME_SYNCED_WITH, otherGen.GetName()); XN_IS_STATUS_OK(nRetVal); return XN_STATUS_OK; } } } // if we got here, we're not frame synced nRetVal = NotifyStringPropChanged(XN_PROP_FRAME_SYNCED_WITH, ""); XN_IS_STATUS_OK(nRetVal); return XN_STATUS_OK; }
XnBool isInstanceOf(XnProductionNodeType deriv, XnProductionNodeType base) { if (deriv == base) { return true; } return xnIsTypeDerivedFrom(deriv, base); }