Exemplo n.º 1
0
        private void HandleDragAndDropGUI(Rect dragdropArea, EditorWindow w)
        {
            Event evt = Event.current;

            switch (evt.type)
            {
            case EventType.DragUpdated:
            case EventType.DragPerform:
                if (!dragdropArea.Contains(evt.mousePosition))
                {
                    return;
                }

                DragAndDrop.visualMode = DragAndDropVisualMode.Copy;

                if (evt.type == EventType.DragPerform)
                {
                    DragAndDrop.AcceptDrag();

                    foreach (Object obj in DragAndDrop.objectReferences)
                    {
                        VariantOperation.GetOperation().CreateObjectVariantInfo(obj);
                    }
                }
                break;
            }
        }
        private static bool Load()
        {
            bool loaded = false;

            try {
//                var dbPath = kDATAPATH;
//
//                if(File.Exists(dbPath))
//                {
//                    VariantOperation op = AssetDatabase.LoadAssetAtPath<VariantOperation>(dbPath);
//
//                    if(op != null) {
//                        s_operation = op;
//                        loaded = true;
//                    }
//                }
                VariantOperation op = Resources.Load <VariantOperation>("VO");
                if (op != null)
                {
                    s_operation = op;
                    loaded      = true;
                }
            } catch (System.Exception e) {
                Debug.LogException(e);
            }

            return(loaded);
        }
        public bool HandleChildDelete(VariantInfo child)
        {
            m_Children.Remove(child);
            VariantOperation.GetOperation().RemoveVariantFromVariantAxis(child.AssignedVariant, AssignedAxis);

            return(true);
        }
 public void SetRemapConfig(ObjectVariantDestinationInfo info)
 {
     if (info.DstObject != null)
     {
         VariantOperation.GetOperation().AddVariantMapping(info.CreateTagFromSelection(), m_obj, info.DstObject);
     }
     else
     {
         RemoveRemapConfig(info);
     }
 }
        void ApplyAll()
        {
            VariantOperation.GetOperation().ResetRemap();

            VariantOperation.GetOperation().RemoveVariantMapping();

            foreach (var objInfo in VariantOperation.Objects)
            {
                objInfo.SetAllRemapConfig();
            }

            VariantOperation.GetOperation().ApplyRemap();
        }
        private void DrawContent(Rect r)
        {
            var tex = AssetPreview.GetAssetPreview(m_obj);

            GUILayout.Label(tex, GUILayout.Width(100f), GUILayout.Height(100f));
            GUILayout.Label(m_obj.name, "BoldLabel", GUILayout.Width(100f));

            GUILayout.Space(8f);

            if (GUILayout.Button("Add Variant"))
            {
                m_destinations.Add(new ObjectVariantDestinationInfo());
            }

            if (GUILayout.Button("Delete Config"))
            {
                VariantOperation.GetOperation().RemoveObjectVariantInfo(m_obj);
            }
        }
        public static VariantOperation GetOperation()
        {
            if (s_operation == null)
            {
                if (!Load())
                {
                    #if UNITY_EDITOR
                    // Create vanilla db
                    s_operation           = ScriptableObject.CreateInstance <VariantOperation>();
                    s_operation.m_axis    = CreateDefaultAxis();
                    s_operation.m_objects = new List <ObjectVariantInfo>();

                    AssetDatabase.CreateAsset(s_operation, kDATAPATH);
                    #else
                    Debug.LogError("Failed To Load from disk...");
                    #endif
                }
            }

            return(s_operation);
        }
        void DeleteVariant(object b)
        {
            var selectedNodes = b as List <TreeViewItem>;

            if (selectedNodes != null && selectedNodes.Count > 0)
            {
                foreach (var i in selectedNodes)
                {
                    if (i is VariantAxisTreeItem)
                    {
                        VariantAxisTreeItem item = i as VariantAxisTreeItem;
                        VariantOperation.GetOperation().RemoveVariantAxis(item.Info.AssignedAxis);
                    }
                    else if (i is VariantTreeItem)
                    {
                        VariantTreeItem     item = i as VariantTreeItem;
                        VariantAxisTreeItem p    = i.parent as VariantAxisTreeItem;
                        VariantOperation.GetOperation().RemoveVariantFromVariantAxis(item.Info.AssignedVariant, p.Info.AssignedAxis);
                    }
                }
            }
            ForceReloadData(this);
        }
        private void DrawDstContent(Rect r, ObjectVariantDestinationInfo dstInfo, int index)
        {
            var tex = AssetPreview.GetAssetPreview(dstInfo.DstObject);

            GUILayout.Label(tex, GUILayout.Width(100f), GUILayout.Height(100f));

            string name = "<null>";

            if (dstInfo.DstObject != null)
            {
                name = dstInfo.DstObject.name;
            }
            GUILayout.Label(name, "BoldLabel", GUILayout.Width(100f));
            var newObj = EditorGUILayout.ObjectField(dstInfo.DstObject, m_obj.GetType(), false, GUILayout.Width(100f));

            if (newObj != dstInfo.DstObject)
            {
                dstInfo.DstObject = newObj;
                SetRemapConfig(dstInfo);
                VariantOperation.SetDBDirty();
            }

            GUILayout.Space(8f);

            foreach (var ax in VariantOperation.Axis)
            {
                var items = ax.Variants.Select(v => v.Name).ToList();
                items.Insert(0, "<Any>");
                var array = items.ToArray();

                int           popIndex = 0;
                AxisSelection s        = dstInfo.Selections.Find(x => x.axName == ax.Name);
                if (s != null)
                {
                    popIndex = ax.Variants.FindIndex(v => v.ShortName == s.vShortName) + 1;
                }

                var newIndex = EditorGUILayout.Popup(popIndex, array, GUILayout.Width(100f));
                if (newIndex != popIndex)
                {
                    if (newIndex == 0)
                    {
                        dstInfo.Selections.RemoveAll(sel => sel.axName == ax.Name);
                    }
                    else
                    {
                        if (s == null)
                        {
                            s        = new AxisSelection();
                            s.axName = ax.Name;
                            dstInfo.Selections.Add(s);
                        }
                        s.vShortName = (newIndex == 0)? "" : ax.Variants.ElementAt(newIndex - 1).ShortName;
                    }
                    SetRemapConfig(dstInfo);
                    VariantOperation.SetDBDirty();
                }
                GUILayout.Space(2f);
            }

            GUILayout.Space(8f);

            if (GUILayout.Button("Delete Variant"))
            {
                m_removing.Add(dstInfo);
            }
        }
 public void RemoveRemapConfig()
 {
     VariantOperation.GetOperation().RemoveAllVariantMappingForObject(m_obj);
 }
 public void RemoveRemapConfig(ObjectVariantDestinationInfo info)
 {
     VariantOperation.GetOperation().RemoveVariantMapping(info.CreateTagFromSelection(), m_obj);
 }
 public void SelectVariant(Variant v)
 {
     m_currentSelection = v;
     VariantOperation.GetOperation().ApplyRemap();
 }
 public void ResetSelection()
 {
     m_currentSelection = null;
     VariantOperation.GetOperation().ApplyRemap();
 }
Exemplo n.º 14
0
        public static void AddNewAxis()
        {
            var newAxis = VariantOperation.GetOperation().CreateNewAxis("New Variant Group");

            m_RootLevelVariant.AddChild(newAxis);
        }
 void ResetAll()
 {
     VariantOperation.GetOperation().ResetRemap();
 }
 public void HandleDelete()
 {
     VariantOperation.GetOperation().RemoveVariantAxis(AssignedAxis);
     m_Children.Clear();
 }