355 lines
14 KiB
C#
Executable File
355 lines
14 KiB
C#
Executable File
using UnityEngine;
|
|
|
|
public class GlobalStateEditor : MonoBehaviour
|
|
{
|
|
|
|
public Rect rect;
|
|
private Vector2 scrollPosition = Vector2.zero;
|
|
|
|
public int port
|
|
{
|
|
get { return GlobalState.port; }
|
|
set { GlobalState.port = value; }
|
|
}
|
|
public int portPrivateAPI
|
|
{
|
|
get { return GlobalState.portPrivateAPI; }
|
|
set { GlobalState.portPrivateAPI = value; }
|
|
}
|
|
public int fps
|
|
{
|
|
get { return GlobalState.fps; }
|
|
set { GlobalState.fps = value; }
|
|
}
|
|
public int maxSplitScreen
|
|
{
|
|
get { return GlobalState.maxSplitScreen; }
|
|
set { GlobalState.maxSplitScreen = value; }
|
|
}
|
|
public bool generateTrees
|
|
{
|
|
get { return GlobalState.generateTrees; }
|
|
set { GlobalState.generateTrees = value; }
|
|
}
|
|
public bool extendedTelemetry
|
|
{
|
|
get { return GlobalState.extendedTelemetry; }
|
|
set { GlobalState.extendedTelemetry = value; }
|
|
}
|
|
public bool generateRandomCones
|
|
{
|
|
get { return GlobalState.generateRandomCones; }
|
|
set { GlobalState.generateRandomCones = value; }
|
|
}
|
|
public bool randomLight
|
|
{
|
|
get { return GlobalState.randomLight; }
|
|
set { GlobalState.randomLight = value; }
|
|
}
|
|
public bool raceCameras
|
|
{
|
|
get { return GlobalState.raceCameras; }
|
|
set { GlobalState.raceCameras = value; }
|
|
}
|
|
public bool overheadCamera
|
|
{
|
|
get { return GlobalState.overheadCamera; }
|
|
set { GlobalState.overheadCamera = value; }
|
|
}
|
|
public bool drawLidar
|
|
{
|
|
get { return GlobalState.drawLidar; }
|
|
set { GlobalState.drawLidar = value; }
|
|
}
|
|
public bool paceCar
|
|
{
|
|
get { return GlobalState.paceCar; }
|
|
set { GlobalState.paceCar = value; }
|
|
}
|
|
public bool manualDriving
|
|
{
|
|
get { return GlobalState.manualDriving; }
|
|
set { GlobalState.manualDriving = value; }
|
|
}
|
|
public float kp
|
|
{
|
|
get { return GlobalState.kp; }
|
|
set { GlobalState.kp = value; }
|
|
}
|
|
public float kd
|
|
{
|
|
get { return GlobalState.kd; }
|
|
set { GlobalState.kd = value; }
|
|
}
|
|
public float ki
|
|
{
|
|
get { return GlobalState.ki; }
|
|
set { GlobalState.ki = value; }
|
|
}
|
|
public bool useSeed
|
|
{
|
|
get { return GlobalState.useSeed; }
|
|
set { GlobalState.useSeed = value; }
|
|
}
|
|
public int seed
|
|
{
|
|
get { return GlobalState.seed; }
|
|
set { GlobalState.seed = value; }
|
|
}
|
|
public string privateKey
|
|
{
|
|
get { return GlobalState.privateKey; }
|
|
set { GlobalState.privateKey = value; }
|
|
}
|
|
public string additionnalContentPath
|
|
{
|
|
get { return GlobalState.additionnalContentPath; }
|
|
set { GlobalState.additionnalContentPath = value; }
|
|
}
|
|
public float timeScale
|
|
{
|
|
get { return GlobalState.timeScale; }
|
|
set { GlobalState.timeScale = value; Time.timeScale = value; }
|
|
}
|
|
public float timeOut
|
|
{
|
|
get { return GlobalState.timeOut; }
|
|
set { GlobalState.timeOut = value; }
|
|
}
|
|
|
|
private bool showPrivateKey = false;
|
|
private VersionCheck versionCheck;
|
|
void Awake()
|
|
{
|
|
LoadPlayerPrefs();
|
|
SaveToPlayerPrefs();
|
|
|
|
versionCheck = gameObject.GetComponent<VersionCheck>();
|
|
|
|
//keep it processing even when not in focus.
|
|
Application.runInBackground = true;
|
|
|
|
//Set desired frame rate as high as possible.
|
|
Application.targetFrameRate = GlobalState.fps;
|
|
}
|
|
|
|
void OnGUI()
|
|
{
|
|
int pixXOffset = (int)(rect.x * Screen.width);
|
|
int pixYOffset = (int)(rect.y * Screen.height);
|
|
int width = (int)(rect.width * Screen.width);
|
|
int height = (int)(rect.height * Screen.height);
|
|
|
|
int LabelXOffset = 100;
|
|
|
|
int scrollHeight = 220;
|
|
int scrollWidth = 200;
|
|
|
|
int YOffset = 0;
|
|
int Ysteps = 20;
|
|
|
|
|
|
GUI.BeginGroup(new Rect(pixXOffset, pixYOffset, width, height));
|
|
scrollPosition = GUI.BeginScrollView(new Rect(0, 0, width, height), scrollPosition, new Rect(0, 0, scrollWidth, scrollHeight), false, false);
|
|
|
|
GUI.Label(new Rect(0, YOffset, LabelXOffset, 20), "port");
|
|
string portString = GUI.TextField(new Rect(LabelXOffset, YOffset, width-LabelXOffset, 20), port.ToString());
|
|
int tmp_port = port;
|
|
int.TryParse(portString, out tmp_port);
|
|
if (tmp_port != port)
|
|
port = tmp_port;
|
|
YOffset += Ysteps;
|
|
|
|
GUI.Label(new Rect(0, YOffset, LabelXOffset, 20), "portPrivateAPI");
|
|
string portPrivateAPIString = GUI.TextField(new Rect(LabelXOffset, YOffset, width-LabelXOffset, 20), portPrivateAPI.ToString());
|
|
int tmp_portPrivateAPI = portPrivateAPI;
|
|
int.TryParse(portPrivateAPIString, out tmp_portPrivateAPI);
|
|
if (tmp_portPrivateAPI != portPrivateAPI)
|
|
portPrivateAPI = tmp_portPrivateAPI;
|
|
YOffset += Ysteps;
|
|
|
|
GUI.Label(new Rect(0, YOffset, LabelXOffset, 20), "FPS limit");
|
|
string fpsString = GUI.TextField(new Rect(LabelXOffset, YOffset, width-LabelXOffset, 20), fps.ToString());
|
|
int tmp_fps = fps;
|
|
int.TryParse(fpsString, out tmp_fps);
|
|
if (tmp_fps != fps)
|
|
fps = tmp_fps;
|
|
YOffset += Ysteps;
|
|
|
|
GUI.Label(new Rect(0, YOffset, LabelXOffset, 20), "Time scale");
|
|
string timeScaleString = GUI.TextField(new Rect(LabelXOffset, YOffset, width-LabelXOffset, 20), timeScale.ToString());
|
|
float tmp_timeScale = timeScale;
|
|
float.TryParse(timeScaleString, out tmp_timeScale);
|
|
if (tmp_timeScale != timeScale)
|
|
timeScale = tmp_timeScale;
|
|
YOffset += Ysteps;
|
|
|
|
GUI.Label(new Rect(0, YOffset, LabelXOffset, 20), "Time out");
|
|
string timeOutString = GUI.TextField(new Rect(LabelXOffset, YOffset, width-LabelXOffset, 20), timeOut.ToString());
|
|
float tmp_timeOut = timeOut;
|
|
float.TryParse(timeOutString, out tmp_timeOut);
|
|
if (tmp_timeOut != timeOut)
|
|
timeOut = tmp_timeOut;
|
|
YOffset += Ysteps;
|
|
|
|
GUI.Label(new Rect(0, YOffset, LabelXOffset, 20), "Max SplitScreen");
|
|
string maxspString = GUI.TextField(new Rect(LabelXOffset, YOffset, width-LabelXOffset, 20), maxSplitScreen.ToString());
|
|
int tmp_maxsp = maxSplitScreen;
|
|
int.TryParse(maxspString, out tmp_maxsp);
|
|
if (tmp_maxsp != maxSplitScreen)
|
|
maxSplitScreen = tmp_maxsp;
|
|
YOffset += Ysteps;
|
|
|
|
extendedTelemetry = GUI.Toggle(new Rect(0, YOffset, width, 20), extendedTelemetry, "extendedTelemetry");
|
|
YOffset += Ysteps;
|
|
generateTrees = GUI.Toggle(new Rect(0, YOffset, width, 20), generateTrees, "generateTrees");
|
|
YOffset += Ysteps;
|
|
generateRandomCones = GUI.Toggle(new Rect(0, YOffset, width, 20), generateRandomCones, "generateRandomCones");
|
|
YOffset += Ysteps;
|
|
randomLight = GUI.Toggle(new Rect(0, YOffset, width, 20), randomLight, "randomLight");
|
|
YOffset += Ysteps;
|
|
raceCameras = GUI.Toggle(new Rect(0, YOffset, width, 20), raceCameras, "raceCameras");
|
|
YOffset += Ysteps;
|
|
overheadCamera = GUI.Toggle(new Rect(0, YOffset, width, 20), overheadCamera, "overheadCamera");
|
|
YOffset += Ysteps;
|
|
drawLidar = GUI.Toggle(new Rect(0, YOffset, width, 20), drawLidar, "drawLidar");
|
|
YOffset += Ysteps;
|
|
paceCar = GUI.Toggle(new Rect(0, YOffset, width, 20), paceCar, "paceCar");
|
|
YOffset += Ysteps;
|
|
if (paceCar)
|
|
{
|
|
manualDriving = GUI.Toggle(new Rect(Ysteps, YOffset, width, 20), manualDriving, "manualDriving");
|
|
YOffset += Ysteps;
|
|
|
|
if (!manualDriving)
|
|
{
|
|
GUI.Label(new Rect(Ysteps, YOffset, LabelXOffset, 20), "kp");
|
|
string kpString = GUI.TextField(new Rect(LabelXOffset+Ysteps, YOffset, width-LabelXOffset-Ysteps, 20), kp.ToString());
|
|
float tmp_kp = kp;
|
|
float.TryParse(kpString, out tmp_kp);
|
|
if (tmp_kp != kp)
|
|
kp = tmp_kp;
|
|
YOffset += Ysteps;
|
|
|
|
GUI.Label(new Rect(Ysteps, YOffset, LabelXOffset, 20), "kd");
|
|
string kdString = GUI.TextField(new Rect(LabelXOffset+Ysteps, YOffset, width-LabelXOffset-Ysteps, 20), kd.ToString());
|
|
float tmp_kd = kd;
|
|
float.TryParse(kdString, out tmp_kd);
|
|
if (tmp_kd != kd)
|
|
kd = tmp_kd;
|
|
YOffset += Ysteps;
|
|
|
|
GUI.Label(new Rect(Ysteps, YOffset, LabelXOffset, 20), "ki");
|
|
string kiString = GUI.TextField(new Rect(LabelXOffset+Ysteps, YOffset, width-LabelXOffset-Ysteps, 20), ki.ToString());
|
|
float tmp_ki = ki;
|
|
float.TryParse(kiString, out tmp_ki);
|
|
if (tmp_ki != ki)
|
|
ki = tmp_ki;
|
|
YOffset += Ysteps;
|
|
}
|
|
}
|
|
|
|
useSeed = GUI.Toggle(new Rect(0, YOffset, width, 20), useSeed, "useSeed");
|
|
YOffset += Ysteps;
|
|
if (useSeed)
|
|
{
|
|
GUI.Label(new Rect(0, YOffset, LabelXOffset, 20), "Seed");
|
|
string seedString = GUI.TextField(new Rect(LabelXOffset, YOffset, width, 20), seed.ToString());
|
|
YOffset += Ysteps;
|
|
int tmp_seed = seed;
|
|
int.TryParse(seedString, out tmp_seed);
|
|
if (tmp_seed != seed)
|
|
seed = tmp_seed;
|
|
}
|
|
|
|
YOffset += Ysteps;
|
|
bool doSave = GUI.Button(new Rect(0, YOffset, width, 20), "Save");
|
|
YOffset += Ysteps;
|
|
|
|
// Check if the version used is the latest version if not, notify the user !
|
|
if (versionCheck.latest != GlobalState.version)
|
|
{
|
|
YOffset += Ysteps;
|
|
bool getLatest = GUI.Button(new Rect(0, YOffset, width, Ysteps * 2), "A new version is available, \n click here to get latest version !");
|
|
YOffset += Ysteps * 2;
|
|
if (getLatest) { versionCheck.GetLatestVersion(); }
|
|
}
|
|
|
|
YOffset += Ysteps;
|
|
showPrivateKey = GUI.Toggle(new Rect(0, YOffset, width, 20), showPrivateKey, "showPrivateKey");
|
|
YOffset += Ysteps;
|
|
if (showPrivateKey)
|
|
{
|
|
GUI.Label(new Rect(0, YOffset, LabelXOffset, 20), "Private API Key");
|
|
privateKey = GUI.TextField(new Rect(LabelXOffset, YOffset, width, 20), privateKey);
|
|
YOffset += Ysteps;
|
|
|
|
bool doRandomize = GUI.Button(new Rect(0, YOffset, width, 20), "Randomize private key");
|
|
YOffset += Ysteps;
|
|
if (doRandomize) { RandomizePrivateKey(); }
|
|
}
|
|
|
|
if (doSave) { SaveToPlayerPrefs(); }
|
|
|
|
GUI.EndScrollView();
|
|
GUI.EndGroup();
|
|
}
|
|
|
|
void SaveToPlayerPrefs()
|
|
{
|
|
PlayerPrefs.SetInt("port", port);
|
|
PlayerPrefs.SetInt("portPrivateAPI", portPrivateAPI);
|
|
PlayerPrefs.SetInt("fps", fps);
|
|
PlayerPrefs.SetFloat("timeScale", timeScale);
|
|
PlayerPrefs.SetFloat("timeOut", timeOut);
|
|
PlayerPrefs.SetInt("maxSplitScreen", maxSplitScreen);
|
|
PlayerPrefs.SetInt("generateTrees", generateTrees ? 1 : 0);
|
|
PlayerPrefs.SetInt("extendedTelemetry", extendedTelemetry ? 1 : 0);
|
|
PlayerPrefs.SetInt("generateRandomCones", generateRandomCones ? 1 : 0);
|
|
PlayerPrefs.SetInt("randomLight", randomLight ? 1 : 0);
|
|
PlayerPrefs.SetInt("raceCameras", raceCameras ? 1 : 0);
|
|
PlayerPrefs.SetInt("overheadCamera", overheadCamera ? 1 : 0);
|
|
PlayerPrefs.SetInt("drawLidar", drawLidar ? 1 : 0);
|
|
PlayerPrefs.SetInt("paceCar", paceCar ? 1 : 0);
|
|
PlayerPrefs.SetInt("manualDriving", manualDriving ? 1 : 0);
|
|
PlayerPrefs.SetFloat("kp", kp);
|
|
PlayerPrefs.SetFloat("kd", kd);
|
|
PlayerPrefs.SetFloat("ki", ki);
|
|
PlayerPrefs.SetInt("useSeed", useSeed ? 1 : 0);
|
|
PlayerPrefs.SetString("privateKey", privateKey);
|
|
|
|
PlayerPrefs.Save();
|
|
}
|
|
|
|
void LoadPlayerPrefs()
|
|
{
|
|
port = PlayerPrefs.GetInt("port", port);
|
|
portPrivateAPI = PlayerPrefs.GetInt("portPrivateAPI", portPrivateAPI);
|
|
fps = PlayerPrefs.GetInt("fps", fps);
|
|
timeScale = PlayerPrefs.GetFloat("timeScale", timeScale);
|
|
timeOut = PlayerPrefs.GetFloat("timeOut", timeOut);
|
|
maxSplitScreen = PlayerPrefs.GetInt("maxSplitScreen", maxSplitScreen);
|
|
generateTrees = PlayerPrefs.GetInt("generateTrees", generateTrees ? 1 : 0) == 1 ? true : false;
|
|
extendedTelemetry = PlayerPrefs.GetInt("extendedTelemetry", extendedTelemetry ? 1 : 0) == 1 ? true : false;
|
|
generateRandomCones = PlayerPrefs.GetInt("generateRandomCones", generateRandomCones ? 1 : 0) == 1 ? true : false;
|
|
randomLight = PlayerPrefs.GetInt("randomLight", randomLight ? 1 : 0) == 1 ? true : false;
|
|
raceCameras = PlayerPrefs.GetInt("raceCameras", raceCameras ? 1 : 0) == 1 ? true : false;
|
|
overheadCamera = PlayerPrefs.GetInt("overheadCamera", overheadCamera ? 1 : 0) == 1 ? true : false;
|
|
drawLidar = PlayerPrefs.GetInt("drawLidar", drawLidar ? 1 : 0) == 1 ? true : false;
|
|
paceCar = PlayerPrefs.GetInt("paceCar", paceCar ? 1 : 0) == 1 ? true : false;
|
|
manualDriving = PlayerPrefs.GetInt("manualDriving", manualDriving ? 1 : 0) == 1 ? true : false;
|
|
kp = PlayerPrefs.GetFloat("kp", kp);
|
|
kd = PlayerPrefs.GetFloat("kd", kd);
|
|
ki = PlayerPrefs.GetFloat("ki", ki);
|
|
useSeed = PlayerPrefs.GetInt("useSeed", useSeed ? 1 : 0) == 1 ? true : false;
|
|
privateKey = PlayerPrefs.GetString("privateKey", Random.Range(10000000, 99999999).ToString());
|
|
additionnalContentPath = Application.streamingAssetsPath;
|
|
}
|
|
|
|
void RandomizePrivateKey()
|
|
{
|
|
privateKey = Random.Range(10000000, 99999999).ToString();
|
|
PlayerPrefs.SetString("privateKey", privateKey);
|
|
PlayerPrefs.Save();
|
|
}
|
|
} |