private void OnImportedModel(GameObject obj, string path) { if (useCache && !objectCache.ContainsKey(lastModelCacheKey)) { objectCache.Add(lastModelCacheKey, obj); } ImportedModel?.Invoke(obj, path); }
private void getModels(string filePath) { Stream stream = null; ImportedModel currentModel = null; IParameterSet currentSet = null; IGroup group = null; bool parametersXmlArea = true; //int i = 0; try { using (XmlReader reader = ProjectBase.getXmlReader(filePath, out stream)) { string modelClass; string name; //reader.ReadToFollowing("models"); while (reader.Read() && parametersXmlArea) { switch (reader.Name) { case "spectra": if (reader.MoveToFirstAttribute()) { modelClass = String.Empty; name = String.Empty; do { switch (reader.Name) { case "name": name = reader.Value; break; case "class": modelClass = reader.Value; break; // AvailableAssemblies.getModel(reader.Value); break; } } while (reader.MoveToNextAttribute()); if (name != String.Empty && modelClass != String.Empty) { _importedModels.Add(currentModel = new ImportedModel(modelClass, name)); _modelNames.Add(name); } } reader.MoveToElement(); break; case "spectrum": //only start elemement has attributes. end elements are not analysed if (reader.IsStartElement()) { if (currentModel == null) { throw new Exception(); } //if (currentSet != null) // currentModel.parameters.Add(currentSet); if (reader.ReadToFollowing("ps")) { currentSet = new ParameterSet(); } } else { currentModel.parameters.Add(currentSet); reader.MoveToElement(); currentSet = null; } break; case "group": if (reader.HasAttributes) { if (currentSet == null) { throw new Exception(); } //while (reader.Read()) { //groups if (reader.Name == "group") { XmlReader groupReader = reader.ReadSubtree(); group = SpectrumBase.getGroup(groupReader, null, currentModel.model); currentSet.addGroup(group); groupReader.Close(); } } break; case "models": if (!reader.HasAttributes) { parametersXmlArea = false; } break; } } if (_modelNames.Count > 0) { _modelNames.Insert(0, "(none)"); } } } catch (Exception) { throw new ImportException(String.Format("Failed to import parameters from {0}", filePath)); } finally { if (stream != null) { stream.Close(); } } if (_modelNames.Count == 0) { throw new ImportException(String.Format("{0}\ndoesn't contain any importable parameter values.", filePath)); } }