public ReflectedObjectGUINode(ReflectedObjectGUINode parent, AddTweakableParamGUI gui, FieldInfo fieldInfo, string field, bool isLeaf, string inputMin, string inputMax, string inputStep, bool setOnlyOnLaunchPad) { m_parent = parent; m_gui = gui; m_fieldInfo = fieldInfo; m_field = field; m_isLeaf = isLeaf; if (inputMin != null) m_inputMin = inputMin; if (inputMax != null) m_inputMax = inputMax; if (inputStep != null) m_inputStep = inputStep; m_setOnlyOnLaunchPad = setOnlyOnLaunchPad; }
private void GenerateGUINodes() { if (m_selectedPart == null) return; //Debug.Log("Generating nodes..."); FieldInfo[] fields = m_selectedPart.GetType().GetFields(); foreach (FieldInfo fi in fields) { //Debug.Log("Iterating all fields: " + fi.FieldType.Name + " " + fi.Name + " (" + (fi.IsPublic ? "public" : "non-public") + ")"); if (fi.IsPublic == false) { //Debug.Log("Non-public field, skipping..."); continue; } if ( fi.FieldType.Equals(typeof(Double)) || fi.FieldType.Equals(typeof(Single)) ) { // This is a valid node. ReflectedObjectGUINode node = new ReflectedObjectGUINode(null, this, fi, fi.Name, true, "0.0", "1.0", "0.1", false); RegisterGUINode(node); } else if ( fi.FieldType.Equals(typeof(UInt32)) || fi.FieldType.Equals(typeof(Int32)) ) { // This is a valid node. ReflectedObjectGUINode node = new ReflectedObjectGUINode(null, this, fi, fi.Name, true, "0", "10", "1", false); RegisterGUINode(node); } else if ( fi.FieldType.Equals(typeof(FloatCurve)) ) { // This is a float-curve node. Debug.Log("Float curve detected."); ReflectedCurveGUINode node = new ReflectedCurveGUINode(null, this, fi, fi.Name, true, "1", "-1", "0", false); RegisterGUINode(node); } } for (int i = 0; i < m_selectedPart.Modules.Count; ++i) { PartModule partModule = m_selectedPart.Modules.GetModule(i); //Debug.Log("Iterating all part modules: " + partModule.GetType().Name); string partModuleTypeName = partModule.GetType().Name; if (partModuleTypeName != "ModuleTweakableParam") { // This is a valid node. ReflectedObjectGUINode node = new ReflectedObjectGUINode(null, this, null, "Module(" + partModule.GetType().Name + ")", false, null, null, null, false); FieldInfo[] moduleFields = partModule.GetType().GetFields(); foreach (FieldInfo fi in moduleFields) { //Debug.Log("Iterating all fields: " + fi.FieldType.ToString() + " " + fi.Name + " (" + (fi.IsPublic ? "public" : "non-public") + ")"); if (fi.IsPublic == false) { //Debug.Log("Non-public field, skipping..."); continue; } if ( fi.FieldType.Equals(typeof(Double)) || fi.FieldType.Equals(typeof(Single)) ) { // This is a valid node. ReflectedObjectGUINode subNode = new ReflectedObjectGUINode(node, this, fi, fi.Name, true, "0.0", "1.0", "0.1", false); node.m_subNodes.Add(subNode); } else if ( fi.FieldType.Equals(typeof(UInt32)) || fi.FieldType.Equals(typeof(Int32)) ) { // This is a valid node. ReflectedObjectGUINode subNode = new ReflectedObjectGUINode(node, this, fi, fi.Name, true, "0", "10", "1", false); node.m_subNodes.Add(subNode); } else if ( fi.FieldType.Equals(typeof(FloatCurve)) ) { // This is a float-curve node. Debug.Log("Float curve detected."); ReflectedCurveGUINode subNode = new ReflectedCurveGUINode(node, this, fi, fi.Name, true, "1", "-1", "0", false); node.m_subNodes.Add(subNode); } } RegisterGUINode(node); } } for (int i = 0; i < m_selectedPart.Resources.Count; ++i) { PartResource partResource = m_selectedPart.Resources.list[i]; string resourceName = partResource.resourceName; //Debug.Log("Iterating all part resources: " + resourceName); // This is a valid node. ReflectedObjectGUINode node = new ReflectedObjectGUINode(null, this, null, "Resource(" + resourceName + ")", false, null, null, null, false); FieldInfo[] resourceFields = partResource.GetType().GetFields(); foreach (FieldInfo fi in resourceFields) { //Debug.Log("Iterating all fields: " + fi.FieldType.Name + " " + fi.Name); if (fi.IsPublic == false) { //Debug.Log("Non-public field, skipping..."); continue; } if ( fi.FieldType.Equals(typeof(Double)) || fi.FieldType.Equals(typeof(Single)) ) { if (fi.Name == "amount") { // This is a special node. double maxValue = partResource.maxAmount; double stepValue = maxValue / 10.0; ReflectedObjectGUINode subNode = new ReflectedObjectGUINode(node, this, fi, fi.Name, true, "0.0", maxValue.ToString(), stepValue.ToString(), true); node.m_subNodes.Add(subNode); } else if (fi.Name == "maxAmount") { // This is a special node. double maxValue = partResource.maxAmount; double stepValue = maxValue / 10.0; ReflectedObjectGUINode subNode = new ReflectedObjectGUINode(node, this, fi, fi.Name, true, "0.0", maxValue.ToString(), stepValue.ToString(), false); node.m_subNodes.Add(subNode); } else { // This is a valid node. ReflectedObjectGUINode subNode = new ReflectedObjectGUINode(node, this, fi, fi.Name, true, "0.0", "1.0", "0.1", false); node.m_subNodes.Add(subNode); } } } RegisterGUINode(node); } }
public ReflectedCurveGUINode(ReflectedObjectGUINode parent, AddTweakableParamGUI gui, FieldInfo fieldInfo, string field, bool isLeaf, string inputMin, string inputMax, string inputStep, bool setOnlyOnLaunchPad) : base(parent, gui, fieldInfo, field, isLeaf, inputMin, inputMax,inputStep, setOnlyOnLaunchPad) { inputMin = "0"; inputMax = "0"; inputStep = "0"; setOnlyOnLaunchPad = false; }
public void RegisterGUINode(ReflectedObjectGUINode node) { if (m_guiNodes.Count == 0) AddGUI(); if (m_guiNodes.Contains(node)) return; m_guiNodes.Add(node); }