ResourceMapRouter::ResourceMapRouter(Context* context, const String& mapFile) : ResourceRouter(context) { if (mapFile.Length()) { ResourceCache* cache = GetSubsystem<ResourceCache>(); if (!cache) return; SharedPtr<JSONFile> jsonFile = cache->GetTempResource<JSONFile>(mapFile); if (jsonFile.NotNull()) { if (Load(jsonFile->GetRoot())) cache->AddResourceRouter(this); } } }
Script::Script(Context* context) : Object(context), scriptEngine_(0), immediateContext_(0), scriptNestingLevel_(0), executeConsoleCommands_(false) { scriptEngine_ = asCreateScriptEngine(ANGELSCRIPT_VERSION); if (!scriptEngine_) { URHO3D_LOGERROR("Could not create AngelScript engine"); return; } scriptEngine_->SetUserData(this); scriptEngine_->SetEngineProperty(asEP_USE_CHARACTER_LITERALS, (asPWORD)true); scriptEngine_->SetEngineProperty(asEP_ALLOW_UNSAFE_REFERENCES, (asPWORD)true); scriptEngine_->SetEngineProperty(asEP_ALLOW_IMPLICIT_HANDLE_TYPES, (asPWORD)true); scriptEngine_->SetEngineProperty(asEP_BUILD_WITHOUT_LINE_CUES, (asPWORD)true); scriptEngine_->SetMessageCallback(asMETHOD(Script, MessageCallback), this, asCALL_THISCALL); // Create the context for immediate execution immediateContext_ = scriptEngine_->CreateContext(); immediateContext_->SetExceptionCallback(asMETHOD(Script, ExceptionCallback), this, asCALL_THISCALL); // Register Script library object factories RegisterScriptLibrary(context_); // Register the Array, String & Dictionary API RegisterArray(scriptEngine_); RegisterString(scriptEngine_); RegisterDictionary(scriptEngine_); RegisterScriptInterfaceAPI(scriptEngine_); // Register the rest of the script API RegisterMathAPI(scriptEngine_); RegisterCoreAPI(scriptEngine_); RegisterIOAPI(scriptEngine_); RegisterResourceAPI(scriptEngine_); RegisterSceneAPI(scriptEngine_); RegisterGraphicsAPI(scriptEngine_); RegisterInputAPI(scriptEngine_); RegisterAudioAPI(scriptEngine_); RegisterUIAPI(scriptEngine_); #ifdef URHO3D_NETWORK RegisterNetworkAPI(scriptEngine_); #endif #ifdef URHO3D_DATABASE RegisterDatabaseAPI(scriptEngine_); #endif #ifdef URHO3D_PHYSICS RegisterPhysicsAPI(scriptEngine_); #endif #ifdef URHO3D_NAVIGATION RegisterNavigationAPI(scriptEngine_); #endif #ifdef URHO3D_URHO2D RegisterUrho2DAPI(scriptEngine_); #endif RegisterScriptAPI(scriptEngine_); RegisterEngineAPI(scriptEngine_); // Subscribe to console commands SetExecuteConsoleCommands(true); // Create and register resource router for checking for compiled AngelScript files ResourceCache* cache = GetSubsystem<ResourceCache>(); if (cache) { router_ = new ScriptResourceRouter(context_); cache->AddResourceRouter(router_); } }