//---------------------------------------------------------------------------------------------------------------------- void CopyDCCPluginsFromPackage(string dccPluginVersion, Action <string> onSuccess, Action <string> onFail) { PackageRequestJobManager.CreateListRequest(/*offlineMode=*/ true, /*includeIndirectIndependencies=*/ true, /*onSuccess=*/ (listReq) => { PackageInfo packageInfo = listReq.FindPackage(MESHSYNC_DCC_PLUGIN_PACKAGE); if (null != packageInfo && packageInfo.version == dccPluginVersion) { //Package is already installed. CopyDCCPluginsFromPackage(dccPluginVersion); onSuccess(packageInfo.version); return; } string packageNameAndVer = $"{MESHSYNC_DCC_PLUGIN_PACKAGE}@{dccPluginVersion}"; PackageRequestJobManager.CreateAddRequest(packageNameAndVer, /*onSuccess=*/ (addReq) => { //Package was successfully added CopyDCCPluginsFromPackage(dccPluginVersion); onSuccess(dccPluginVersion); }, /*onFail=*/ (req) => { PackageInfo meshSyncInfo = listReq.FindPackage(MeshSyncConstants.PACKAGE_NAME); onFail?.Invoke(meshSyncInfo.version); }); }, /*OnFail=*/ null ); }