public virtual void ActionUpdate(IO.Swagger.Model.Action action, bool updateConnections = false) { // Updates (or creates new) parameters of current action foreach (IO.Swagger.Model.ActionParameter projectActionParameter in action.Parameters) { try { // If action parameter exist in action dictionary, then just update that parameter value (it's metadata will always be unchanged) if (Parameters.TryGetValue(projectActionParameter.Name, out Parameter actionParameter)) { actionParameter.UpdateActionParameter(DataHelper.ActionParameterToParameter(projectActionParameter)); } // Otherwise create a new action parameter, load metadata for it and add it to the dictionary of action else { // Loads metadata of specified action parameter - projectActionParameter. Action.Metadata is created when creating Action. IO.Swagger.Model.ParameterMeta actionParameterMetadata = Metadata.GetParamMetadata(projectActionParameter.Name); actionParameter = new Parameter(actionParameterMetadata, projectActionParameter.Value); Parameters.Add(actionParameter.Name, actionParameter); } } catch (ItemNotFoundException ex) { Debug.LogError(ex); } } }
public async void SaveParameters() { if (Base.Parameter.CheckIfAllValuesValid(actionParameters)) { List <IO.Swagger.Model.ActionParameter> parameters = new List <IO.Swagger.Model.ActionParameter>(); foreach (IParameter actionParameter in actionParameters) { IO.Swagger.Model.ParameterMeta metadata = CurrentAction.Metadata.GetParamMetadata(actionParameter.GetName()); IO.Swagger.Model.ActionParameter ap = new IO.Swagger.Model.ActionParameter(name: actionParameter.GetName(), value: JsonConvert.SerializeObject(actionParameter.GetValue()), type: metadata.Type); parameters.Add(ap); } Debug.Assert(ProjectManager.Instance.AllowEdit); try { await WebsocketManager.Instance.UpdateAction(CurrentAction.Data.Id, parameters, CurrentAction.GetFlows()); Base.Notifications.Instance.ShowToastMessage("Parameters saved"); SaveParametersBtn.SetInteractivity(false, "Parameters unchanged"); parametersChanged = false; if (string.IsNullOrEmpty(GameManager.Instance.ExecutingAction)) { ExecuteActionBtn.SetInteractivity(true); } } catch (RequestFailedException e) { Notifications.Instance.ShowNotification("Failed to update action ", e.Message); } } }
public bool TryGetParameterMetadata(string id, out IO.Swagger.Model.ParameterMeta parameterMeta) { foreach (IO.Swagger.Model.ParameterMeta p in ActionObjectMetadata.Settings) { if (p.Name == id) { parameterMeta = p; return(true); } } parameterMeta = null; return(false); }