Пример #1
0
        protected override Data.OverloadSetting GetOverload(Type neosType)
        {
            NodeOverload typeOverload = neosType.GetCustomAttribute <NodeOverload>();

            if (Overloads.TryGetValue(neosType.FullName, out Data.OverloadSetting overloadSetting))
            {
                return(overloadSetting);
            }
            if (typeOverload != null)
            {
                if (Overloads.TryGetValue(typeOverload.FunctionName, out overloadSetting))
                {
                    return(overloadSetting);
                }
                Type foundTypeOverload = LogixHelper.GetMatchingOverload(typeOverload.FunctionName, null, new Func <Type, int>(GetTypeRank));
                if (foundTypeOverload != null)
                {
                    OverloadCache.Add(typeOverload.FunctionName);
                    return(new Data.OverloadSetting {
                        OverloadType = foundTypeOverload?.FullName
                    });
                }
            }
            return(new Data.OverloadSetting {
                OverloadType = neosType.FullName
            });
        }
Пример #2
0
        protected void PackLogix()
        {
            Slot      logixSlot = mainSlot.FindChild(s => s.Name == "Search logix");
            LogixNode node      = logixSlot.GetComponentInChildrenOrParents <LogixNode>();

            LogixHelper.MoveUnder(node, logixSlot, true);
            node.RemoveAllLogixBoxes();
        }
Пример #3
0
        public void MakeVariableSelector()
        {
            MethodInfo privMethod = logixNodeSelector.GetType().GetMethod("BuildUI", BindingFlags.NonPublic | BindingFlags.Instance);
            //privMethod.Invoke(logixNodeSelector,new object[] { "LogiX/Variables" });
            //FieldInfo fi = typeof(LogixNodeSelector).GetField("_container", BindingFlags.NonPublic | BindingFlags.Instance);
            //Slot container = (Slot)fi.GetValue(logixNodeSelector);
            Slot variableNodesContainer  = nodesContainerSlot[0][0][0];
            Slot typeSelectTemplate      = mainSlot.AddSlot("Type select template");
            Slot variableNodesContainer2 = variableNodesContainer.Duplicate();

            variableNodesContainer2.AttachComponent <DynamicVariableSpace>();
            DynamicValueVariable <string> genericType = variableNodesContainer2.AttachComponent <DynamicValueVariable <string> >();

            genericType.VariableName.Value = "GenericType";
            variableNodesContainer2.SetParent(typeSelectTemplate);
            variableNodesContainer2[0].Destroy();
            for (int i = 0; i < variableNodesContainer2.ChildrenCount; i++)
            {
                Debug.Log(variableNodesContainer2[i]);
                Slot s                    = variableNodesContainer2[i];
                var  buttonRelay          = s.GetComponent <ButtonRelay <string> >();
                ValueField <string> store = s.AttachComponent <ValueField <string> >();
                Debug.Log(buttonRelay.Argument.Value);
                //store.Value.Value = LogixHelper.GetNodeVisualType(WorkerManager.GetType(buttonRelay.Argument.Value)).ToString();

                Type        type = WorkerManager.GetType(buttonRelay.Argument.Value);
                Image       componentInChildren = s.GetComponentInChildren <Image>((Predicate <Image>)null, false);
                System.Type nodeVisualType      = LogixHelper.GetNodeVisualType(type);
                componentInChildren.Sprite.Target        = (IAssetProvider <Sprite>)LogixHelper.GetTypeSprite(this.World, nodeVisualType.GetDimensions(), typeof(Delegate).IsAssignableFrom(nodeVisualType));
                componentInChildren.PreserveAspect.Value = false;

                store.Value.Value = BaseX.TypeHelper.TryGetAlias(type) ?? type.FullName;
                DynamicValueVariable <string> dynamicvar = s.AttachComponent <DynamicValueVariable <string> >();
                dynamicvar.VariableName.Value = "GenericType";
                FormatString formatString = s.AttachComponent <FormatString>();
                formatString.Parameters.Add();
                formatString.Parameters.Add();
                Cast_string_To_object cast1 = s.AttachComponent <Cast_string_To_object>();
                cast1.In.Value = dynamicvar.Value.ReferenceID;
                Cast_string_To_object cast2 = s.AttachComponent <Cast_string_To_object>();
                cast2.In.Value = store.Value.ReferenceID;
                formatString.Parameters[0].Value = cast1.ReferenceID;
                formatString.Parameters[1].Value = cast2.ReferenceID;
                ValueField <string> format = s.AttachComponent <ValueField <string> >();
                format.Value.Value        = "{0}[{1}]";
                formatString.Format.Value = format.Value.ReferenceID;
                DriverNode <string> driver = s.AttachComponent <DriverNode <string> >();
                driver.Source.Value       = formatString.Str.ReferenceID;
                driver.DriveTarget.Target = buttonRelay.Argument;
            }
            //this.RunSynchronously(() =>
            //{
            //    variableNodesContainer2.ForeachChild((Action<FrooxEngine.Slot>) (s =>
            //    {
            //        Debug.Log(s);
            //        //var buttonRelay = s.GetComponent<ButtonRelay<string>>();
            //        //Debug.Log(buttonRelay.ToString());
            //        //ValueField<string> store = s.AttachComponent<ValueField<string>>();
            //        //store.Value.Value = LogixHelper.GetNodeVisualType(WorkerManager.GetType(buttonRelay.Argument.Value)).ToString();
            //        //store.Value.Value = Type.GetType(buttonRelay.Argument.Value).GetContentType().ToString();
            //        //Debug.Log(buttonRelay.Argument.Value);
            //        //store.Value.Value = buttonRelay.Argument;
            //        //store.Value.Value = typeof(bool2).ToString();
            //        //DynamicValueVariable<string> dynamicvar = s.AttachComponent<DynamicValueVariable<string>>();
            //        //dynamicvar.VariableName.Value = "GenericType";
            //        //FormatString formatString = s.AttachComponent<FormatString>();
            //        //formatString.Parameters.Add();
            //        //formatString.Parameters.Add();
            //        //Cast_string_To_object cast1 = s.AttachComponent<Cast_string_To_object>();
            //        //cast1.In.Value = dynamicvar.Value.ReferenceID;
            //        //Cast_string_To_object cast2 = s.AttachComponent<Cast_string_To_object>();
            //        //cast2.In.Value = store.Value.ReferenceID;
            //        //formatString.Parameters[0].Value = cast1.ReferenceID;
            //        //formatString.Parameters[1].Value = cast2.ReferenceID;
            //        //ValueField<string> format = s.AttachComponent<ValueField<string>>();
            //        //format.Value.Value = "{0}[{1}]";
            //        //formatString.Format.Value = format.Value.ReferenceID;
            //        //DriverNode<string> driver = s.AttachComponent<DriverNode<string>>();
            //        //driver.Source.Value = formatString.Str.ReferenceID;
            //        //driver.DriveTarget.Target = buttonRelay.Argument;
            //    }));
            //});
            privMethod.Invoke(logixNodeSelector, new object[] { "LogiX", false });
        }
