private void SetGuid(AK.Wwise.TreeView.TreeViewItem in_item)
    {
        m_serializedObject.Update();

        var obj = in_item.DataContext as AkWwiseTreeView.AkTreeInfo;

        //we set the items guid
        AkUtilities.SetByteArrayProperty(m_selectedItemGuid[0], obj.Guid);
        if (m_selectedItemID != null)
        {
            m_selectedItemID[0].intValue = obj.ID;
        }

        //When its a State or a Switch, we set the group's guid
        if (m_selectedItemGuid.Length == 2)
        {
            obj = in_item.Parent.DataContext as AkWwiseTreeView.AkTreeInfo;
            AkUtilities.SetByteArrayProperty(m_selectedItemGuid[1], obj.Guid);
            if (m_selectedItemID != null)
            {
                m_selectedItemID[1].intValue = obj.ID;
            }
        }

        m_serializedObject.ApplyModifiedProperties();
    }
Ejemplo n.º 2
0
 /// <summary>
 ///     Handler functions for TreeViewControl
 /// </summary>
 private void AddHandlerEvents(AK.Wwise.TreeView.TreeViewItem item)
 {
     // Uncomment this when we support right click
     item.Click             = HandleClick;
     item.Dragged           = PrepareDragDrop;
     item.CustomIconBuilder = CustomIconHandler;
 }
Ejemplo n.º 3
0
    private void RestoreExpansionStatus(AK.Wwise.TreeView.TreeViewItem in_item, ref string in_path)
    {
        in_path = in_path + "/" + in_item.Header;

        in_item.IsExpanded = GetExpansionStatus(in_path);

        for (var i = 0; i < in_item.Items.Count; i++)
        {
            RestoreExpansionStatus(in_item.Items[i], ref in_path);
        }

        in_path = in_path.Remove(in_path.LastIndexOf('/'));
    }
Ejemplo n.º 4
0
    private bool FilterTreeview(AK.Wwise.TreeView.TreeViewItem in_item)
    {
        in_item.IsHidden   = in_item.Header.IndexOf(m_filterString, System.StringComparison.OrdinalIgnoreCase) < 0;
        in_item.IsExpanded = true;

        for (var i = 0; i < in_item.Items.Count; i++)
        {
            if (!FilterTreeview(in_item.Items[i]))
            {
                in_item.IsHidden = false;
            }
        }

        return(in_item.IsHidden);
    }
Ejemplo n.º 5
0
    private void HandleClick(object sender, System.EventArgs args)
    {
        if (UnityEngine.Event.current.button == 0)
        {
            if ((args as AK.Wwise.TreeView.TreeViewItem.ClickEventArgs).m_clickCount == 2)
            {
                LastDoubleClickedItem = (AK.Wwise.TreeView.TreeViewItem)sender;

                if (LastDoubleClickedItem.HasChildItems())
                {
                    LastDoubleClickedItem.IsExpanded = !LastDoubleClickedItem.IsExpanded;
                }
            }
        }
    }
Ejemplo n.º 6
0
    private void SaveExpansionStatus(AK.Wwise.TreeView.TreeViewItem in_item, string in_path)
    {
        in_path = in_path + "/" + in_item.Header;

        AkWwiseProjectInfo.GetData().ExpandedItems.Add(in_path);

        for (var i = 0; i < in_item.Items.Count; i++)
        {
            if (in_item.Items[i].HasChildItems() && in_item.Items[i].IsExpanded)
            {
                SaveExpansionStatus(in_item.Items[i], in_path);
            }
        }

        in_path = in_path.Remove(in_path.LastIndexOf('/'));
    }
Ejemplo n.º 7
0
    public void PopulateItem(AK.Wwise.TreeView.TreeViewItem attachTo, string itemName,
                             System.Collections.Generic.List <AkWwiseProjectData.EventWorkUnit> Events)
    {
        var akInfoWwu = new System.Collections.Generic.List <AkWwiseProjectData.AkInfoWorkUnit>(Events.Count);

        for (var i = 0; i < Events.Count; i++)
        {
            akInfoWwu.Add(new AkWwiseProjectData.AkInfoWorkUnit());
            akInfoWwu[i].PhysicalPath       = Events[i].PhysicalPath;
            akInfoWwu[i].ParentPhysicalPath = Events[i].ParentPhysicalPath;
            akInfoWwu[i].Guid = Events[i].Guid;
            akInfoWwu[i].List = Events[i].List.ConvertAll(x => (AkWwiseProjectData.AkInformation)x);
        }

        PopulateItem(attachTo, itemName, akInfoWwu);
    }
