SimulationManager.Init C# (CSharp) Method

Init() public static method

public static Init ( ) : void
return void
    public static void Init()
    {
        //used for permissions purposes. when binary generates output logs, they do so under root,
        //and the editor does not have permissions to overwrite them.
        #if UNITY_EDITOR
        SimulationManager.logFileLocation = "output_log.txt";
        #endif

        if (_hasFinishedInit)
            return;
        System.IO.File.WriteAllText(logFileLocation, "Starting Initialization:\n");
        Application.logMessageReceived += HandleLog;
        List<string> args = new List<string>(System.Environment.GetCommandLineArgs());
        Debug.Log ("args: " + args.ToString());

        // default settings
        int screenWidth = Screen.width;
        int screenHeight = Screen.height;
        string preferredImageFormat = "png";
        bool shouldCreateServer = true;
        bool shouldCreateTestClient = false;
        bool debugNetworkMessages = false;
        bool logSimpleTimeInfo = false;
        bool logDetailedTimeInfo = false;
        bool saveDebugImageFiles = false;
        string environmentScene = "Empty";

        // Parse arguments
        {
            string output = "Args: ";
            foreach (string arg in args)
            {
                Debug.Log ("Arg: " + arg);
                output += "'" + arg + "' ";
                if (arg.StartsWith ("-port=")) {
                    try {
                        portNumber = arg.Substring ("-port=".IndexOf ("=") + 1);
                    } catch {
                        Debug.LogWarning ("No port number!");
                    }
                } else if (arg.StartsWith ("-address=")) {
                    try {
                        hostAddress = arg.Substring ("-address=".IndexOf ("=") + 1);
                    } catch {
                        Debug.LogWarning ("No host address!");
                    }
                } else if (arg.StartsWith ("-screenWidth=")) {
                    try {
                        screenWidth = int.Parse (arg.Substring ("-screenWidth=".IndexOf ("=") + 1));
                    } catch {
                        Debug.LogWarning ("No screen width!");
                    }
                } else if (arg.StartsWith ("-screenHeight=")) {
                    try {
                        screenHeight = int.Parse (arg.Substring ("-screenHeight=".IndexOf ("=") + 1));
                    } catch {
                        Debug.LogWarning ("No screen height!");
                    }
                } else if (arg.StartsWith ("-numTimeSteps=")) {
                    try {
                        numPhysicsFramesPerUpdate = int.Parse (arg.Substring ("-numTimeSteps=".IndexOf ("=") + 1));
                    } catch {
                        Debug.LogWarning ("No num time steps!");
                    }
                } else if (arg.StartsWith ("-timeStep=")) {
                    try {
                        Time.fixedDeltaTime = int.Parse (arg.Substring ("-timeStep=".IndexOf ("=") + 1));
                    } catch {
                        Debug.LogWarning ("No time step duration!");
                    }
                } else if (arg.StartsWith ("-profilerFrames=")) {
                    try {
                        profilerFrames = int.Parse (arg.Substring ("-profilerFrames=".IndexOf ("=") + 1));
                    } catch {
                        Debug.LogWarning ("No profiler frames!");
                    }
                } else if (arg.StartsWith ("-preferredImageFormat=")) {
                    try {
                        preferredImageFormat = arg.Substring ("-preferredImageFormat=".IndexOf ("=") + 1);
                    } catch {
                        Debug.LogWarning ("No targetFPS!");
                    }
                } else if (arg.StartsWith ("-shouldCreateServer")) {
                    shouldCreateServer = true;
                } else if (arg.StartsWith ("-shouldCreateTestClient")) {
                    shouldCreateTestClient = true;
                } else if (arg.StartsWith ("-debugNetworkMessages")) {
                    debugNetworkMessages = true;
                } else if (arg.StartsWith ("-logSimpleTimingInfo")) {
                    logSimpleTimeInfo = true;
                } else if (arg.StartsWith ("-logDetailedTimingInfo")) {
                    logDetailedTimeInfo = true;
                } else if (arg.StartsWith ("-targetFPS")) {
                    try {
                        targetFrameRate = int.Parse (arg.Substring ("-targetFPS=".IndexOf ("=") + 1));
                    } catch {
                        Debug.LogWarning ("No target FPS!");
                    }
                } else if (arg.StartsWith ("-saveDebugImageFiles=")) {
                    saveDebugImageFiles = true;
                }
            }
            Debug.Log(output);
        }

        Screen.SetResolution(screenWidth, screenHeight, Screen.fullScreen);

        physicsTimeMultiplier = targetFrameRate * (Time.fixedDeltaTime * numPhysicsFramesPerUpdate * 1.05f);
        // Multiplier must be float between 0 and 100.0f
        if (physicsTimeMultiplier > 100)
        {
            targetFrameRate = Mathf.FloorToInt(targetFrameRate * 100f / physicsTimeMultiplier);
            physicsTimeMultiplier = targetFrameRate * (Time.fixedDeltaTime * numPhysicsFramesPerUpdate * 1.05f);
        }
        QualitySettings.vSyncCount = 0;
        Profiler.maxNumberOfSamplesPerFrame = profilerFrames;
        Application.targetFrameRate = targetFrameRate;
        // Debug.LogFormat("Setting target render FPS to {0} with speedup: {1} with phys timestep of {2} and {3} phys frames, maxDT: {4}", targetFrameRate, physicsTimeMultiplier, Time.fixedDeltaTime, numPhysicsFramesPerUpdate, Time.maximumDeltaTime);

        // Init NetMessenger
        myNetMessenger = GameObject.FindObjectOfType<NetMessenger>();
        Debug.Log (portNumber);
        if (myNetMessenger != null)
            myNetMessenger.Init(hostAddress, portNumber, shouldCreateTestClient,shouldCreateServer, debugNetworkMessages,
                logSimpleTimeInfo, logDetailedTimeInfo, preferredImageFormat, saveDebugImageFiles, environmentScene);
        else
            Debug.LogWarning("Couldn't find a NetMessenger to Initialize!");

        _hasFinishedInit = true;
    }

Usage Example

 private void Init_Btn_Click(object sender, RoutedEventArgs e)
 {
     Task.Factory.StartNew(() => {
         ReportManager.Init(this);
         StreetMapManager.Init();
         SimulationManager.Init();
     });
     Stopped_Grid.Visibility = Visibility.Visible;
     init = true;
 }