public bool IsPlatformSafe(TrackedPlatform platform) { double displacement = CalculatePlatformDisplacement(platform); gridProgramRef.Echo("Platform displacement = {displacement}"); gridProgramRef.Echo("X1: {platform.X1} X2: {platform.X2}"); gridProgramRef.Echo("Y1: {platform.Y1} Y2: {platform.Y2}"); return(false); }
public double CalculatePlatformDisplacement(TrackedPlatform platform) { List <double> distancelist = new List <double> { platform.X1, platform.X2, platform.Y1, platform.Y2 }; distancelist.Sort(); return(distancelist[3] - distancelist[0]); }
public void Main(string arguments, UpdateType updateSource) { if (arguments == "i") { GridProgram = new GridProgramRef(GridTerminalSystem, null, Echo, Me); GridProgram.Utils = new UtilsClass(GridProgram); BlueprintDefinitions.Initialize(GridProgram); Echo("Initialized blueprint definitions."); Echo($"{BlueprintDefinitions.blueprints.Count} definitions loaded."); projectionController = new ProjectionController(GridProgram, "Projector", ProjectorState.Unpowered); projectionController.SetProjectorState(ProjectorState.Powered); if (!projectionController.Projector.IsProjecting) { Echo("Projector wasn't projecting."); return; } Dictionary <string, int> components = projectionController.GetRequiredComponents(); foreach (KeyValuePair <string, int> kvp in components) { Echo($"{kvp.Key}: {kvp.Value}"); } } if (arguments == "a") { List <IMyAssembler> assemblers = new List <IMyAssembler>(); GridTerminalSystem.GetBlocksOfType(assemblers); IMyAssembler assembler = assemblers[0]; IMyTextPanel textpanel = GridTerminalSystem.GetBlockWithName("TXTPNL") as IMyTextPanel; MyDefinitionId id = MyDefinitionId.Parse("MyObjectBuilder_BlueprintDefinition/BulletproofGlass"); assembler.AddQueueItem(id, 1.0); return; } if (arguments == "p") { IMyTextPanel textpanel = GridTerminalSystem.GetBlockWithName("TXTPNL") as IMyTextPanel; textpanel.WriteText(projectionController.Projector.DetailedInfo); return; } if (arguments == "m") { return; } switch (internal_state) { case 0: // config try { GridProgram = new GridProgramRef(GridTerminalSystem, null, Echo, Me); GridProgram.Utils = new UtilsClass(GridProgram); platformMotor = new PlatformMotor(GridProgram, "Pistons", new MotorConfig(0.05f, 10f, 0.05f, MotorExtendType.POSITIVE)); platformTracker = new PlatformTracker(new TrackerConfig(GridProgram, "Camera X1", "Camera X2", "Camera Y1", "Camera Y2", 370), GridProgram); welderController = new WelderController(GridProgram, new WelderConfig("Welders", WelderState.Unpowered)); cargoController = new CargoController(GridProgram, true); projectionController = new ProjectionController(GridProgram, "Projector", ProjectorState.Unpowered); platformTracker.EnableRaycast(); internal_state = 1; } catch (Exception ex) { Echo($"Execution halted, safeguard violation raised in {ex.TargetSite}: {ex.Message}"); } break; case 1: try { platformMotor.SetMotorState(MotorState.Extend); internal_state = 2; } catch (Exception ex) { Echo($"Execution halted, safeguard violation raised in {ex.TargetSite}: {ex.Message}"); } break; case 2: try { TrackedPlatform tp = platformTracker.Track(); platformTracker.IsPlatformSafe(tp); } catch (Exception ex) { Echo($"Execution halted, safeguard violation raised in {ex.TargetSite}: {ex.Message}"); } break; } }