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 }); }
protected void PackLogix() { Slot logixSlot = mainSlot.FindChild(s => s.Name == "Search logix"); LogixNode node = logixSlot.GetComponentInChildrenOrParents <LogixNode>(); LogixHelper.MoveUnder(node, logixSlot, true); node.RemoveAllLogixBoxes(); }
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 }); }
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"; } } } }