public HackyInAtmoLoader(DMPGame dmpGame, LockSystem lockSystem, VesselWorker vesselWorker) { this.dmpGame = dmpGame; this.lockSystem = lockSystem; this.vesselWorker = vesselWorker; dmpGame.fixedUpdateEvent.Add(FixedUpdate); }
public VesselRecorder(DMPGame dmpGame, WarpWorker warpWorker, VesselWorker vesselWorker) { this.warpWorker = warpWorker; this.vesselWorker = vesselWorker; this.dmpGame = dmpGame; this.dmpGame.updateEvent.Add(Update); }
public ScenarioWorker(DMPGame dmpGame, VesselWorker vesselWorker, ConfigNodeSerializer configNodeSerializer, NetworkWorker networkWorker) { this.dmpGame = dmpGame; this.vesselWorker = vesselWorker; this.configNodeSerializer = configNodeSerializer; this.networkWorker = networkWorker; dmpGame.updateEvent.Add(Update); }
public DMPGame(Settings dmpSettings, UniverseSyncCache universeSyncCache, ModWorker modWorker, ConnectionWindow connectionWindow, DMPModInterface dmpModInterface, ToolbarSupport toolbarSupport, OptionsWindow optionsWindow) { this.dmpSettings = dmpSettings; this.universeSyncCache = universeSyncCache; this.modWorker = modWorker; this.connectionWindow = connectionWindow; this.dmpModInterface = dmpModInterface; this.configNodeSerializer = new ConfigNodeSerializer(); this.posistionStatistics = new PosistionStatistics(); this.networkWorker = new NetworkWorker(this, dmpSettings, connectionWindow, modWorker, configNodeSerializer); this.adminSystem = new AdminSystem(dmpSettings); this.flagSyncer = new FlagSyncer(this, dmpSettings, networkWorker); this.lockSystem = new LockSystem(dmpSettings, networkWorker); this.partKiller = new PartKiller(lockSystem); this.dynamicTickWorker = new DynamicTickWorker(this, networkWorker); this.kerbalReassigner = new KerbalReassigner(); this.vesselPackedUpdater = new VesselInterFrameUpdater(lockSystem, posistionStatistics, dmpSettings); this.vesselWorker = new VesselWorker(this, dmpSettings, modWorker, lockSystem, networkWorker, configNodeSerializer, dynamicTickWorker, kerbalReassigner, partKiller, posistionStatistics, vesselPackedUpdater); this.scenarioWorker = new ScenarioWorker(this, vesselWorker, configNodeSerializer, networkWorker); this.playerStatusWorker = new PlayerStatusWorker(this, dmpSettings, vesselWorker, lockSystem, networkWorker); this.timeSyncer = new TimeSyncer(this, networkWorker, vesselWorker); this.warpWorker = new WarpWorker(this, dmpSettings, timeSyncer, networkWorker, playerStatusWorker); this.chatWorker = new ChatWorker(this, dmpSettings, networkWorker, adminSystem, playerStatusWorker); this.screenshotWorker = new ScreenshotWorker(this, dmpSettings, chatWorker, networkWorker, playerStatusWorker); this.vesselRecorder = new VesselRecorder(this, warpWorker, vesselWorker, networkWorker, dmpSettings); this.debugWindow = new DebugWindow(this, dmpSettings, timeSyncer, networkWorker, vesselWorker, dynamicTickWorker, warpWorker, vesselRecorder, posistionStatistics); this.craftLibraryWorker = new CraftLibraryWorker(this, dmpSettings, networkWorker); this.hackyInAtmoLoader = new HackyInAtmoLoader(this, lockSystem, vesselWorker); this.asteroidWorker = new AsteroidWorker(this, lockSystem, networkWorker, vesselWorker); this.playerColorWorker = new PlayerColorWorker(dmpSettings, lockSystem, networkWorker); this.playerStatusWindow = new PlayerStatusWindow(this, dmpSettings, warpWorker, chatWorker, craftLibraryWorker, debugWindow, screenshotWorker, timeSyncer, playerStatusWorker, optionsWindow, playerColorWorker); this.playerColorWorker.SetDependencies(playerStatusWindow); this.vesselWorker.SetDependencies(hackyInAtmoLoader, timeSyncer, asteroidWorker, chatWorker, playerStatusWorker); this.networkWorker.SetDependencies(timeSyncer, warpWorker, chatWorker, playerColorWorker, flagSyncer, partKiller, kerbalReassigner, asteroidWorker, vesselWorker, hackyInAtmoLoader, playerStatusWorker, scenarioWorker, dynamicTickWorker, craftLibraryWorker, screenshotWorker, toolbarSupport, adminSystem, lockSystem, dmpModInterface, universeSyncCache, vesselRecorder); //this.vesselPackedUpdater.SetVesselRecoder(this.vesselRecorder); optionsWindow.SetDependencies(this, networkWorker, playerColorWorker); this.dmpModInterface.DMPRun(networkWorker); this.stopEvent.Add(this.chatWorker.Stop); this.stopEvent.Add(this.craftLibraryWorker.Stop); this.stopEvent.Add(this.debugWindow.Stop); this.stopEvent.Add(this.dynamicTickWorker.Stop); this.stopEvent.Add(this.flagSyncer.Stop); this.stopEvent.Add(this.hackyInAtmoLoader.Stop); this.stopEvent.Add(this.kerbalReassigner.Stop); this.stopEvent.Add(this.playerColorWorker.Stop); this.stopEvent.Add(this.playerStatusWindow.Stop); this.stopEvent.Add(this.playerStatusWorker.Stop); this.stopEvent.Add(this.partKiller.Stop); this.stopEvent.Add(this.scenarioWorker.Stop); this.stopEvent.Add(this.screenshotWorker.Stop); this.stopEvent.Add(this.timeSyncer.Stop); this.stopEvent.Add(toolbarSupport.Stop); this.stopEvent.Add(optionsWindow.Stop); this.stopEvent.Add(this.vesselWorker.Stop); this.stopEvent.Add(this.warpWorker.Stop); this.stopEvent.Add(this.asteroidWorker.Stop); this.stopEvent.Add(this.vesselRecorder.Stop); }
public TimeSyncer(DMPGame dmpGame, NetworkWorker networkWorker, VesselWorker vesselWorker) { this.dmpGame = dmpGame; this.networkWorker = networkWorker; this.vesselWorker = vesselWorker; dmpGame.fixedUpdateEvent.Add(FixedUpdate); currentSubspace = -1; requestedRate = 1f; }
public AsteroidWorker(DMPGame dmpGame, LockSystem lockSystem, NetworkWorker networkWorker, VesselWorker vesselWorker) { this.dmpGame = dmpGame; this.lockSystem = lockSystem; this.networkWorker = networkWorker; this.vesselWorker = vesselWorker; this.dmpGame.updateEvent.Add(Update); GameEvents.onVesselCreate.Add(OnVesselCreate); }
public VesselRecorder(DMPGame dmpGame, WarpWorker warpWorker, VesselWorker vesselWorker, NetworkWorker networkWorker, Settings dmpSettings) { this.warpWorker = warpWorker; this.vesselWorker = vesselWorker; this.networkWorker = networkWorker; this.dmpSettings = dmpSettings; this.dmpGame = dmpGame; this.dmpGame.updateEvent.Add(Update); }
public PlayerStatusWorker(DMPGame dmpGame, Settings dmpSettings, VesselWorker vesselWorker, LockSystem lockSystem, NetworkWorker networkWorker) { this.dmpGame = dmpGame; this.vesselWorker = vesselWorker; this.lockSystem = lockSystem; this.networkWorker = networkWorker; myPlayerStatus = new PlayerStatus(); myPlayerStatus.playerName = dmpSettings.playerName; myPlayerStatus.statusText = "Syncing"; dmpGame.updateEvent.Add(Update); }
public DebugWindow(DMPGame dmpGame, Settings dmpSettings, TimeSyncer timeSyncer, NetworkWorker networkWorker, VesselWorker vesselWorker, DynamicTickWorker dynamicTickWorker, WarpWorker warpWorker) { this.dmpGame = dmpGame; this.dmpSettings = dmpSettings; this.timeSyncer = timeSyncer; this.networkWorker = networkWorker; this.vesselWorker = vesselWorker; this.dynamicTickWorker = dynamicTickWorker; this.warpWorker = warpWorker; dmpGame.updateEvent.Add(Update); dmpGame.drawEvent.Add(Draw); }
public PlayerStatusWorker(DMPGame dmpGame, Settings dmpSettings, VesselWorker vesselWorker, LockSystem lockSystem, NetworkWorker networkWorker, Permissions permissions) { this.dmpGame = dmpGame; this.vesselWorker = vesselWorker; this.lockSystem = lockSystem; this.networkWorker = networkWorker; this.permissions = permissions; myPlayerStatus = new PlayerStatus(); myPlayerStatus.playerName = dmpSettings.playerName; myPlayerStatus.statusText = "Syncing"; updateAction = new NamedAction(Update); dmpGame.updateEvent.Add(updateAction); }
public DebugWindow(DMPGame dmpGame, Settings dmpSettings, TimeSyncer timeSyncer, NetworkWorker networkWorker, VesselWorker vesselWorker, DynamicTickWorker dynamicTickWorker, WarpWorker warpWorker, VesselRecorder vesselRecorder, PosistionStatistics posistionStatistics, OptionsWindow optionsWindow) { this.dmpGame = dmpGame; this.dmpSettings = dmpSettings; this.timeSyncer = timeSyncer; this.networkWorker = networkWorker; this.vesselWorker = vesselWorker; this.dynamicTickWorker = dynamicTickWorker; this.warpWorker = warpWorker; this.vesselRecorder = vesselRecorder; this.posistionStatistics = posistionStatistics; this.optionsWindow = optionsWindow; dmpGame.updateEvent.Add(Update); dmpGame.drawEvent.Add(Draw); }
public static VesselUpdate CopyFromVessel(VesselWorker vesselWorker, Vessel updateVessel) { VesselUpdate returnUpdate = new VesselUpdate(vesselWorker); try { returnUpdate.vesselID = updateVessel.id; returnUpdate.planetTime = Planetarium.GetUniversalTime(); returnUpdate.bodyName = updateVessel.mainBody.bodyName; returnUpdate.rotation = new float[4]; returnUpdate.rotation[0] = updateVessel.srfRelRotation.x; returnUpdate.rotation[1] = updateVessel.srfRelRotation.y; returnUpdate.rotation[2] = updateVessel.srfRelRotation.z; returnUpdate.rotation[3] = updateVessel.srfRelRotation.w; returnUpdate.angularVelocity = new float[3]; returnUpdate.angularVelocity[0] = updateVessel.angularVelocity.x; returnUpdate.angularVelocity[1] = updateVessel.angularVelocity.y; returnUpdate.angularVelocity[2] = updateVessel.angularVelocity.z; //Flight state returnUpdate.flightState = new FlightCtrlState(); returnUpdate.flightState.CopyFrom(updateVessel.ctrlState); returnUpdate.actiongroupControls = new bool[5]; returnUpdate.actiongroupControls[0] = updateVessel.ActionGroups[KSPActionGroup.Gear]; returnUpdate.actiongroupControls[1] = updateVessel.ActionGroups[KSPActionGroup.Light]; returnUpdate.actiongroupControls[2] = updateVessel.ActionGroups[KSPActionGroup.Brakes]; returnUpdate.actiongroupControls[3] = updateVessel.ActionGroups[KSPActionGroup.SAS]; returnUpdate.actiongroupControls[4] = updateVessel.ActionGroups[KSPActionGroup.RCS]; if (updateVessel.altitude < 10000) { //Use surface position under 10k returnUpdate.isSurfaceUpdate = true; returnUpdate.position = new double[4]; returnUpdate.position[0] = updateVessel.latitude; returnUpdate.position[1] = updateVessel.longitude; returnUpdate.position[2] = updateVessel.altitude; VesselUtil.DMPRaycastPair groundRaycast = VesselUtil.RaycastGround(updateVessel.latitude, updateVessel.longitude, updateVessel.mainBody); returnUpdate.position[3] = groundRaycast.altitude; returnUpdate.terrainNormal = new float[3]; returnUpdate.terrainNormal[0] = groundRaycast.terrainNormal.x; returnUpdate.terrainNormal[1] = groundRaycast.terrainNormal.y; returnUpdate.terrainNormal[2] = groundRaycast.terrainNormal.z; returnUpdate.velocity = new double[3]; Vector3d srfVel = Quaternion.Inverse(updateVessel.mainBody.bodyTransform.rotation) * updateVessel.srf_velocity; returnUpdate.velocity[0] = srfVel.x; returnUpdate.velocity[1] = srfVel.y; returnUpdate.velocity[2] = srfVel.z; returnUpdate.acceleration = new double[3]; Vector3d srfAcceleration = Quaternion.Inverse(updateVessel.mainBody.bodyTransform.rotation) * updateVessel.acceleration; returnUpdate.acceleration[0] = srfAcceleration.x; returnUpdate.acceleration[1] = srfAcceleration.y; returnUpdate.acceleration[2] = srfAcceleration.z; } else { //Use orbital positioning over 10k returnUpdate.isSurfaceUpdate = false; returnUpdate.orbit = new double[7]; returnUpdate.orbit[0] = updateVessel.orbit.inclination; returnUpdate.orbit[1] = updateVessel.orbit.eccentricity; returnUpdate.orbit[2] = updateVessel.orbit.semiMajorAxis; returnUpdate.orbit[3] = updateVessel.orbit.LAN; returnUpdate.orbit[4] = updateVessel.orbit.argumentOfPeriapsis; returnUpdate.orbit[5] = updateVessel.orbit.meanAnomalyAtEpoch; returnUpdate.orbit[6] = updateVessel.orbit.epoch; } returnUpdate.sasEnabled = updateVessel.Autopilot.Enabled; if (returnUpdate.sasEnabled) { returnUpdate.autopilotMode = (int)updateVessel.Autopilot.Mode; returnUpdate.lockedRotation = new float[4]; returnUpdate.lockedRotation[0] = updateVessel.Autopilot.SAS.lockedRotation.x; returnUpdate.lockedRotation[1] = updateVessel.Autopilot.SAS.lockedRotation.y; returnUpdate.lockedRotation[2] = updateVessel.Autopilot.SAS.lockedRotation.z; returnUpdate.lockedRotation[3] = updateVessel.Autopilot.SAS.lockedRotation.w; } } catch (Exception e) { DarkLog.Debug("Failed to get vessel update, exception: " + e); returnUpdate = null; } return(returnUpdate); }
public VesselUpdate(VesselWorker vesselWorker) { this.vesselWorker = vesselWorker; }
public void SetVesselWorker(VesselWorker vesselWorker) { this.vesselWorker = vesselWorker; }