Ejemplo n.º 8
0
    public void PopulateItem(AK.Wwise.TreeView.TreeViewItem attachTo, string itemName,
                             System.Collections.Generic.List <AkWwiseProjectData.AkInfoWorkUnit> workUnits)
    {
        var attachPoint = attachTo.AddItem(itemName, false, GetExpansionStatus("/" + RootItem.Header + "/" + itemName),
                                           new AkTreeInfo(WwiseObjectType.PhysicalFolder));

        foreach (var wwu in workUnits)
        {
            foreach (var akInfo in wwu.List)
            {
                AddHandlerEvents(AddPathToTreeItem(attachPoint, akInfo));
            }
        }

        AddHandlerEvents(attachPoint);
    }
Ejemplo n.º 9
0
    private void SetGuid(AK.Wwise.TreeView.TreeViewItem in_item)
    {
        m_serializedObject.Update();

        var obj            = in_item.DataContext as AkWwiseTreeView.AkTreeInfo;
        var reference      = WwiseObjectReference.FindOrCreateWwiseObject(m_type, in_item.Header, obj.Guid);
        var groupReference = reference as WwiseGroupValueObjectReference;

        if (groupReference)
        {
            obj = in_item.Parent.DataContext as AkWwiseTreeView.AkTreeInfo;
            groupReference.SetupGroupObjectReference(in_item.Parent.Header, obj.Guid);
        }

        m_WwiseObjectReference.objectReferenceValue = reference;

        m_serializedObject.ApplyModifiedProperties();
    }
Ejemplo n.º 10
0
    public AK.Wwise.TreeView.TreeViewItem GetItemByType(AK.Wwise.TreeView.TreeViewItem in_item, WwiseObjectType type)
    {
        if ((in_item.DataContext as AkTreeInfo).ObjectType == type)
        {
            return(in_item);
        }

        for (var i = 0; i < in_item.Items.Count; i++)
        {
            var item = GetItemByType(in_item.Items[i], type);
            if (item != null)
            {
                return(item);
            }
        }

        return(null);
    }
Ejemplo n.º 11
0
    public AK.Wwise.TreeView.TreeViewItem GetSelectedItem(AK.Wwise.TreeView.TreeViewItem in_item)
    {
        if (in_item.IsSelected)
        {
            return(in_item);
        }

        for (var i = 0; i < in_item.Items.Count; i++)
        {
            var item = GetSelectedItem(in_item.Items[i]);

            if (item != null)
            {
                return(item);
            }
        }

        return(null);
    }
Ejemplo n.º 12
0
    public AK.Wwise.TreeView.TreeViewItem GetItemByGuid(AK.Wwise.TreeView.TreeViewItem in_item, System.Guid in_guid)
    {
        var itemGuid = (in_item.DataContext as AkTreeInfo).Guid;

        if (itemGuid.Equals(in_guid))
        {
            return(in_item);
        }

        for (var i = 0; i < in_item.Items.Count; i++)
        {
            var item = GetItemByGuid(in_item.Items[i], in_guid);

            if (item != null)
            {
                return(item);
            }
        }

        return(null);
    }
    private AK.Wwise.TreeView.TreeViewItem AddPathToTreeItem(AK.Wwise.TreeView.TreeViewItem item, System.Guid itemGuid,
                                                             System.Collections.Generic.List <AkWwiseProjectData.PathElement> pathAndIcons)
    {
        var parentItem = item;

        var path = "/" + RootItem.Header + "/" + item.Header;

        for (var i = 0; i < pathAndIcons.Count; i++)
        {
            var PathElem  = pathAndIcons[i];
            var childItem = parentItem.FindItemByName(PathElem.ElementName);

            path = path + "/" + PathElem.ElementName;

            if (childItem == null)
            {
                if (i != pathAndIcons.Count - 1)
                {
                    childItem = parentItem.AddItem(PathElem.ElementName,
                                                   new AkTreeInfo(System.Guid.Empty, PathElem.ObjectType), GetExpansionStatus(path));
                }
                else
                {
                    var isDraggable = !(PathElem.ObjectType == WwiseObjectType.StateGroup ||
                                        PathElem.ObjectType == WwiseObjectType.SwitchGroup ||
                                        PathElem.ObjectType == WwiseObjectType.Folder ||
                                        PathElem.ObjectType == WwiseObjectType.Bus ||
                                        PathElem.ObjectType == WwiseObjectType.WorkUnit);
                    childItem = parentItem.AddItem(PathElem.ElementName, isDraggable, GetExpansionStatus(path),
                                                   new AkTreeInfo(itemGuid, PathElem.ObjectType));
                }
            }

            AddHandlerEvents(childItem);
            parentItem = childItem;
        }

        return(parentItem);
    }