Пример #4
0
        public void buildLayer(string path, Slot slot)
        {
            int    depth = path.Count(f => f == '/');
            string top_level;

            if (path == "")
            {
                top_level = "";
            }
            else
            {
                top_level = path.Split('/')[1];
            }
            //string indentation_string = new string(':', depth) + (depth>0 ? " " : "");
            string indentation_string = new string(':', depth) + " ";
            CategoryNode <System.Type> categoryNode;

            if (string.IsNullOrEmpty(path) || path == "/")
            {
                categoryNode = WorkerInitializer.ComponentLibrary;
            }
            else
            {
                categoryNode = WorkerInitializer.ComponentLibrary.GetSubcategory(path);
            }
            foreach (CategoryNode <System.Type> subcategory in categoryNode.Subcategories.ToList())
            {
                string text     = subcategory.Name;
                string path_str = path + "/" + subcategory.Name;
                if (top_level == "LogiX")
                {
                    logix_string += indentation_string + text + "\n";
                }
                else
                {
                    components_string += indentation_string + text + "\n";
                }
                if (top_level == "LogiX")
                {
                    logix_string2 += text + sep + text + sep + path + sep + sep + "folder\n";
                }
                else
                {
                    components_string2 += text + sep + text + sep + path_str + sep + path + sep + sep + "folder\n";
                }
                Debug.Log(path_str);
                if (subcategory.Name != "LogiX")
                {
                    Slot childrenSlot = buildLayerUI(text, path_str, slot, depth);
                    buildLayer(path_str, childrenSlot);
                }
                //else
                //{
                //    addToOutput(str);
                //}
            }
            foreach (System.Type element in categoryNode.Elements.ToList())
            {
                if (top_level == "LogiX")
                //if (false)
                {
                    //Debug.Log("HIIIII");
                    string overloadName = LogixHelper.GetOverloadName(element);
                    if (overloadName == null || hashSet.Add(overloadName))
                    {
                        string niceName = element.GetNiceName("<", ">");
                        string fullName = element.FullName;
                        Debug.Log(niceName);
                        if (overloadName != null)
                        {
                            logix_string += indentation_string + overloadName + ":" + fullName + "\n";
                        }
                        //else components_string += indentation_string + niceName + "\n";
                        else
                        {
                            logix_string += indentation_string + niceName + ":" + fullName + "\n";
                        }

                        if (overloadName != null)
                        {
                            logix_string2 += LogixHelper.GetNodeName(element) + sep + overloadName + sep + fullName + sep + path + sep + sep + "normal" + "\n";
                        }
                        //else components_string += indentation_string + niceName + "\n";
                        else
                        {
                            if (element.IsGenericTypeDefinition)
                            {
                                logix_string2 += LogixHelper.GetNodeName(element) + sep + niceName + sep + fullName + sep + path + sep + sep + "generic\n";
                            }
                            else
                            {
                                logix_string2 += LogixHelper.GetNodeName(element) + sep + niceName + sep + fullName + sep + path + sep + sep + "normal\n";
                            }
                        }
                    }
                }
                else
                {
                    string niceName = element.GetNiceName("<", ">");
                    string fullName = element.FullName;
                    Debug.Log(niceName);
                    components_string += indentation_string + niceName + ":" + fullName + "\n";
                    if (element.IsGenericTypeDefinition)
                    {
                        components_string2 += niceName + sep + niceName + sep + fullName + sep + path + sep + sep + "generic" + "\n";
                    }
                    else
                    {
                        components_string2 += niceName + sep + niceName + sep + fullName + sep + path + sep + sep + "normal" + "\n";
                    }
                }
            }
        }