Пример #1
0
 public HackyInAtmoLoader(DMPGame dmpGame, LockSystem lockSystem, VesselWorker vesselWorker)
 {
     this.dmpGame      = dmpGame;
     this.lockSystem   = lockSystem;
     this.vesselWorker = vesselWorker;
     dmpGame.fixedUpdateEvent.Add(FixedUpdate);
 }
Пример #2
0
 public VesselRecorder(DMPGame dmpGame, WarpWorker warpWorker, VesselWorker vesselWorker)
 {
     this.warpWorker   = warpWorker;
     this.vesselWorker = vesselWorker;
     this.dmpGame      = dmpGame;
     this.dmpGame.updateEvent.Add(Update);
 }
Пример #3
0
 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);
 }
Пример #4
0
 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);
 }
Пример #5
0
 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;
 }
Пример #6
0
 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);
 }
Пример #7
0
 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);
 }
Пример #8
0
 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);
 }
Пример #9
0
 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);
 }
Пример #11
0
 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);
 }
Пример #12
0
        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);
        }
Пример #13
0
 public VesselUpdate(VesselWorker vesselWorker)
 {
     this.vesselWorker = vesselWorker;
 }
Пример #14
0
 public void SetVesselWorker(VesselWorker vesselWorker)
 {
     this.vesselWorker = vesselWorker;
 }