Ejemplo n.º 14
0
    public void PopulateItem(AK.Wwise.TreeView.TreeViewItem attachTo, string itemName,
                             System.Collections.Generic.List <AkWwiseProjectData.GroupValWorkUnit> GroupWorkUnits)
    {
        var attachPoint = attachTo.AddItem(itemName, false, GetExpansionStatus("/" + RootItem.Header + "/" + itemName),
                                           new AkTreeInfo(WwiseObjectType.PhysicalFolder));

        foreach (var wwu in GroupWorkUnits)
        {
            foreach (var group in wwu.List)
            {
                var groupItem = AddPathToTreeItem(attachPoint, group);
                AddHandlerEvents(groupItem);

                foreach (var child in group.values)
                {
                    var item = groupItem.AddItem(child.Name, true, false, new AkTreeInfo(child.Guid, child.PathAndIcons[0].ObjectType));
                    AddHandlerEvents(item);
                }
            }
        }

        AddHandlerEvents(attachPoint);
    }
Ejemplo n.º 15
0
    public void PopulateItem(AK.Wwise.TreeView.TreeViewItem attachTo, string itemName,
                             System.Collections.Generic.List <AkWwiseProjectData.GroupValWorkUnit> GroupWorkUnits)
    {
        var attachPoint = attachTo.AddItem(itemName, false, GetExpansionStatus("/" + RootItem.Header + "/" + itemName),
                                           new AkTreeInfo(0, AkWwiseProjectData.WwiseObjectType.PHYSICALFOLDER));

        foreach (var wwu in GroupWorkUnits)
        {
            foreach (var group in wwu.List)
            {
                var groupItem = AddPathToTreeItem(attachPoint, group);
                AddHandlerEvents(groupItem);

                for (var i = 0; i < group.values.Count; i++)
                {
                    var item = groupItem.AddItem(group.values[i], true, false,
                                                 new AkTreeInfo(group.valueIDs[i], group.ValueGuids[i].bytes, group.ValueIcons[i].ObjectType));
                    AddHandlerEvents(item);
                }
            }
        }

        AddHandlerEvents(attachPoint);
    }
