private void resetWarpParameters() { warpDistance = 0; maxWarpSpeed = 0; warpSpeed = 0; effectiveWarpCapacity = 0; hasExceededLightSpeed = false; FlightInputHandler.state.mainThrottle = 0; circularizationState = WBICircularizationStates.doNotCircularize; }
/* * keep this for the jump engine * public Vector3 getVesselDimensions() * { * Bounds bounds; * List<Bounds> boundsList = new List<Bounds>(); * Bounds[] renderBounds; * int count = this.part.vessel.parts.Count; * Part firstPart = this.part.vessel.parts[0]; * Part vesselPart; * * for (int index = 0; index < count; index++) * { * vesselPart = this.part.vessel.parts[index]; * renderBounds = PartGeometryUtil.GetPartRendererBounds(vesselPart); * for (int boundsIndex = 0; boundsIndex < renderBounds.Length; boundsIndex++) * { * bounds = renderBounds[boundsIndex]; * bounds.size *= vesselPart.boundsMultiplier; * bounds.Expand(vesselPart.GetModuleSize(bounds.size, ModifierStagingSituation.CURRENT)); * boundsList.Add(bounds); * } * } * return PartGeometryUtil.MergeBounds(boundsList.ToArray(), firstPart.transform.root).size; * } */ private bool orbitCircularized() { double elapsedTime = Planetarium.GetUniversalTime() - circularizeStartTime; if (BlueshiftScenario.autoCircularize && circularizationState == WBICircularizationStates.needsCircularization && FlightInputHandler.state.mainThrottle <= 0 && elapsedTime >= BlueshiftScenario.autoCircularizationDelay ) { // We don't circularize if the ship is orbiting a star or we're in interstellar space. if (BlueshiftScenario.shared.IsAStar(this.part.vessel.mainBody) || BlueshiftScenario.shared.IsInInterstellarSpace(this.part.vessel)) { circularizationState = WBICircularizationStates.doNotCircularize; return(false); } // It costs resources to circularize. Make sure we can. if (BlueshiftScenario.circularizationResourceDef != null && BlueshiftScenario.circularizationCostPerTonne > 0) { double amount, maxAmount = 0; double resourceCost = this.part.vessel.GetTotalMass() * BlueshiftScenario.circularizationCostPerTonne; this.part.GetConnectedResourceTotals(BlueshiftScenario.circularizationResourceDef.id, out amount, out maxAmount); if (amount < resourceCost) { circularizationState = WBICircularizationStates.doNotCircularize; return(false); } amount = this.part.RequestResource(BlueshiftScenario.circularizationResourceDef.id, resourceCost); } // Get current orbit. Orbit orbit = this.part.vessel.orbitDriver.orbit; double altitude = this.part.vessel.altitude; double planetRadius = this.part.vessel.mainBody.Radius; int planetIndex = this.part.vessel.mainBody.flightGlobalsIndex; double currentTime = Planetarium.GetUniversalTime(); Orbit circlularOrbit = new Orbit(orbit.inclination, 0, planetRadius + altitude, 0, 0, 0, currentTime, this.part.vessel.mainBody); Orbit.State state; // Adjust the state vectors. This will shift the vessel's position, but the ship would've shifted around during normal gravity braking anyway. circlularOrbit.GetOrbitalStateVectorsAtUT(currentTime, out state); circlularOrbit.UpdateFromFixedVectors(orbit.pos, state.vel, this.part.vessel.mainBody.referenceBody, currentTime + 0.02); FlightGlobals.fetch.SetShipOrbit(planetIndex, 0, planetRadius + altitude, circlularOrbit.inclination, circlularOrbit.LAN, circlularOrbit.meanAnomaly, circlularOrbit.argumentOfPeriapsis, circlularOrbit.ObT); ScreenMessages.PostScreenMessage(kOrbitCircularized, kMessageDuration, ScreenMessageStyle.UPPER_LEFT); circularizationState = WBICircularizationStates.hasBeenCircularized; return(true); } return(false); }
private void updatePreconditionStates() { isInSpace = IsInSpace(); meetsWarpAltitude = MeetsWarpAltitude(); hasWarpCapacity = HasWarpCapacity(); if (throttleLevel <= 0f) { // Setup the auto-circularization timer if the autoCircularize game setting is enabled. if (BlueshiftScenario.autoCircularize && circularizationState != WBICircularizationStates.hasBeenCircularized && circularizationState != WBICircularizationStates.doNotCircularize && circularizationState != WBICircularizationStates.needsCircularization ) { circularizationState = WBICircularizationStates.needsCircularization; circularizeStartTime = Planetarium.GetUniversalTime(); } } else { circularizationState = WBICircularizationStates.canBeCircularized; } }