public MotionFile(bool createRootFolder = true) { itemDict = new Dictionary <string, MotionItemBase>(); if (createRootFolder) { rootFolder = new MotionFolderItem(this); rootFolder.SetName(RootFolderName); } }
public MotionFolderItem CreateFolder(MotionFolderItem parentFolder = null, string name = null) { if (parentFolder == null) { parentFolder = rootFolder; } if (string.IsNullOrEmpty(name)) { name = GetNewName(MotionItemType.Folder); } MotionFolderItem folder = new MotionFolderItem(this); ItemCreated?.Invoke(folder, parentFolder); if (parentFolder != null) { parentFolder.AddChild(folder); } folder.SetName(name); return(folder); }
public void LoadFromJson(JObject jRoot) { //MotionTree JObject jRootFolder = jRoot[RootFolderName] as JObject; LoadItemRecursive(jRootFolder, null); void LoadItemRecursive(JToken jItem, MotionFolderItem parent) { JToken jType = jItem["Type"]; string typeText = jType != null?jType.ToString() : null; string name = (jItem.Parent as JProperty).Name; if (typeText == "Motion") { LoadMotion(parent, jItem, name); } else { LoadFolder(parent, jItem, name); } } void LoadMotion(MotionFolderItem parent, JToken jItem, string name) { JObject jData = jItem["Data"] as JObject; JArray jPoints = jData["Point"] as JArray; MotionItem motion = CreateMotionEmpty(parent); motion.SetName(name); foreach (JToken jPointToken in jPoints) { JArray jPoint = jPointToken as JArray; MotionPoint point = new MotionPoint( PVector2.Parse(jPoint[0].ToObject <string>()), PVector2.Parse(jPoint[1].ToObject <string>()), PVector2.Parse(jPoint[2].ToObject <string>())); motion.AddPoint(point); } } void LoadFolder(MotionFolderItem parent, JToken jItem, string name) { MotionFolderItem folder = CreateFolder(parent); if (parent == null) { rootFolder = folder; } else { folder.SetName(name); } JObject jItems = jItem["Items"] as JObject; foreach (JToken jChild in jItems.Children()) { JProperty jChildProp = jChild as JProperty; LoadItemRecursive(jChildProp.Value, folder); } } }