private void DrawLines(Part draw, WingStats wing, Color color, bool drawTransform = true) { Vector3 leadRoot = draw.transform.position + draw.transform.TransformDirection(wing.rootMidChordOffset + Vector3.up * wing.rootChordLength / 2); Vector3 trailRoot = draw.transform.position + draw.transform.TransformDirection(wing.rootMidChordOffset - Vector3.up * wing.rootChordLength / 2); Vector3 leadTip = draw.transform.position + draw.transform.TransformDirection(wing.tipMidChordOffset + Vector3.up * wing.tipChordLength / 2); Vector3 trailTip = draw.transform.position + draw.transform.TransformDirection(wing.tipMidChordOffset - Vector3.up * wing.tipChordLength / 2); DrawTools.DrawLine(leadRoot, trailRoot, color); DrawTools.DrawLine(leadTip, trailTip, color); if (drawTransform) { DrawTools.DrawTransform(draw.transform, 0.25f); } }
private DialogGUIVerticalLayout DrawWingSettings(float labelWidth, WingStats wing, bool alwaysOn = true, Func <bool> isOn = null) { var settings = new DialogGUIVerticalLayout(); // Vertical and root settings settings.AddChild(SetFloatDialog(labelWidth, "Vertical Offset: ", () => { return(Format(wing.ZOffset)); }, (string input) => { return(ProcessTextToFloat(input, wing.ZOffset, (float s) => { wing.ZOffset = s; })); }, () => { return(deltaSize); }, (float change) => { wing.ZOffset += change; })); settings.AddChild(SetFloatDialog(labelWidth, "Length of Root Chord: ", () => { return(Format(wing.rootChordLength)); }, (string input) => { return(ProcessTextToFloat(input, ref wing.rootChordLength)); }, () => { return(deltaSize); }, (float change) => { wing.rootChordLength += change; })); settings.AddChild(SetFloatDialog(labelWidth, "Offset of Root Midpoint - X (Right+)", () => { return(Format(wing.rootMidChordOffset.x)); }, (string input) => { return(ProcessTextToFloat(input, ref wing.rootMidChordOffset.x)); }, () => { return(deltaSize); }, (float change) => { wing.rootMidChordOffset.x += change; })); settings.AddChild(SetFloatDialog(labelWidth, "Offset of Root Midpoint - Y (Forward+)", () => { return(Format(wing.rootMidChordOffset.y)); }, (string input) => { return(ProcessTextToFloat(input, ref wing.rootMidChordOffset.y)); }, () => { return(deltaSize); }, (float change) => { wing.rootMidChordOffset.y += change; })); settings.AddChild(new DialogGUISpace(5f)); // Tip settings settings.AddChild(SetFloatDialog(labelWidth, "Length of Tip Chord: ", () => { return(Format(wing.tipChordLength)); }, (string input) => { return(ProcessTextToFloat(input, ref wing.tipChordLength)); }, () => { return(deltaSize); }, (float change) => { wing.tipChordLength += change; })); settings.AddChild(SetFloatDialog(labelWidth, "Offset of Tip Midpoint - X (Right+)", () => { return(Format(wing.tipMidChordOffset.x)); }, (string input) => { return(ProcessTextToFloat(input, ref wing.tipMidChordOffset.x)); }, () => { return(deltaSize); }, (float change) => { wing.tipMidChordOffset.x += change; })); settings.AddChild(SetFloatDialog(labelWidth, "Offset of Tip Midpoint - Y (Forward+)", () => { return(Format(wing.tipMidChordOffset.y)); }, (string input) => { return(ProcessTextToFloat(input, ref wing.tipMidChordOffset.y)); }, () => { return(deltaSize); }, (float change) => { wing.tipMidChordOffset.y += change; })); if (!alwaysOn) { foreach (DialogGUIBase dialog in settings.children) { settings.OptionEnabledCondition = isOn; } } return(settings); }