static int Main(string[] args) { // setup and parse arguments Args.DescriptionPadding = 8; Args.AddArgument(OptTarget, "test", "test", "Target environment: 'debug', 'dev', 'test', 'labs', 'live', 'paris'"); Args.AddArgument(OptLoop, "10", "10", "Loop count"); Args.AddArgument("?", "This help page"); Args.Notes.AppendLine("This tool tests Image Recognition queries"); Args.Notes.AppendLine(""); Args.Notes.AppendLine("Examples:"); Args.Notes.AppendLine("IrTest -tar:test"); Args.Notes.AppendLine("IrTest -tar:test -loop:50"); // parse passed arguments if (!Args.Parse(args)) { Logger.Warn("One or more invalid arguments was specified"); return(1); } // show help if requested if (Args.IsSet("?") || Args.IsEmpty) { return(Args.ShowConsoleHelp()); } string env = Args.GetValue(OptTarget).ToLower(); int tries = 10; if (!int.TryParse(Args.GetValue(OptLoop), out tries)) { Logger.Warn("Invalid loop value specified"); return(1); } var url = new LtuService(env).GetIrServerUrl(); var appkey = new LtuService(env).GetApplicationKey(); Logger.InfoFormat($"Env: {env}, Loops: {tries}"); Logger.InfoFormat($"Url: {url}, App: {appkey}"); Logger.InfoFormat(""); var sw = new Stopwatch(); sw.Start(); for (int loop = 1; loop <= tries; loop++) { SearchImageFound(env, loop, tries); SearchImageNotFound(env, loop, tries); } sw.Stop(); var ave = TimeSpan.FromTicks(sw.Elapsed.Ticks / (tries * 2)); Logger.InfoFormat("Total elapsed time: {0}, Average: {1}", FormatTime(sw), FormatTime(ave)); return(0); }
public static void Main(string[] args) { ArgumentParser argumentParser = new ArgumentParser(new ConsoleArgument()); ConsoleArgument dirArg = new ConsoleArgument("d", ArgumentValueType.STRING); ConsoleArgument diagnoseArg = new ConsoleArgument("diagnose"); argumentParser.AddArgument(dirArg); argumentParser.AddArgument(diagnoseArg); argumentParser.Parse(args); string moduleName = argumentParser.DefaultRule.StringValue; if (dirArg.IsSet) { DirName = dirArg.StringValue; } // 1 模块加载 VMModule mainModule = ModuleLoader.AddModule(LoadModule(moduleName), false); // 2 执行静态构造 StaticInitWatch.Start(); foreach (var vmClass in ModuleLoader.Classes.Values) { vmClass.Methods.TryGetValue(MethodArea.Singleton.StaticConstructorNameAddress, out List <VMMethod> sinit); VMExecutor executor = ThreadManager.CreateThread(); executor.Execute(sinit[0]); // TODO 静态构造是可以多线程的,但是如何回收堆栈呢? ThreadManager.CollectThreadSpace(executor); } StaticInitWatch.Stop(); // 3 执行Main函数 if (!mainModule.Classes.TryGetValue(MethodArea.Singleton.StringProgramAddress, out VMClass entryClass)) { throw new XiVMError("Program.Main() not found"); } if (!entryClass.Methods.TryGetValue(MethodArea.Singleton.StringMainAddress, out List <VMMethod> entryMethodGroup)) { throw new XiVMError("Program.Main() not found"); } VMMethod entryMethod = entryMethodGroup.Find(m => m.DescriptorAddress == MethodArea.Singleton.StringMainDescriptorAddress); if (entryMethod == null) { throw new XiVMError("Program.Main(System.String) not found"); } VMExecutor mainThread = ThreadManager.CreateThread(); mainThread.Execute(entryMethod, null); // 4 诊断信息 if (diagnoseArg.IsSet) { DisplaDiagnoseIndo(mainThread.GetDiagnoseInfo()); } }
public void OptionalAfterPositional() { var parser = new ArgumentParser(); parser.AddArgument(name: "foo"); parser.AddArgument(name: "--bar"); var args = parser.ParseArgs(new string[] { "1", "--bar", "2" }); Assert.AreEqual(2, args.Count); Assert.AreEqual("1", args["foo"]); Assert.AreEqual("2", args["bar"]); }
public void SubParserDefaults() { var parser = new ArgumentParser(); parser.AddArgument("--foo", action: "toggle", help: "foo help"); var subparsers = parser.AddSubparsers(help: "sub-command help"); var parserA = subparsers.AddParser("a", help: "a help"); parserA.AddArgument("bar", "single", help: "bar help"); parserA.SetDefault("func", "FuncA()"); var parserB = subparsers.AddParser("b", help: "b help"); parserB.AddArgument("--baz", "single", help: "baz help"); parserB.SetDefault("func", "FuncB()"); var args = parser.ParseArgs(new string[] { "--foo", "b", "--baz", "1" }); Assert.AreEqual("FuncB()", args["func"]); args = parser.ParseArgs(new string[] { "--foo", "a", "1" }); Assert.AreEqual("FuncA()", args["func"]); }
public void SubParserParentArgumentOrder() { var parser = new ArgumentParser(); parser.AddArgument("--foo", action: "toggle", help: "foo help"); var subparsers = parser.AddSubparsers(help: "sub-command help"); var parserA = subparsers.AddParser("a", help: "a help"); parserA.AddArgument("bar", "single", help: "bar help"); var parserB = subparsers.AddParser("b", help: "b help"); parserB.AddArgument("--baz", "single", help: "baz help"); try { var args = parser.ParseArgs(new string[] { "a", "1", "--foo" }); Assert.Fail("ArgumentParseException expected"); } catch (ArgumentParseException e) { Assert.AreEqual("Unrecognized arguments: --foo", e.Message); } }
public void SubParsers() { var parser = new ArgumentParser(); parser.AddArgument("--foo", action: "toggle", help: "foo help"); var subparsers = parser.AddSubparsers(help: "sub-command help"); var parserA = subparsers.AddParser("a", help: "a help"); parserA.AddArgument("bar", "single", help: "bar help"); var parserB = subparsers.AddParser("b", help: "b help"); parserB.AddArgument("--baz", "single", help: "baz help"); var args = parser.ParseArgs(new string[] { "--foo", "b", "--baz", "1" }); Assert.AreEqual(2, args.Count); Assert.AreEqual(true, args["foo"]); Assert.AreEqual("1", args["baz"]); args = parser.ParseArgs(new string[] { "--foo", "a", "1" }); Assert.AreEqual(2, args.Count); Assert.AreEqual(true, args["foo"]); Assert.AreEqual("1", args["bar"]); }
public void SubParserHelp() { var parser = new ArgumentParser(); parser.ProgName = "prog"; parser.Description = "This is prog description."; parser.AddArgument("--foo", action: "toggle", help: "foo help"); var subParsers = parser.AddSubparsers(help: "sub-command help"); var parserA = subParsers.AddParser("a", help: "a help"); parserA.AddArgument("bar", "single", help: "bar help"); var parserB = subParsers.AddParser("b", help: "b help"); parserB.AddArgument("--baz", "single", help: "baz help"); var expected = @"Usage: prog [OPTION]... [ARG]... This is prog description. Positional arguments: command sub-command help Optional arguments: --foo foo help".Replace("\r", string.Empty); Assert.AreEqual(expected, parser.HelpText); }
public void ListOption() { var parser = new ArgumentParser(); parser.AddArgument(name: "--foo", action: "list"); parser.AddArgument(name: "--bar", action: "single"); var args = parser.ParseArgs(new string[] { "--foo", "1", "2", "--bar", "3" }); Assert.AreEqual(2, args.Count); Assert.IsTrue(args["foo"] is IList <string>); var l = args["foo"] as IList <string>; Assert.IsTrue(l.SequenceEqual(new List <string> { "1", "2" })); }
public void ToggleOptionRepeatDoesNothing() { var parser = new ArgumentParser(); parser.AddArgument(name: "--bar", action: "toggle"); var args = parser.ParseArgs(new string[] { "--bar", "--bar" }); Assert.AreEqual(1, args.Count); Assert.AreEqual(true, args["bar"]); }
public void OptionRepeatOverrides() { var parser = new ArgumentParser(); parser.AddArgument(name: "--bar", action: "single"); var args = parser.ParseArgs(new string[] { "--bar", "1", "--bar", "2" }); Assert.AreEqual(1, args.Count); Assert.AreEqual("2", args["bar"]); }
public void OptionWithValue() { var parser = new ArgumentParser(); parser.AddArgument(name: "--foo"); var args = parser.ParseArgs(new string[] { "--foo", "1" }); Assert.AreEqual(1, args.Count); Assert.IsTrue(args.ContainsKey("foo")); Assert.AreEqual("1", args["foo"]); }
public void ToggleOptionDisabled() { var parser = new ArgumentParser(); parser.AddArgument(name: "--bar", action: "toggle"); var args = parser.ParseArgs(new string[] {}); Assert.AreEqual(1, args.Count); Assert.IsTrue(args.ContainsKey("bar")); Assert.AreEqual(false, args["bar"]); }
public void HelpTextWithArguments() { var parser = new ArgumentParser(); parser.AddArgument("--foo", help: "foo help"); parser.AddArgument("--bar", action: "toggle", help: "bar help"); parser.AddArgument("spam", action: "single", help: "spam help"); parser.ProgName = "prog"; parser.Description = "This is prog description."; var expected = @"Usage: prog [OPTION]... [ARG]... This is prog description. Positional arguments: spam spam help Optional arguments: --foo FOO foo help --bar bar help".Replace("\r", string.Empty); Assert.AreEqual(expected, parser.HelpText); }
public void OverrideDefaults() { var parser = new ArgumentParser(); parser.AddArgument("--foo", action: "single", help: "foo help"); parser.SetDefault("foo", "12"); parser.SetDefault("bar", "spam"); var args = parser.ParseArgs(new string[] { "--foo", "a" }); Assert.AreEqual(2, args.Count); Assert.AreEqual("a", args["foo"]); Assert.AreEqual("spam", args["bar"]); }
public void UnknownOption() { var parser = new ArgumentParser(); parser.AddArgument(name: "--foo"); try { var args = parser.ParseArgs(new string[] { "--bar", "2" }); Assert.Fail("ArgumentParseException expected"); } catch (ArgumentParseException e) { Assert.AreEqual("Unrecognized arguments: --bar 2", e.Message); } }
public void OptionWithMissingValue() { var parser = new ArgumentParser(); parser.AddArgument(name: "--foo"); try { var args = parser.ParseArgs(new string[] { "--foo" }); Assert.Fail("ArgumentParseException expected"); } catch (ArgumentParseException e) { Assert.AreEqual("Argument --foo: expected one argument", e.Message); } }
public void PositionalMissing() { var parser = new ArgumentParser(); parser.AddArgument(name: "bar"); try { var args = parser.ParseArgs(new string[] {}); Assert.Fail("ArgumentParseException expected"); } catch (ArgumentParseException e) { Assert.AreEqual("the following arguments are required: bar", e.Message); } }
public void ToggleOptionWithValueIsError() { var parser = new ArgumentParser(); parser.AddArgument(name: "--bar", action: "toggle"); try { var args = parser.ParseArgs(new string[] { "--bar", "1" }); Assert.Fail("ArgumentParseException expected"); } catch (ArgumentParseException e) { Assert.AreEqual("Unrecognized arguments: 1", e.Message); } }
public static void Run(string[] args) { var parser = new ArgumentParser(); parser.AddArgument("--foo", action: "toggle", help: "foo help"); var subparsers = parser.AddSubparsers(help: "sub-command help"); var parserA = subparsers.AddParser("a", help: "a help"); parserA.AddArgument("bar", "single", help: "bar help"); var parserB = subparsers.AddParser("b", help: "b help"); parserB.AddArgument("--baz", "single", help: "baz help"); if (args.Contains("--help")) { Console.WriteLine(parser.HelpText); Environment.Exit(0); } IDictionary <string, dynamic> parsedArgs = null; try { parsedArgs = parser.ParseArgs(args); } catch (ArgumentParseException e) { Console.WriteLine($"Error: {e.Message}"); Environment.Exit(2); } foreach (var entry in parsedArgs) { if (entry.Value is IList <string> ) { var s = string.Join(", ", entry.Value as IList <string>); Console.WriteLine($"> '{entry.Key}': '{s}'"); } else { Console.WriteLine($"> '{entry.Key}': '{entry.Value}'"); } } }
public static void Main(string[] args) { ArgumentParser argumentParser = new ArgumentParser(new ConsoleArgument()); ConsoleArgument dirArg = new ConsoleArgument("d", ArgumentValueType.STRING); ConsoleArgument verboseArg = new ConsoleArgument("verbose"); argumentParser.AddArgument(dirArg); argumentParser.AddArgument(verboseArg); argumentParser.Parse(args); string moduleName = argumentParser.DefaultRule.StringValue; if (dirArg.IsSet) { DirName = dirArg.StringValue; } string fileName = null; foreach (string f in Directory.EnumerateFiles(DirName)) { string fname = Path.GetFileName(f).ToString(); if (fname.StartsWith(moduleName + ".")) { fileName = f; break; // TODO 不break,支持同模块多文件 } } if (string.IsNullOrEmpty(fileName)) { Console.Error.WriteLine($"Module {moduleName} not found in {DirName}"); return; } string text = File.ReadAllText(fileName); TokenPassManager tokenPasses = new TokenPassManager(text); // 解析类信息之外的部分并生成AST AST root = (AST)tokenPasses.Run(new Parser()); ASTPassManager astPasses = new ASTPassManager(root); //, 打印json文件 if (verboseArg.IsSet) { string json = (string)astPasses.Run(new JsonPass()); File.WriteAllText(fileName + ".ast.json", json); } // 编译生成ir与字节码,编译阶段会完成常量表达式的估值 ModuleConstructor constructor = new ModuleConstructor(moduleName); ModuleHeaders.Add(moduleName, constructor.Module); List <Class> classes = (List <Class>)astPasses.Run(new ClassDeclarationPass(constructor)); (List <Field> fields, List <Method> methods) = ((List <Field> fields, List <Method> methods)) astPasses.Run(new MemberDeclarationPass(constructor, classes)); astPasses.Run(new CodeGenPass(constructor, classes, fields, methods)); // 输出生成字节码 constructor.Dump(DirName, verboseArg.IsSet); }
static void Main(string[] args) { ArgumentParser argumentParser = new ArgumentParser(ArgumentParser.ArgumentFormat.KVP, true); argumentParser.AddArgument("key", ArgumentParser.ArgumentType.String); argumentParser.AddArgument("exkey", ArgumentParser.ArgumentType.String, true); argumentParser.AddArgument("proxy", ArgumentParser.ArgumentType.String, true); argumentParser.AddArgument("nPage", ArgumentParser.ArgumentType.Int); argumentParser.AddArgument("export", ArgumentParser.ArgumentType.String); argumentParser.Help = () => { Console.WriteLine("-key \"<keywords to search for>\""); Console.WriteLine("-exkey \"<keywords to exclude from search>\""); Console.WriteLine("-proxy \"<proxy:port or auto for automatic proxy selection, if omitted the program will not use a proxy>\""); Console.WriteLine("-nPage <number of pages to scan, -1 for all>"); Console.WriteLine("-export <A csv file to where the data will be exported>"); }; string exkey = ""; string key = ""; string proxy = ""; int npage = 0; string exportFile; try { ArgumentParser.ParsedArguments parsed = argumentParser.Parse(args); key = parsed.StringArguments["key"][0]; exportFile = parsed.StringArguments["export"][0]; if (parsed.StringArguments.ContainsKey("exkey")) { exkey = parsed.StringArguments["exkey"][0]; } if (parsed.StringArguments.ContainsKey("proxy")) { proxy = parsed.StringArguments["proxy"][0]; } npage = parsed.IntArguments["npage"][0]; } catch (Exception ex) { Console.WriteLine(ex.Message); return; } if (System.IO.File.Exists(exportFile)) { Console.WriteLine("File '{0}' already exists!", exportFile); return; } bool autoProxy = false; Tuple <string, int> userProxy = null; try { if (proxy.ToLower() == "auto") { autoProxy = true; } else { userProxy = new Tuple <string, int>(proxy.Split(':')[0], int.Parse(proxy.Split(':')[1])); } } catch (Exception) { Console.WriteLine("Incorrect proxy format. Expected format: 'Address:Port' or auto"); return; } OpenFishPort.OpenFish fish = new OpenFishPort.OpenFish(); if (autoProxy) { fish.Get(); Tuple <string, int, string, long>[] resp = fish.GetResponseTimesMultiThreaded(); Tuple <string, int, string, long> optimal = resp.Where((x) => x.Item4 != -1).OrderBy((x) => x.Item4).First(); if (optimal == null) { Console.WriteLine("No proxies found!"); return; } Console.WriteLine("Using {0}:{1} ({2}) with {3}ms response", optimal.Item1, optimal.Item2, optimal.Item3, optimal.Item4); } EbayInterface.PageMode pageMode = EbayInterface.PageMode.Num; if (npage == -1) { pageMode = EbayInterface.PageMode.All; } EbayInterface.Search search = new EbayInterface.Search(key, pageMode, EbayInterface.IndexMode.ListingOnly, exkey, npage, userProxy); Console.WriteLine("Indexing Pages"); string[] hrefs = search.GetAllPageHrefs(); Console.WriteLine("Indexing Listings"); EbayInterface.Listing[] listings = search.GetListingsMultiThreaded(hrefs); Console.WriteLine("Exporting"); EbayInterface.ExportToCSV(listings, exportFile); //"23.237.173.102", 3128 //EbayInterface.Search search = new EbayInterface.Search("apple charger", EbayInterface.PageMode.Num, EbayInterface.IndexMode.ListingOnly, "", 2, userProxy); //string[] hrefs = search.GetAllPageHrefs(); //EbayInterface.Listing[] listings = search.GetListings(hrefs); //EbayInterface.SerializeToFile(listings, "export.xml"); return; }
public static void Run(string[] args) { var parser = new ArgumentParser { Description = "Example argument parsing program." }; // Single string value. parser.AddArgument( name: "--foo", help: "Foo help."); // Long name parameter. parser.AddArgument( name: "--long-name-param", help: "Long named parameter."); // Boolean. parser.AddArgument( name: "--bar", action: "toggle", help: "Help on bar."); // A list. parser.AddArgument( name: "--list-one", action: "list", help: "A list parameter."); // Positional string value 1. parser.AddArgument(name: "spam", help: "The spam argument."); // Position string value 2. parser.AddArgument(name: "eggs", help: "Some help on eggs."); if (args.Contains("--help")) { Console.WriteLine(parser.HelpText); Environment.Exit(0); } IDictionary <string, dynamic> parsedArgs = null; try { parsedArgs = parser.ParseArgs(args); } catch (ArgumentParseException e) { Console.WriteLine($"Error: {e.Message}"); Environment.Exit(2); } foreach (var entry in parsedArgs) { if (entry.Value is IList <string> ) { var s = string.Join(", ", entry.Value as IList <string>); Console.WriteLine($"> '{entry.Key}': '{s}'"); } else { Console.WriteLine($"> '{entry.Key}': '{entry.Value}'"); } } }
static void Main(string[] args) { try { ArgumentParser parser = new ArgumentParser(new ParserSettings() { Description = "OctoBot" }); parser.AddArgument(new Argument("-v", "--version") { HelpText = "Отображает текущую версию OctoBot.", ActionName = ActionNames.STORE_TRUE }); parser.AddArgument(new Argument("-s", "--simulate") { HelpText = "Принудительный запуск OctoBot только с симулятором торговых операций.", ActionName = ActionNames.STORE_TRUE }); parser.AddArgument(new Argument("-rts", "--reset-trading-history") { HelpText = "Принудительный сброс истории торговых операций. Теперь берется следующий портфель в качестве ориентира прибыльности, а симуляторы торговых операций будут использовать новый портфель.", ActionName = ActionNames.STORE_TRUE }); parser.AddArgument(new Argument("-d", "--data_collector") { HelpText = "Запуск процесс сбора данных, чтобы их использовать в тестировании на исторических данных.", ActionName = ActionNames.STORE_TRUE }); parser.AddArgument(new Argument("-b", "--backtesting") { HelpText = "Запуск OctoBot в режиме тестирования на исторических данных, используйте конфигурацию тестирования на исторических данных, сохраненную в config.json.", ActionName = ActionNames.STORE_TRUE }); parser.AddArgument(new Argument("-ba", "--backtesting_analysis") { HelpText = "Дополнительный аргумент для того, чтобы не останавливать бота в конце тестирования на исторических данных (полезно анализировать такие результаты, используя визуальные интерфейсы, например - веб-интерфейс).", ActionName = ActionNames.STORE_TRUE }); parser.AddArgument(new Argument("-r", "--risk") { Type = typeof(decimal), HelpText = "Принудительное определение значения конкретной конфигурации риска (от 0 до 1)." }); parser.AddArgument(new Argument("-nw", "--no_web") { HelpText = "Отключение запуска веб-интерфейса OctoBot.", ActionName = ActionNames.STORE_TRUE }); parser.AddArgument(new Argument("-no", "--no_open_web") { HelpText = "Отключение автоматического отрытия веб-интерфейса.", ActionName = ActionNames.STORE_TRUE }); parser.AddArgument(new Argument("-nt", "--no_telegram") { HelpText = "Запустите OctoBot без интерфейса Telegram, даже если учетные данные Telegram находятся в конфигурации. Интерфейс Telegram необходим для прослушивания сигналов Telegram и обсуждения с OctoBot по Telegram.", ActionName = ActionNames.STORE_TRUE }); parser.AddArgument(new Argument("--encrypter") { HelpText = "Запускаем обмен api ключей шифратора. Этот инструмент полезен для ручного добавления конфигурации бирж в ваш config.json без использования какого-либо интерфейса (т.е. веб-интерфейса, который автоматически обрабатывает шифрование).", ActionName = ActionNames.STORE_TRUE }); parser.AddArgument(new Argument("-p", "--packager") { HelpText = "Запуск OctoBot Tentacles Manager. Примеры: -p install all для установки всех пакетов tentacles и -p install [tentacle] для установки определенного tentacle. Tentacles Manager позволяет устанавливать, обновлять, удалять и сбрасывать tentacles. Вы можете указать ветви github с помощью branch = параметр. Вы также можете пропустить ввод подтверждения установки, добавив принудительный параметр. Используйте: -p help, чтобы получить справку Tentacle Manager.", ValueCount = new ValueCount("+") }); parser.AddArgument(new Argument("-c", "--creator") { HelpText = "Запуск OctoBot Tentacles Creator. Примеры: -c Evaluator для создания нового определения tentacle. Использование: -c help для получения помощи Tentacle Creator.", ValueCount = new ValueCount("+") }); parser.AddArgument(new Argument("-o", "--strategy_optimizer") { HelpText = "Запуск оптимизатора стратегий Octobot. Этот режим заставит октобота воспроизводить сценарии тестирования на исторических данных, расположенные в abstract_strategy_test.py с различными таймфреймами, определениями и рисками, используя режим торговли, заданный в config.json. Этот инструмент полезен для быстрого тестирования стратегии и автоматического поиска лучших совместимых настроек. Параметр - это название класса стратегии для тестирования. Пример: -o FullMixedStrategiesEvaluator Предупреждение: этот процесс может занять много времени.", ValueCount = new ValueCount("+") }); var parseResult = parser.ParseArguments(args); StartCoreService(parseResult); } catch (Exception exc) { Debug.WriteLine(1); } Console.WriteLine("Hello World!"); }
public void Awake() { instance = this; Physics.autoSimulation = false; boxTransform = box.transform; // Define and read arguments ArgumentParser argParser = new ArgumentParser(); argParser.AddArgument("-targetFrameRate", false, "50"); argParser.AddArgument("-portAgentSend", false, "26001"); argParser.AddArgument("-portAgentReceive", false, "26000"); argParser.AddArgument("-controlRotation", false, "1"); argParser.AddArgument("-controlVelocity", false, "0"); argParser.AddArgument("-autoRollTarget", false, "1"); argParser.AddArgument("-autoTargetMin", false, "-45"); argParser.AddArgument("-autoTargetMax", false, "45"); argParser.AddArgument("-rotStartMin", false, "-20"); argParser.AddArgument("-rotStartMax", false, "20"); argParser.AddArgument("-angVelStartMin", false, "-5"); argParser.AddArgument("-angVelStartMax", false, "5"); argParser.AddArgument("-velStartMin", false, "-10"); argParser.AddArgument("-velStartMax", false, "10"); argParser.ParseArguments(); // Read arguments Application.targetFrameRate = argParser.GetIntArgument("-targetFrameRate"); QualitySettings.vSyncCount = 0; externalAgent = argParser.arguments["-portAgentSend"].isSupplied && argParser.arguments["-portAgentReceive"].isSupplied; portAgentSend = argParser.arguments["-portAgentSend"].valueInt; portAgentReceive = argParser.arguments["-portAgentReceive"].valueInt; controlRotation = argParser.arguments["-controlRotation"].valueInt == 1; controlVelocity = argParser.arguments["-controlVelocity"].valueInt == 1; autoRollTarget = argParser.arguments["-autoRollTarget"].valueInt == 1; autoTargetMin = argParser.arguments["-autoTargetMin"].valueFloat; autoTargetMax = argParser.arguments["-autoTargetMax"].valueFloat; rotStartMin = argParser.arguments["-rotStartMin"].valueFloat; rotStartMax = argParser.arguments["-rotStartMax"].valueFloat; angVelStartMin = argParser.arguments["-angVelStartMin"].valueFloat; angVelStartMax = argParser.arguments["-angVelStartMax"].valueFloat; velStartMin = argParser.arguments["-velStartMin"].valueFloat; velStartMax = argParser.arguments["-velStartMax"].valueFloat; // Instantiate agent controller (external or local human controller) if (externalAgent) { agentController = new BoxExternalAgentController(observationDimension, actionDimension, portAgentSend, portAgentReceive); } else { agentController = new BoxHumanAgentController(boxInputReader); } // Initiate environment ResetEnvironment(); }
void Awake() { instance = this; Physics.autoSimulation = false; analytics = new AircraftAnalytics(airplane, airplane.transform); ArgumentParser argParser = new ArgumentParser(); argParser.AddArgument("-targetFrameRate", false, "50"); argParser.AddArgument("-portAgentSend", false, "26001"); argParser.AddArgument("-portAgentReceive", false, "26000"); argParser.AddArgument("-trees", false, "1"); argParser.AddArgument("-difficulty", false, "1.0"); argParser.AddArgument("-actionFrequency", false, "1"); argParser.AddArgument("-windAngle", false, "0"); argParser.AddArgument("-windPower", false, "2.5"); argParser.AddArgument("-windAngleDeviation", false, "25"); argParser.AddArgument("-penaltyActionCoefficient", false, "0.000"); argParser.AddArgument("-penaltyTimeCoefficient", false, "0.00000"); argParser.AddArgument("-limitMode", false, "0"); argParser.ParseArguments(); difficulty = argParser.arguments["-difficulty"].valueFloat; limitMode = argParser.arguments["-limitMode"].valueInt; actionFrequency = argParser.arguments["-actionFrequency"].valueInt; penaltyActionCoefficient = argParser.arguments["-penaltyActionCoefficient"].valueFloat; penaltyTimeCoefficient = argParser.arguments["-penaltyTimeCoefficient"].valueFloat; FlightWind.windPower = argParser.arguments["-windPower"].valueFloat; FlightWind.windMean = FlightWind.windPower; FlightWind.pitchDeviationMax = argParser.arguments["-windAngleDeviation"].valueFloat; FlightWind.yawDeviationMax = argParser.arguments["-windAngleDeviation"].valueFloat; FlightWind.SetWindDirection(argParser.arguments["-windAngle"].valueFloat); Application.targetFrameRate = argParser.GetIntArgument("-targetFrameRate"); QualitySettings.vSyncCount = 0; externalAgent = argParser.arguments["-portAgentSend"].isSupplied && argParser.arguments["-portAgentReceive"].isSupplied; portAgentSend = argParser.arguments["-portAgentSend"].valueInt; portAgentReceive = argParser.arguments["-portAgentReceive"].valueInt; if (externalAgent) { agentController = new BoxExternalAgentController(observationDimension, actionDimension, portAgentSend, portAgentReceive); } else { agentController = new FlightHumanAgentController(flightInputReader); } if (argParser.arguments["-trees"].valueInt == 1) { treeGenerator.enabled = true; } }