Exemple #1
0
        public MotionFile(bool createRootFolder = true)
        {
            itemDict = new Dictionary <string, MotionItemBase>();

            if (createRootFolder)
            {
                rootFolder = new MotionFolderItem(this);
                rootFolder.SetName(RootFolderName);
            }
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
                }
            }
        }