Ejemplo n.º 1
0
 private void ContentBrowserNewScene_ItemAfterChoose(ContentBrowser sender, ContentBrowser.Item item, ref bool handled)
 {
     if (item != null)
     {
         CreateScene(item);
     }
 }
Ejemplo n.º 2
0
        private void ObjectSettingsWindow_Load(object sender, EventArgs e)
        {
            //!!!!!так?

            if (WinFormsUtility.IsDesignerHosted(this))
            {
                return;
            }

            var items = objectsBrowser1.GetAllItems();

            if (items.Length != 0)
            {
                ContentBrowser.Item itemToSelect = null;
                if (Document != null && Document.SpecialMode == "ProjectSettingsUserMode" && projectSettingsUserModeLastSelectedTab != "")
                {
                    itemToSelect = items.FirstOrDefault(i => i.Text == projectSettingsUserModeLastSelectedTab);
                }
                if (itemToSelect == null)
                {
                    itemToSelect = items[0];
                }

                objectsBrowser1.SelectItems(new ContentBrowser.Item[] { itemToSelect });
            }

            timer1.Start();

            UpdateControlsLocation();
        }
Ejemplo n.º 3
0
        void CreateScene(ContentBrowser.Item item)
        {
            try
            {
                var prefix = VirtualDirectory.Exists("Scenes") ? @"Scenes\" : "";

                string fileName = null;
                for (int n = 1; ; n++)
                {
                    string f = prefix + string.Format(@"New{0}.scene", n > 1 ? n.ToString() : "");
                    if (!VirtualFile.Exists(f))
                    {
                        fileName = f;
                        break;
                    }
                }

                if (!string.IsNullOrEmpty(fileName))
                {
                    var realFileName = VirtualPathUtility.GetRealPathByVirtual(fileName);

                    var    template   = (Component_Scene.NewObjectSettingsScene.TemplateClass)item.Tag;
                    string name       = template.Name + ".scene";
                    var    sourceFile = VirtualPathUtility.GetRealPathByVirtual(@"Base\Tools\NewResourceTemplates\" + name);

                    //copy scene file

                    var text = File.ReadAllText(sourceFile);

                    var directoryName = Path.GetDirectoryName(realFileName);
                    if (!Directory.Exists(directoryName))
                    {
                        Directory.CreateDirectory(directoryName);
                    }

                    File.WriteAllText(realFileName, text);

                    //copy additional folder if exist
                    var sourceFolderPath = sourceFile + "_Files";
                    if (Directory.Exists(sourceFolderPath))
                    {
                        var destFolderPath = realFileName + "_Files";
                        IOUtility.CopyDirectory(sourceFolderPath, destFolderPath);
                    }

                    EditorAPI.SelectFilesOrDirectoriesInMainResourcesWindow(new string[] { realFileName });
                    EditorAPI.OpenFileAsDocument(realFileName, true, true);
                }
            }
            catch (Exception e)
            {
                EditorMessageBox.ShowWarning(e.Message);
                //Log.Warning( e.Message );
                return;
            }
        }
Ejemplo n.º 4
0
        private void contentBrowser1_ItemAfterChoose(ContentBrowser sender, ContentBrowser.Item item, ref bool handled)
        {
            if (WinFormsUtility.IsDesignerHosted(this))
            {
                return;
            }

            if (!IsReadyToCreate(out string dummy))
            {
                return;
            }
            ButtonCreateAndClose_Click(null, null);
        }
Ejemplo n.º 5
0
        private void contentBrowser1_ItemAfterChoose(ContentBrowser sender, ContentBrowser.Item item, ref bool handled)
        {
            if (WinFormsUtility.IsDesignerHosted(this))
            {
                return;
            }

            handled = true;
            if (IsReadyToImport(out _))
            {
                ButtonImport_Click(null, null);
            }
        }
Ejemplo n.º 6
0
        private void contentBrowser1_ItemAfterChoose(ContentBrowser sender, ContentBrowser.Item item, ref bool handled)
        {
            if (WinFormsUtility.IsDesignerHosted(this))
            {
                return;
            }

            if (!IsReadyToSelect())
            {
                return;
            }
            ButtonSelect_Click(null, null);
        }
Ejemplo n.º 7
0
 void CreateResource(ContentBrowser.Item item)
 {
     if (item.Tag as Component_Scene.NewObjectSettingsScene.TemplateClass != null)
     {
         CreateScene(item);
     }
     else if (item.Tag as string != null && item.Tag as string == "UIControl")
     {
         CreateUIControl();
     }
     else
     {
         SelectCreateResource();
     }
 }
Ejemplo n.º 8
0
        void UpdateSelectedType()
        {
            Metadata.TypeInfo newType = null;
            bool newTypeCanSelect     = false;

            ContentBrowser.Item item = null;
            if (contentBrowser1.SelectedItems.Length != 0)
            {
                item = contentBrowser1.SelectedItems[0];
            }

            if (item != null)
            {
                item.CalculateReferenceValue(null, MetadataManager.GetTypeOfNetType(typeof(Metadata.TypeInfo)),
                                             out string referenceValue, out bool canSet);

                if (canSet)
                {
                    if (!string.IsNullOrEmpty(referenceValue))
                    {
                        newType = (Metadata.TypeInfo)MetadataManager.GetValueByReference(
                            contentBrowser1.SetReferenceModeData.demandedType.GetNetType(), null, referenceValue);
                        newTypeCanSelect = true;
                    }
                    else
                    {
                        newTypeCanSelect = true;
                    }
                }

                //check can be selected
                if (newType != null && !creationData.initDemandedType.IsAssignableFrom(newType))
                {
                    newType          = null;
                    newTypeCanSelect = false;
                }
            }

            //change
            if (selectedType != newType || selectedTypeCanSelect != newTypeCanSelect)
            {
                selectedType          = newType;
                selectedTypeCanSelect = newTypeCanSelect;
                SelectedTypeChanged();
            }
        }
Ejemplo n.º 9
0
        void UpdateSelectedType()
        {
            Metadata.TypeInfo newType = null;

            ContentBrowser.Item item = null;
            if (contentBrowser1.SelectedItems.Length != 0)
            {
                item = contentBrowser1.SelectedItems[0];
            }

            if (item != null)
            {
                item.CalculateReferenceValue(null, MetadataManager.GetTypeOfNetType(typeof(Metadata.TypeInfo)),
                                             out string referenceValue, out bool canSet);

                if (!string.IsNullOrEmpty(referenceValue) && canSet)
                {
                    newType = (Metadata.TypeInfo)MetadataManager.GetValueByReference(
                        contentBrowser1.SetReferenceModeData.demandedType.GetNetType(), null, referenceValue);
                }

                //check can be selected
                if (newType != null)
                {
                    if (!MetadataManager.GetTypeOfNetType(typeof(Component)).IsAssignableFrom(newType) &&
                        !MetadataManager.GetTypeOfNetType(typeof(NewResourceType)).IsAssignableFrom(newType))
                    {
                        newType = null;
                    }
                }
            }

            //change
            if (selectedType != newType)
            {
                selectedType = newType;
                SelectedTypeChanged();
            }
        }
Ejemplo n.º 10
0
        public override bool AddItem(ContentBrowser.Item item)
        {
            //members with ShaderGenerationFunctionAttribute
            var memberItem = item as ContentBrowserItem_Member;

            if (memberItem != null)
            {
                if (memberItem.Member.GetCustomAttributes(typeof(ShaderGenerationFunctionAttribute)).Length != 0)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }

            //Component_ShaderTextureSample, Component_ShaderParameter
            var typeItem = item as ContentBrowserItem_Type;

            if (typeItem != null)
            {
                var netType = typeItem.Type.GetNetType();
                if (typeof(Component_ShaderTextureSample).IsAssignableFrom(netType) ||
                    typeof(Component_ShaderParameter).IsAssignableFrom(netType) ||
                    typeof(Component_ShaderScript).IsAssignableFrom(netType))
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }

            return(false);
        }
 private void ComponentsBrowser_ItemAfterChoose(ContentBrowser sender, ContentBrowser.Item item, ref bool handled)
 {
 }
		public virtual bool AddItem( ContentBrowser.Item item ) { return true; }
Ejemplo n.º 13
0
        //

        public ContentBrowserItem_CSharpProjectReferences(ContentBrowser owner, ContentBrowser.Item parent, string text)
            : base(owner, parent)
        {
            this.text = text;
        }
Ejemplo n.º 14
0
        //

        public ContentBrowserItem_Solution(ContentBrowser owner, ContentBrowser.Item parent)
            : base(owner, parent)
        {
        }
Ejemplo n.º 15
0
        void UpdateSelectedReference()
        {
            //!!!!не только компоненты?

            //!!!!multiselection
            ContentBrowser.Item item = null;
            if (contentBrowser1.SelectedItems.Length != 0)
            {
                item = contentBrowser1.SelectedItems[0];
            }

            string newSelection = null;
            bool   canSet       = false;

            if (item != null)
            {
                //!!!!multiselection?

                item.CalculateReferenceValue(setReferenceModeData.selectedComponents[0], setReferenceModeData.property.TypeUnreferenced, out newSelection, out canSet);

                //make relative file path
                if (kryptonCheckBoxCanMakeRelativeFilePath.Checked && !string.IsNullOrEmpty(newSelection))
                {
                    if (!newSelection.Contains(':'))                       //ignore references
                    {
                        var fromResource       = ComponentUtility.GetOwnedFileNameOfComponent(setReferenceModeData.selectedComponents[0]);
                        var fromResourceFolder = "";
                        if (!string.IsNullOrEmpty(fromResource))
                        {
                            fromResourceFolder = Path.GetDirectoryName(fromResource);
                        }

                        int commonChars = GetEqualPart(new string[] { fromResourceFolder, newSelection });

                        var path = "";

                        //go up (dots)
                        {
                            var c = fromResourceFolder.Substring(commonChars).Split(new char[] { '\\', '/' }, StringSplitOptions.RemoveEmptyEntries).Length;
                            for (int n = 0; n < c; n++)
                            {
                                path = Path.Combine(path, "..");
                            }
                        }

                        //go down
                        {
                            var s = newSelection.Substring(commonChars);
                            if (s.Length != 0 && (s[0] == '\\' || s[0] == '/'))
                            {
                                s = s.Substring(1);
                            }

                            //can't use Path.Combine, invalid character exception
                            if (path.Length != 0 && path[path.Length - 1] != '\\' && path[path.Length - 1] != '/')
                            {
                                path += "\\";
                            }
                            path += s;
                            //path = Path.Combine( path, s );
                        }

                        newSelection = "relative:" + path;
                    }
                }
            }

            //update
            selectedReference       = newSelection;
            selectedReferenceCanSet = canSet;
            UpdateSetButtons();
            UpdateTextBox();
            TextBoxSetError(false);
            ////change
            //if( string.Compare( selectedReference, newSelection ) != 0 )
            //{
            //	selectedReference = newSelection;
            //	selectedReferenceCanSet = canSet;
            //	SelectedReferenceChanged();
            //}
        }
Ejemplo n.º 16
0
 public ContentBrowserItem(ContentBrowser owner, ContentBrowser.Item parent, string text)
     : base(owner, parent, text)
 {
 }
Ejemplo n.º 17
0
        public static void CalculateReferenceValueForComponentItem(Component from, ContentBrowserItem_Component item, out string referenceValue, out char addSeparator)
        {
            Component to = item.Component;

            //different hierarchy
            if (from == null || from.ParentRoot != to.ParentRoot)
            {
                //if( canMakeRelativeFilePath && from != null )
                //	ReferenceUtility.CalculateCurrentFolderReference( from, to, "", out referenceValue, out addSeparator );
                //else
                ReferenceUtility.CalculateResourceReference(to, "", out referenceValue, out addSeparator);
                return;
            }

            //root:, this:
            {
                var referenceSelectionMode = GetReferenceSelectionModeInHierarchy(item);

                if (referenceSelectionMode == ContentBrowserItem_Component.ReferenceSelectionModeEnum.This)
                {
                    ReferenceUtility.CalculateThisReference(from, to, "", out referenceValue, out addSeparator);
                    return;
                }
                else if (referenceSelectionMode == ContentBrowserItem_Component.ReferenceSelectionModeEnum.Root)
                {
                    ReferenceUtility.CalculateRootReference(to, "", out referenceValue, out addSeparator);
                    return;
                }
            }

            //default
            {
                //_File
                //_Type
                //_Component

                var componentItemsStack = new List <ContentBrowserItem_Component>();
                ContentBrowser.Item firstTypeOrFileItem = null;
                {
                    ContentBrowser.Item current = item;
                    do
                    {
                        if (current is ContentBrowserItem_Component)
                        {
                            if (current.Parent != null)
                            {
                                componentItemsStack.Add((ContentBrowserItem_Component)current);
                            }
                        }
                        else if (current is ContentBrowserItem_Type || current is ContentBrowserItem_File)
                        {
                            firstTypeOrFileItem = current;
                            break;
                        }
                        else
                        {
                            Log.Fatal("ContentBrowserUtils: CalculateReferenceValueForComponentItem: Internal error.");
                        }

                        current = current.Parent;
                    } while(current != null);

                    componentItemsStack.Reverse();
                }

                var result = new StringBuilder();

                //start item
                if (firstTypeOrFileItem != null)
                {
                    //_File, _Type

                    var fileItem = firstTypeOrFileItem as ContentBrowserItem_File;
                    if (fileItem != null)
                    {
                        result.Append(VirtualPathUtility.GetVirtualPathByReal(fileItem.FullPath));
                    }

                    var typeItem = firstTypeOrFileItem as ContentBrowserItem_Type;
                    if (typeItem != null)
                    {
                        result.Append(typeItem.Type.Name);
                    }

                    addSeparator = '|';
                }
                else
                {
                    //_Component
                    result.Append("root:");
                    addSeparator = '\0';
                }

                //add path of components
                foreach (var componentItem in componentItemsStack)
                {
                    if (addSeparator != '\0')
                    {
                        result.Append(addSeparator);
                    }
                    result.Append(componentItem.Component.GetPathFromParent());
                    addSeparator = '\\';
                }

                referenceValue = result.ToString();
            }
        }
Ejemplo n.º 18
0
        public static void CalculateReferenceValueForMemberItem(Component from, Metadata.TypeInfo expectedType, ContentBrowserItem_Member item, out string referenceValue, out char addSeparator)
        {
            var memberItemsStack = new List <ContentBrowserItem_Member>();

            ContentBrowser.Item firstTypeOrFileOrComponentItem = null;
            {
                ContentBrowser.Item current = item;
                do
                {
                    if (current is ContentBrowserItem_Member)
                    {
                        memberItemsStack.Add((ContentBrowserItem_Member)current);
                    }
                    else if (current is ContentBrowserItem_Type || current is ContentBrowserItem_File || current is ContentBrowserItem_Component)
                    {
                        firstTypeOrFileOrComponentItem = current;
                        break;
                    }
                    else
                    {
                        Log.Fatal("ContentBrowserUtils: CalculateReferenceValueForMemberItem: Internal error.");
                    }

                    current = current.Parent;
                } while(current != null);

                memberItemsStack.Reverse();
            }

            var result = new StringBuilder();

            //char addSeparator;

            if (firstTypeOrFileOrComponentItem is ContentBrowserItem_Component)
            {
                //_Component
                var componentItem = (ContentBrowserItem_Component)firstTypeOrFileOrComponentItem;
                CalculateReferenceValueForComponentItem(from, componentItem, out string referenceValue2, out addSeparator);
                result.Append(referenceValue2);
            }
            else
            {
                //_File, _Type

                var fileItem = firstTypeOrFileOrComponentItem as ContentBrowserItem_File;
                if (fileItem != null)
                {
                    result.Append(VirtualPathUtility.GetVirtualPathByReal(fileItem.FullPath));
                }

                var typeItem = firstTypeOrFileOrComponentItem as ContentBrowserItem_Type;
                if (typeItem != null)
                {
                    result.Append(typeItem.Type.Name);
                }

                addSeparator = '|';
            }

            //add members path
            foreach (var memberItem in memberItemsStack)
            {
                if (addSeparator != '\0')
                {
                    result.Append(addSeparator);
                }

                var member = memberItem.Member;
                if (expectedType != null && MetadataManager.GetTypeOfNetType(typeof(ReferenceValueType_Member)).IsAssignableFrom(expectedType))
                {
                    result.Append(member.Signature);
                }
                else
                {
                    result.Append(member.Name);
                }

                addSeparator = '\\';
            }

            referenceValue = result.ToString();
            //return result.ToString();
        }
Ejemplo n.º 19
0
        void RibbonButtonsUpdateProperties()
        {
            //update tabs visibility
            {
                Metadata.TypeInfo selectedType = null;
                {
                    var obj = workspaceController.SelectedDocumentWindow?.ObjectOfWindow;
                    if (obj != null)
                    {
                        selectedType = MetadataManager.MetadataGetType(obj);
                    }
                }
                foreach (var ribbonTab in kryptonRibbon.RibbonTabs)
                {
                    var tab = ribbonTab.Tag as EditorRibbonDefaultConfiguration.Tab;
                    if (tab != null)
                    {
                        bool visible = true;
                        if (tab.VisibleOnlyForType != null && visible)
                        {
                            visible = selectedType != null && tab.VisibleOnlyForType.IsAssignableFrom(selectedType);
                        }
                        if (tab.VisibleCondition != null && visible)
                        {
                            visible = tab.VisibleCondition();
                        }
                        if (visible && !EditorUtility.PerformRibbonTabVisibleFilter(tab))
                        {
                            visible = false;
                        }

                        if (ribbonTab.Visible != visible)
                        {
                            ribbonLastSelectedTabTypeByUser_DisableUpdate = true;
                            ribbonTab.Visible = visible;
                            ribbonLastSelectedTabTypeByUser_DisableUpdate = false;
                        }

                        if (ribbonTab.Visible && ribbonLastSelectedTabTypeByUser != "" && ribbonLastSelectedTabTypeByUser == tab.Type)
                        {
                            ribbonLastSelectedTabTypeByUser_DisableUpdate = true;
                            kryptonRibbon.SelectedTab = ribbonTab;
                            ribbonLastSelectedTabTypeByUser_DisableUpdate = false;
                        }
                    }
                }
            }

            //update controls
            foreach (var ribbonTab in kryptonRibbon.RibbonTabs)
            {
                foreach (var ribbonGroup in ribbonTab.Groups)
                {
                    foreach (var groupItem in ribbonGroup.Items)
                    {
                        var tripple = groupItem as KryptonRibbonGroupTriple;
                        if (tripple != null)
                        {
                            foreach (var trippleItem in tripple.Items)
                            {
                                //Button, DropDown
                                var button = trippleItem as KryptonRibbonGroupButton;
                                if (button != null)
                                {
                                    //sub group
                                    if (button.Tag as string == "SubGroup" && button.KryptonContextMenu != null)
                                    {
                                        RibbonSubGroupUpdateItemsRecursive(button.KryptonContextMenu.Items, out var existsEnabled);

                                        //disable group when all items are disabled
                                        button.Enabled = existsEnabled;
                                    }

                                    //action
                                    var action = button.Tag as EditorAction;
                                    if (action != null)
                                    {
                                        var state = EditorAPI.EditorActionGetState(EditorAction.HolderEnum.RibbonQAT, action);

                                        button.Enabled = state.Enabled;

                                        //кнопка меняет тип, т.к. в действиях не указывается может ли она быть Checked.
                                        //сделано так, что меняет при первом изменении isChecked.
                                        if (state.Checked && action.ActionType == EditorAction.ActionTypeEnum.Button)
                                        {
                                            button.ButtonType = GroupButtonType.Check;
                                        }

                                        button.Checked = state.Checked;

                                        if (!EditorUtility.PerformEditorActionVisibleFilter(action))
                                        {
                                            button.Visible = false;
                                        }
                                    }
                                }

                                //Slider
                                var slider = trippleItem as KryptonRibbonGroupSlider;
                                if (slider != null)
                                {
                                    var action = slider.Tag as EditorAction;
                                    if (action != null)
                                    {
                                        var lastValue = action.Slider.Value;

                                        var state = EditorAPI.EditorActionGetState(EditorAction.HolderEnum.RibbonQAT, action);

                                        slider.Enabled = state.Enabled;
                                        if (lastValue != action.Slider.Value)
                                        {
                                            slider.Control.SetValue(action.Slider.Value);
                                            //trackBar.Value = action.Slider.Value;
                                        }

                                        if (!EditorUtility.PerformEditorActionVisibleFilter(action))
                                        {
                                            slider.Visible = false;
                                        }
                                    }
                                }

                                ////ComboBox
                                //var comboBox = trippleItem as KryptonRibbonGroupComboBox;
                                //if( comboBox != null )
                                //{
                                //	var action = comboBox.Tag as EditorAction;
                                //	if( action != null )
                                //	{
                                //		var lastItems = action.ComboBox.Items;
                                //		var lastSelectedIndex = action.ComboBox.SelectedIndex;

                                //		var state = EditorAPI.GetEditorActionState( EditorAction.HolderEnum.RibbonQAT, action );

                                //		comboBox.Enabled = state.Enabled;

                                //		if( !action.ComboBox.Items.SequenceEqual( lastItems ) )
                                //		{
                                //			var oldSelectedIndex = comboBox.SelectedIndex;

                                //			comboBox.Items.Clear();
                                //			foreach( var item in action.ComboBox.Items )
                                //				comboBox.Items.Add( item );

                                //			if( oldSelectedIndex >= 0 && oldSelectedIndex < comboBox.Items.Count )
                                //				comboBox.SelectedIndex = oldSelectedIndex;
                                //			else if( comboBox.Items.Count != 0 )
                                //				comboBox.SelectedIndex = 0;
                                //		}
                                //		if( lastSelectedIndex != action.ComboBox.SelectedIndex )
                                //			comboBox.SelectedIndex = action.ComboBox.SelectedIndex;
                                //	}
                                //}

                                //ListBox
                                var listBox = trippleItem as KryptonRibbonGroupListBox;
                                if (listBox != null)
                                {
                                    var action = listBox.Tag as EditorAction;
                                    if (action != null)
                                    {
                                        var lastItems         = action.ListBox.Items;
                                        var lastSelectedIndex = action.ListBox.SelectedIndex;

                                        var state = EditorAPI.EditorActionGetState(EditorAction.HolderEnum.RibbonQAT, action);

                                        //!!!!не listBox2?
                                        listBox.Enabled = state.Enabled;

                                        var browser = listBox.Control.contentBrowser1;

                                        //update items
                                        if (!action.ListBox.Items.SequenceEqual(lastItems))
                                        {
                                            listBox.SetItems(action.ListBox.Items);
                                        }

                                        //update selected item
                                        if (action.ListBox.SelectIndex != null)
                                        {
                                            int selectIndex = action.ListBox.SelectIndex.Value;

                                            var itemToSelect = browser.Items.FirstOrDefault(i => (int)i.Tag == selectIndex);
                                            if (itemToSelect != null)
                                            {
                                                var toSelect = new ContentBrowser.Item[] { itemToSelect };
                                                if (!toSelect.SequenceEqual(browser.SelectedItems))
                                                {
                                                    browser.SelectItems(toSelect);
                                                }
                                            }
                                            else
                                            {
                                                if (browser.SelectedItems.Length != 0)
                                                {
                                                    browser.SelectItems(null);
                                                }
                                            }

                                            action.ListBox.SelectIndex = null;
                                        }

                                        if (!EditorUtility.PerformEditorActionVisibleFilter(action))
                                        {
                                            listBox.Visible = false;
                                        }

                                        //{
                                        //	int selectIndex = action.ListBox.SelectedIndex;
                                        //	int currentSelectedIndex = -1;
                                        //	if( browser.SelectedItems.Length == 1 )
                                        //		currentSelectedIndex = (int)browser.SelectedItems[ 0 ].Tag;
                                        //	//if( browser.SelectedItems.Length == 1 )
                                        //	//	currentSelectedIndex = browser.RootItems.IndexOf( browser.SelectedItems[ 0 ] );

                                        //	if( selectIndex != currentSelectedIndex )
                                        //	{
                                        //		var itemToSelect = browser.Items.FirstOrDefault( i => (int)i.Tag == selectIndex );
                                        //		if( itemToSelect != null )
                                        //			browser.SelectItems( new ContentBrowser.Item[] { itemToSelect } );
                                        //		else
                                        //			browser.SelectItems( null );
                                        //	}
                                        //}

                                        //!!!!?
                                        //if( lastSelectedIndex != action.ListBox.SelectedIndex )
                                        //{
                                        //	if(browser.Items
                                        //	browser.SelectItems( new ContentBrowser.Item[] { items[ 0 ] } );

                                        //	//browser.SelectedIndex = action.ListBox.SelectedIndex;
                                        //}
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 20
0
        //!!!!new

        public static (Metadata.TypeInfo objectType, string referenceToObject) GetObjectToCreateByContentBrowserItem(ContentBrowser.Item item)
        {
            Metadata.TypeInfo objectType        = null;
            string            referenceToObject = "";
            //string memberFullSignature = "";
            //Component createNodeWithComponent = null;

            //!!!!не все итемы можно создать.

            //_Type
            var typeItem = item as ContentBrowserItem_Type;

            if (typeItem != null)
            {
                var type = typeItem.Type;

                //!!!!генериковому нужно указать типы

                if (MetadataManager.GetTypeOfNetType(typeof(Component)).IsAssignableFrom(type) && !type.Abstract)
                {
                    objectType = type;
                    //referenceToObject = objectType.Name;
                }
            }

            //!!!!
            //var memberItem = item as ContentBrowserItem_Member;
            //if( memberItem != null )
            //{
            //	var member = memberItem.Member;

            //	var type = member.Creator as Metadata.TypeInfo;
            //	if( type != null )
            //		memberFullSignature = string.Format( "{0}|{1}", type.Name, member.Signature );
            //}

            //_File
            var fileItem = item as ContentBrowserItem_File;

            if (fileItem != null && !fileItem.IsDirectory)
            {
                //!!!!не делать предпросмотр для сцены, т.к. долго. что еще?
                var ext = Path.GetExtension(fileItem.FullPath);
                if (ResourceManager.GetTypeByFileExtension(ext) != null)
                {
                    var res  = ResourceManager.GetByName(VirtualPathUtility.GetVirtualPathByReal(fileItem.FullPath));
                    var type = res?.PrimaryInstance?.ResultComponent?.GetProvidedType();
                    if (type != null)
                    {
                        objectType        = type;
                        referenceToObject = res.Name;
                    }
                }
            }

            //_Component
            var componentItem = item as ContentBrowserItem_Component;

            if (componentItem != null)
            {
                var component = componentItem.Component;

                if (component.ParentRoot.HierarchyController != null &&
                    component.ParentRoot.HierarchyController.CreatedByResource.InstanceType == Resource.InstanceType.Resource)
                {
                    objectType = component.GetProvidedType();
                    if (objectType != null)
                    {
                        referenceToObject = objectType.Name;
                    }
                }
                //else
                //{
                //if( Scene.ParentRoot == component.ParentRoot )
                //{
                //!!!!

                ////add node with component
                //createNodeWithComponent = component;
                //}
                //}
            }

            return(objectType, referenceToObject);
        }
Ejemplo n.º 21
0
 private void ObjectsBrowser1_OverrideItemText(ContentBrowser sender, ContentBrowser.Item item, ref string text)
 {
     text = EditorLocalization.Translate("ProjectSettings.Page", text);
 }
Ejemplo n.º 22
0
 private void objectsBrowser1_ItemAfterChoose(ContentBrowser sender, ContentBrowser.Item item, ref bool handled)
 {
 }