void KindRegistry::_RegisterDefaults() { // Initialize builtin kind hierarchy. _Register(KindTokens->subcomponent); _Register(KindTokens->model); _Register(KindTokens->component, KindTokens->model); _Register(KindTokens->group, KindTokens->model); _Register(KindTokens->assembly, KindTokens->group); // Check plugInfo for extensions to the kind hierarchy. // // XXX We only do this once, and do not re-build the kind hierarchy // if someone manages to add more plugins while the app is running. // This allows the KindRegistry to be threadsafe without locking. const PlugPluginPtrVector& plugins = PlugRegistry::GetInstance().GetAllPlugins(); TF_FOR_ALL(plug, plugins){ JsObject kinds; const JsObject &metadata = (*plug)->GetMetadata(); if (!_GetKey(metadata, _tokens->PluginKindsKey, &kinds)) continue; TF_FOR_ALL(kindEntry, kinds){ // Each entry is a map from kind -> metadata dict. TfToken kind(kindEntry->first); JsObject kindDict; if (!_GetKey(kinds, kind, &kindDict)){ TF_RUNTIME_ERROR("Expected dict for kind '%s'", kind.GetText()); continue; } // Check for baseKind. TfToken baseKind; JsObject::const_iterator i = kindDict.find("baseKind"); if (i != kindDict.end()) { if (i->second.IsString()) { baseKind = TfToken(i->second.GetString()); } else { TF_RUNTIME_ERROR("Expected string for baseKind"); continue; } } _Register(kind, baseKind); }
void GameMain() { char key; RunStart(); while(1) { MyTimer1(); MyTimer2(); MyTimer3(); key=_GetKey(); if(-1==key) continue; if('q'==key) { break; } RunKey(key); } }
_Node(const SdfPath& path) : _key(_GetKey(path)) { }