Ejemplo n.º 16
0
    private AK.Wwise.TreeView.TreeViewItem AddPathToTreeItem(AK.Wwise.TreeView.TreeViewItem item,
                                                             AkWwiseProjectData.AkInformation AkInfo)
    {
        var parentItem = item;

        var path = "/" + RootItem.Header + "/" + item.Header;

        for (var i = 0; i < AkInfo.PathAndIcons.Count; i++)
        {
            var PathElem  = AkInfo.PathAndIcons[i];
            var childItem = parentItem.FindItemByName(PathElem.ElementName);

            path = path + "/" + PathElem.ElementName;

            if (childItem == null)
            {
                if (i != AkInfo.PathAndIcons.Count - 1)
                {
                    childItem = parentItem.AddItem(PathElem.ElementName,
                                                   new AkTreeInfo(0, System.Guid.Empty.ToByteArray(), PathElem.ObjectType), GetExpansionStatus(path));
                }
                else
                {
                    var isDraggable = !(PathElem.ObjectType == AkWwiseProjectData.WwiseObjectType.STATEGROUP ||
                                        PathElem.ObjectType == AkWwiseProjectData.WwiseObjectType.SWITCHGROUP);
                    childItem = parentItem.AddItem(PathElem.ElementName, isDraggable, GetExpansionStatus(path),
                                                   new AkTreeInfo(AkInfo.ID, AkInfo.Guid, PathElem.ObjectType));
                }
            }

            AddHandlerEvents(childItem);
            parentItem = childItem;
        }

        return(parentItem);
    }
 private AK.Wwise.TreeView.TreeViewItem AddPathToTreeItem(AK.Wwise.TreeView.TreeViewItem item,
                                                          AkWwiseProjectData.AkInfoWorkUnit AkInfo)
 {
     return(AddPathToTreeItem(item, AkInfo.Guid, AkInfo.PathAndIcons));
 }
        private void DelayCall()
        {
            if (s_componentPicker != null)
            {
                return;
            }

            s_componentPicker = CreateInstance <AkWwiseComponentPicker>();

            //position the window below the button
            var pos = new UnityEngine.Rect(pickerPosition.x, pickerPosition.yMax, 0, 0);

            //If the window gets out of the screen, we place it on top of the button instead
            if (pickerPosition.yMax > UnityEngine.Screen.currentResolution.height / 2)
            {
                pos.y = pickerPosition.y - UnityEngine.Screen.currentResolution.height / 2;
            }

            //We show a drop down window which is automatically destroyed when focus is lost
            s_componentPicker.ShowAsDropDown(pos,
                                             new UnityEngine.Vector2(pickerPosition.width >= 250 ? pickerPosition.width : 250,
                                                                     UnityEngine.Screen.currentResolution.height / 2));

            s_componentPicker.m_selectedItemGuid = guidProperty;
            s_componentPicker.m_selectedItemID   = idProperty;
            s_componentPicker.m_serializedObject = serializedObject;
            s_componentPicker.m_type             = objectType;

            //Make a backup of the tree's expansion status and replace it with an empty list to make sure nothing will get expanded
            //when we populate the tree
            var expandedItemsBackUp = AkWwiseProjectInfo.GetData().ExpandedItems;

            AkWwiseProjectInfo.GetData().ExpandedItems = new System.Collections.Generic.List <string>();

            s_componentPicker.m_treeView.AssignDefaults();
            s_componentPicker.m_treeView.SetRootItem(
                System.IO.Path.GetFileNameWithoutExtension(WwiseSetupWizard.Settings.WwiseProjectPath),
                AkWwiseProjectData.WwiseObjectType.PROJECT);

            //Populate the tree with the correct type
            if (objectType == AkWwiseProjectData.WwiseObjectType.EVENT)
            {
                s_componentPicker.m_treeView.PopulateItem(s_componentPicker.m_treeView.RootItem, "Events",
                                                          AkWwiseProjectInfo.GetData().EventWwu);
            }
            else if (objectType == AkWwiseProjectData.WwiseObjectType.SWITCH)
            {
                s_componentPicker.m_treeView.PopulateItem(s_componentPicker.m_treeView.RootItem, "Switches",
                                                          AkWwiseProjectInfo.GetData().SwitchWwu);
            }
            else if (objectType == AkWwiseProjectData.WwiseObjectType.STATE)
            {
                s_componentPicker.m_treeView.PopulateItem(s_componentPicker.m_treeView.RootItem, "States",
                                                          AkWwiseProjectInfo.GetData().StateWwu);
            }
            else if (objectType == AkWwiseProjectData.WwiseObjectType.SOUNDBANK)
            {
                s_componentPicker.m_treeView.PopulateItem(s_componentPicker.m_treeView.RootItem, "Banks",
                                                          AkWwiseProjectInfo.GetData().BankWwu);
            }
            else if (objectType == AkWwiseProjectData.WwiseObjectType.AUXBUS)
            {
                s_componentPicker.m_treeView.PopulateItem(s_componentPicker.m_treeView.RootItem, "Auxiliary Busses",
                                                          AkWwiseProjectInfo.GetData().AuxBusWwu);
            }
            else if (objectType == AkWwiseProjectData.WwiseObjectType.GAMEPARAMETER)
            {
                s_componentPicker.m_treeView.PopulateItem(s_componentPicker.m_treeView.RootItem, "Game Parameters",
                                                          AkWwiseProjectInfo.GetData().RtpcWwu);
            }
            else if (objectType == AkWwiseProjectData.WwiseObjectType.TRIGGER)
            {
                s_componentPicker.m_treeView.PopulateItem(s_componentPicker.m_treeView.RootItem, "Triggers",
                                                          AkWwiseProjectInfo.GetData().TriggerWwu);
            }
            else if (objectType == AkWwiseProjectData.WwiseObjectType.ACOUSTICTEXTURE)
            {
                s_componentPicker.m_treeView.PopulateItem(s_componentPicker.m_treeView.RootItem, "Virtual Acoustics",
                                                          AkWwiseProjectInfo.GetData().AcousticTextureWwu);
            }

            AK.Wwise.TreeView.TreeViewItem item = null;

            var byteArray = AkUtilities.GetByteArrayProperty(guidProperty[0]);

            if (byteArray != null)
            {
                item = s_componentPicker.m_treeView.GetItemByGuid(new System.Guid(byteArray));
            }

            if (item != null)
            {
                item.ParentControl.SelectedItem = item;

                var itemIndexFromRoot = 0;

                //Expand all the parents of the selected item.
                //Count the number of items that are displayed before the selected item
                while (true)
                {
                    item.IsExpanded = true;

                    if (item.Parent != null)
                    {
                        itemIndexFromRoot += item.Parent.Items.IndexOf(item) + 1;
                        item = item.Parent;
                    }
                    else
                    {
                        break;
                    }
                }

                //Scroll down the window to make sure that the selected item is always visible when the window opens
                //there seems to be 1 pixel between each item so we add 2 pixels(top and bottom)
                var itemHeight = item.ParentControl.m_skinSelected.button.CalcSize(new UnityEngine.GUIContent(item.Header)).y + 2.0f;
                s_componentPicker.m_treeView.SetScrollViewPosition(new UnityEngine.Vector2(0.0f,
                                                                                           itemHeight * itemIndexFromRoot - UnityEngine.Screen.currentResolution.height / 4));
            }

            //Restore the tree's expansion status
            AkWwiseProjectInfo.GetData().ExpandedItems = expandedItemsBackUp;
        }