public void SetData(LineContext context, TracklineData data, float timeScale) { this.context = context; this.data = data; //itemFactory = context.Get<ActionItemFactory>(); for (int i = 0; i < data.Actions.Count; ++i) { ActionData actionData = data.Actions[i]; if (actionData == null || actionData.Platform == ActionPlatform.Server) { continue; } ActionItem actionItem = itemFactory.RetainItem(actionData.GetType()); if (actionItem == null) { continue; } actionItem.SetData(context, actionData, timeScale); actionItems.Add(actionItem); } }
public void SetData(ActionData actionData) { m_ActionData = actionData; if (m_ActionData.GetType().IsSubclassOf(typeof(DurationActionData))) { m_DurationActionData = (DurationActionData)m_ActionData; } m_DataDrawer = new ObjectDrawer("Action Data", m_ActionData); m_ActionBriefName = string.Empty; var nameAttrs = m_ActionData.GetType().GetCustomAttributes(typeof(ActionBriefName), false); if (nameAttrs != null && nameAttrs.Length > 0) { m_ActionBriefName = ((ActionBriefName)nameAttrs[0]).Name; } }
public static void ShowMenu(Action <ActionData> callback) { if (actionTypeDic == null) { actionTypeDic = new Dictionary <string, Type>(); Type[] dataTypes = AssemblyUtility.GetDerivedTypes(typeof(ActionData)); if (dataTypes != null && dataTypes.Length > 0) { foreach (var type in dataTypes) { ActionMenuAttribute attr = type.GetCustomAttribute <ActionMenuAttribute>(); if (attr == null) { continue; } actionTypeDic.Add($"{attr.Prefix}/{attr.Name}", type); } } } if (actionTypeDic.Count == 0) { return; } GenericMenu menu = new GenericMenu(); if (!string.IsNullOrEmpty(LineSetting.Setting.CopiedActionData)) { ActionData data = (ActionData)JsonConvert.DeserializeObject(LineSetting.Setting.CopiedActionData, new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All, }); menu.AddItem(new GUIContent($"Paste({data.GetType().Name})"), false, () => { callback.Invoke(data); }); menu.AddSeparator(""); } foreach (var kvp in actionTypeDic) { menu.AddItem(new GUIContent(kvp.Key), false, () => { callback.Invoke((ActionData)Activator.CreateInstance(kvp.Value)); }); } menu.ShowAsContext(); }
public void OnPropertyGUI(bool isShowDesc = false) { Type actionType = m_ActionData.GetType(); EditorGUILayout.LabelField(actionType.Name); var attrs = actionType.GetCustomAttributes(typeof(MemberDesc), false); if (attrs != null && attrs.Length > 0) { EditorGUILayout.LabelField((attrs[0] as MemberDesc).Desc, EditorStyles.wordWrappedLabel); } m_DataDrawer.OnGUI(isShowDesc); }
public static ActionData CopyFromAction(ActionData fromAction) { if (fromAction == null) { return(null); } Type actionType = fromAction.GetType(); ActionData data = (ActionData)Activator.CreateInstance(actionType); FieldInfo[] fields = actionType.GetFields(BindingFlags.Public | BindingFlags.Instance); foreach (var field in fields) { object value = field.GetValue(fromAction); field.SetValue(data, value); } return(data); }