private static uint ImportBehavior(BehaviorXml details, AccessDatabase database) { var behaviorTable = database["BehaviorTemplate"]; var entry = behaviorTable.Create(); var behavior = new BehaviorTemplateTable(entry); behavior.effectID = (int)details.Effect; behavior.templateID = (int)details.Type; foreach (var detailsParameter in details.Parameters) { var parameterTable = database["BehaviorParameter"]; var parameterEntry = parameterTable.Create(behavior.behaviorID); var parameter = new BehaviorParameterTable(parameterEntry); parameter.parameterID = detailsParameter.Name; if (detailsParameter.Behavior) { parameter.value = detailsParameter.Next == null ? 0 : ImportBehavior(detailsParameter.Next, database); } else { parameter.value = detailsParameter.Value; } } return((uint)behavior.behaviorID); }
public T GetParameter <T>(AccessDatabase database, string name) where T : struct { var table = database["BehaviorParameter"]; foreach (var column in table.SeekMultiple((int)Id)) { var entry = new BehaviorParameterTable(column); if (entry.parameterID == name) { return((T)Convert.ChangeType(entry.value, typeof(T))); } } return(default);