public static Component DeserializeFromJson(RobotComponentDataModel componentDataModel) { var component = componentDataModel.component; if (component == null) { return(null); } var targetType = component.GetType(); if (!msJsonToComponent.TryGetValue(targetType, out var convert)) { foreach (var kv in msJsonToComponent) { if (targetType.IsCompatibleWith(kv.Key)) { convert = kv.Value; break; } } } if (convert != null) { try { convert(componentDataModel, component); } catch (Exception ex) { DebugUtility.LogException(ex); } } return(component); }
public static Component AttachComponent(Transform transform, RobotComponentDataModel componentDataModel) { var component = transform.GetUserComponent <Component>(componentDataModel.type); componentDataModel.component = component; if (!componentDataModel.alloc) { return(component); } else if (component == null) { component = transform.AddUserComponent <Component>(componentDataModel.type); componentDataModel.component = component; if (component == null) { DebugUtility.LogErrorTrace(LoggerTags.Project, "Missing Type {0}", componentDataModel.type); } return(component); } return(component); }