public void SetInitialValueOfField(string targetField) { object obj = null; FieldInfo fi = GetFieldInfo(targetField, out obj); if (obj != null) { if (fi.FieldType.Equals(typeof(Single)) || fi.FieldType.Equals(typeof(Double)) || fi.FieldType.Equals(typeof(Int32)) || fi.FieldType.Equals(typeof(UInt32))) { Debug.Log("Field type is: " + fi.FieldType.Name); if (m_startState == PartModule.StartState.Editor) { TweakableParamGUI.GetInstance().CheckClear(); TweakableParamGUIItem item = new TweakableParamGUIItem(TweakableParamGUI.GetInstance(), this); if (tweakedValue == -1.0f) { tweakedValue = Convert.ToSingle(fi.GetValue(obj)); Debug.Log("Field is: " + tweakedValue.ToString()); } if (this.parentModule != null) { this.parentModule.UpdateTweakedValue(this); } } else { TweakableParamGUI.GetInstance().ClearGUIItem(); if (tweakedValue > maxValue) tweakedValue = maxValue; if (tweakedValue < minValue) tweakedValue = minValue; Debug.Log(String.Format("Setting tweakable parameter: {0} to {1}", fi.Name, tweakedValue)); if (!setOnlyOnLaunchPad || ((int)m_startState & (int)(PartModule.StartState.PreLaunch)) != 0) fi.SetValue(obj, Convert.ChangeType(tweakedValue, fi.FieldType)); } } else { // Float curve. Debug.Log("Field type is: " + fi.FieldType.Name); if (m_startState == PartModule.StartState.Editor) { TweakableParamGUI.GetInstance().CheckClear(); TweakableParamGUIItem item = new TweakableParamGUIItem(TweakableParamGUI.GetInstance(), this); if (tweakedCurve == null) { Debug.Log("Starting analyzing FloatCurve."); tweakedCurve = GetKeysFromFloatCurve((FloatCurve)fi.GetValue(obj)); } if (this.parentModule != null) { this.parentModule.UpdateTweakedValue(this); } } else { TweakableParamGUI.GetInstance().ClearGUIItem(); Debug.Log(String.Format("Setting tweakable parameter: {0} to {1}", fi.Name, tweakedCurve)); if (!setOnlyOnLaunchPad || ((int)m_startState & (int)(PartModule.StartState.PreLaunch)) != 0) { if (tweakedCurve == null) { fi.SetValue(obj, Convert.ChangeType(tweakedValue, fi.FieldType)); } else { FloatCurve newFloatCurve = new FloatCurve(); for (int i = 0; i < tweakedCurve.Count / 2; ++i) newFloatCurve.Add(tweakedCurve[i * 2], tweakedCurve[i * 2 + 1]); fi.SetValue(obj, newFloatCurve); } } } } } }
public void UnregisterGUIItem(TweakableParamGUIItem item) { if (m_guiItems.Contains(item)) m_guiItems.Remove(item); if (m_guiItems.Count == 0) DeleteGUI(); Part controllerPart = null; if (item.m_controller is ModuleTweakableParam) controllerPart = (item.m_controller as ModuleTweakableParam).part; else if (item.m_controller is ModuleTweakableSubParam) controllerPart = (item.m_controller as ModuleTweakableSubParam).parentModule.part; foreach (TweakableParamGUIGroup group in m_guiGroups) { if (group.m_part == controllerPart) { // Already has a group of the same part. group.m_guiItems.Remove(item); if (group.m_guiItems.Count == 0) { m_guiGroups.Remove(group); } return; } } }
public void SetInitialValueOfField(string targetField) { object obj = null; FieldInfo fi = GetFieldInfo(targetField, out obj); if (obj != null) { Debug.Log("Field type is: " + fi.FieldType.Name); if (m_startState == StartState.Editor) { TweakableParamGUI.GetInstance().CheckClear(); TweakableParamGUIItem item = new TweakableParamGUIItem(TweakableParamGUI.GetInstance(), this); if (tweakedValue == -1.0f) { Debug.Log("Field is: " + fi.GetValue(obj).ToString()); tweakedValue = Convert.ToSingle(fi.GetValue(obj)); } } else { TweakableParamGUI.GetInstance().ClearGUIItem(); if (tweakedValue > maxValue) tweakedValue = maxValue; if (tweakedValue < minValue) tweakedValue = minValue; Debug.Log(String.Format("Setting tweakable parameter: {0} to {1}", fi.Name, tweakedValue)); if (!setOnlyOnLaunchPad || ((int)m_startState & (int)(StartState.PreLaunch)) != 0) fi.SetValue(obj, Convert.ChangeType(tweakedValue, fi.FieldType)); } } }
public void RegisterGUIItem(TweakableParamGUIItem item) { if (m_guiItems.Count == 0) AddGUI(); if (m_guiItems.Contains(item)) return; m_guiItems.Add(item); Part controllerPart = null; if (item.m_controller is ModuleTweakableParam) controllerPart = (item.m_controller as ModuleTweakableParam).part; else if (item.m_controller is ModuleTweakableSubParam) controllerPart = (item.m_controller as ModuleTweakableSubParam).parentModule.part; foreach (TweakableParamGUIGroup group in m_guiGroups) { if (group.m_part == controllerPart) { // Already has a group of the same part. group.m_guiItems.Add(item); return; } } TweakableParamGUIGroup newGroup = new TweakableParamGUIGroup(this, controllerPart); m_guiGroups.Add(newGroup); newGroup.m_guiItems.Add(item); }