internal override void Display() { if (IsActive) { if (ImGui.Begin(_displayText, ref IsActive, _flags)) { //put calcs that needs refreshing each frame in here. (ie calculations from mouse cursor position) if (_orbitWidget == null) { _orbitWidget = new OrbitOrderWiget(_orderEntityOrbit.Parent); _uiState.SelectedSysMapRender.UIWidgets.Add(nameof(OrbitOrderWiget), _orbitWidget); } if (_newtonUI.Display()) { Calcs(); } if (ImGui.Button("Action Command")) { ActionCmd(); } //ImGui.SetTooltip(_tooltipText); } } }
internal override void Display() { if (IsActive) { var size = new Vector2(200, 100); var pos = new Vector2(_uiState.MainWinSize.X / 2 - size.X / 2, _uiState.MainWinSize.Y / 2 - size.Y / 2); ImGui.SetNextWindowSize(size, ImGuiCond.FirstUseEver); ImGui.SetNextWindowPos(pos, ImGuiCond.FirstUseEver); if (ImGui.Begin(_displayText, ref IsActive, _flags)) { //put calcs that needs refreshing each frame in here. (ie calculations from mouse cursor position) if (_orbitWidget != null) { switch (CurrentState) { case States.NeedsEntity: break; case States.NeedsTarget: { } break; case States.NeedsInsertionPoint: { if (_newtonUI != null) { if (_newtonUI.Display()) { InsertionCalcs(); } } var mousePos = ImGui.GetMousePos(); var mouseWorldPos = _uiState.Camera.MouseWorldCoordinate_m(); _targetInsertionPoint_m = (mouseWorldPos - GetTargetPosition()); //ralitive to the target body _moveWidget.SetArrivalPosition(_targetInsertionPoint_m); //var velAU = OrbitProcessor.PreciseOrbitalVector(sgpCBAU, ralPosCBAU, smaCurrOrbtAU); _ke_m = OrbitMath.KeplerFromPositionAndVelocity(_stdGravParamTargetBody_m, _targetInsertionPoint_m, _insertionOrbitalVelocity_m, _departureDateTime); _orbitWidget.SetParametersFromKeplerElements(_ke_m, _targetInsertionPoint_m); _apoapsis_m = _ke_m.Apoapsis; _periapsis_m = _ke_m.Periapsis; Eccentricity = _ke_m.Eccentricity; break; } case States.NeedsActioning: { if (_newtonUI != null) { if (_newtonUI.Display()) { InsertionCalcs(); } } _ke_m = OrbitMath.KeplerFromPositionAndVelocity(_stdGravParamTargetBody_m, _targetInsertionPoint_m, _insertionOrbitalVelocity_m, _departureDateTime); _orbitWidget.SetParametersFromKeplerElements(_ke_m, _targetInsertionPoint_m); _apoapsis_m = _ke_m.Apoapsis; _periapsis_m = _ke_m.Periapsis; Eccentricity = _ke_m.Eccentricity; break; } default: break; } } ImGui.SetTooltip(_tooltipText); ImGui.Text("Target: "); if (TargetEntity != null) { ImGui.SameLine(); ImGui.Text(TargetEntity.Name); } //ImGui.Text("Eccentricity: " + _eccentricity.ToString("g3")); if (ImGui.CollapsingHeader("Orbit Data")) { ImGui.Text("Apoapsis: "); ImGui.SameLine(); ImGui.Text(Stringify.Distance(_apoapsis_m) + " (Alt: " + Stringify.Distance(_apAlt) + ")"); ImGui.Text("Periapsis: "); ImGui.SameLine(); ImGui.Text(Stringify.Distance(_periapsis_m) + " (Alt: " + Stringify.Distance(_peAlt) + ")"); ImGui.Text("DepartureSpeed: "); //ImGui.SameLine(); ImGui.Text(Stringify.Distance(_departureOrbitalSpeed_m) + "/s"); ImGui.Text("InsertionSpeed: "); //ImGui.SameLine(); ImGui.Text(Stringify.Distance(_insertionOrbitalSpeed_m) + "/s"); ImGui.Text("Departure Vector: "); //ImGui.SameLine(); ImGui.Text("X: " + Stringify.Distance(_departureOrbitalVelocity_m.X) + "/s"); ImGui.Text("Y: " + Stringify.Distance(_departureOrbitalVelocity_m.Y) + "/s"); ImGui.Text("Z: " + Stringify.Distance(_departureOrbitalVelocity_m.Z) + "/s"); ImGui.Text("Departure Angle: "); ImGui.SameLine(); ImGui.Text(_departureAngle.ToString("g3") + " radians or " + Angle.ToDegrees(_departureAngle).ToString("F") + " deg "); /* * var pc = OrbitProcessor.InstantaneousOrbitalVelocityPolarCoordinate(_orderEntityOrbit, _departureDateTime); * * ImGui.Text("Departure Polar Coordinates: "); * ImGui.Text(pc.Item1.ToString() + " AU or " + Distance.AuToMt(pc.Item1).ToString("F") + " m/s"); * ImGui.Text(pc.Item2.ToString("g3") + " radians or " + Angle.ToDegrees(pc.Item2).ToString("F") + " deg "); * ; */ ImGui.Text("Insertion Vector: "); ImGui.Text("X: " + Stringify.Distance(_insertionOrbitalVelocity_m.X) + "/s"); ImGui.Text("Y: " + Stringify.Distance(_insertionOrbitalVelocity_m.Y) + "/s"); ImGui.Text("Z: " + Stringify.Distance(_insertionOrbitalVelocity_m.Z) + "/s"); ImGui.Text("Insertion Position: "); ImGui.Text("X: " + Stringify.Distance(_targetInsertionPoint_m.X)); ImGui.Text("Y: " + Stringify.Distance(_targetInsertionPoint_m.Y)); ImGui.Text("Z: " + Stringify.Distance(_targetInsertionPoint_m.Z)); ImGui.Text("LoAN: "); ImGui.SameLine(); ImGui.Text(_ke_m.LoAN.ToString("g3")); ImGui.Text("AoP: "); ImGui.SameLine(); ImGui.Text(_ke_m.AoP.ToString("g3")); ImGui.Text("LoP Angle: "); ImGui.SameLine(); ImGui.Text((_ke_m.LoAN + _ke_m.AoP).ToString("g3") + " radians or " + Angle.ToDegrees(_ke_m.LoAN + _ke_m.AoP).ToString("F") + " deg "); if (_orbitWidget != null) { ImGui.Text("Is Retrograde " + _orbitWidget.IsRetrogradeOrbit.ToString()); } } //if (CurrentState != States.NeedsActioning) //use alpha on the button if it's not useable. //ImGui.PushStyleVar(ImGuiStyleVar.Alpha, ImGui.GetStyle().Alpha * 0.5f); if (ImGui.Button("Action Order") && CurrentState == States.NeedsActioning) //only do suff if clicked if it's usable. { fsm[(byte)CurrentState, (byte)Events.ClickedAction].Invoke(); //ImGui.PopStyleVar(); } if (_smMode) { ImGui.SameLine(); if (ImGui.Button("Add OrbitDB")) { ActionAddDB(); } } ImGui.End(); } } }