public ActionResult AddToTrack(int?VehicleId) { VehicleTrack = new VehicleTrack(); int total = _trackDBContext.VehicleTracks.Count(); if (total >= 5) { return(Json(new { success = false, message = "race track is full!" })); } var vehicle = _trackDBContext.VehicleTracks.FirstOrDefault(u => u.VehicleId == VehicleId); if (vehicle != null) { return(Json(new { success = false, message = "this vehicle is already on track!" })); } else { VehicleTrack.VehicleId = (int)VehicleId; VehicleTrack.TrackId = 1; _trackDBContext.VehicleTracks.Add(VehicleTrack); _trackDBContext.SaveChanges(); } return(View("Index")); }
void Update() { var chg = CheckChg(); foreach (var vname in registeredVehicleTracks) { var vtrk = VehicleTrack.Lookup(vname); if (vtrk != null) { vtrk.UpdateState(chg); } } if (simulationRunning) { CheckVehicleCollisions(); } if (moveToLastCollision) { MoveToLastCollision(); moveToLastCollision = false; } if (restartCollisionVehicles) { RestartThings(); restartCollisionVehicles = false; } if (loadAllTracks) { StartCoroutine(LoadAllTracks()); loadAllTracks = false; } if (unloadAllTracks) { UnloadAllTracks(); unloadAllTracks = false; } if (testStartSimulation) { RestartSimulation(); testStartSimulation = false; } if (testStopSimulation) { StopSimulation(); testStopSimulation = false; } UpdateSimulationTime(); updatecount++; }
public ActionResult RemoveFromTrack(int?VehicleId) { VehicleTrack = _trackDBContext.VehicleTracks.FirstOrDefault(u => u.VehicleId == VehicleId); if (VehicleTrack == null) { return(Json(new { success = false, message = "vehicle not found!" })); } else { _trackDBContext.VehicleTracks.Remove(VehicleTrack); _trackDBContext.SaveChanges(); } return(Json(new { success = false, message = "Removed from track!" })); }
public static VehicleTrack[] RegisterTracks(VehicleTrackMan dtm, string[] tracknames, string[] colors) { var ln = tracknames.Length; var rv = new VehicleTrack[ln]; for (int i = 0; i < ln; i++) { var iclr = i % colors.Length; var newname = tracknames[i]; var newclr = colors[iclr]; var vtrkgo = new GameObject(newname); var vtrk = vtrkgo.AddComponent <VehicleTrack>(); vtrk.Init(dtm, newname, newclr); rv[i] = vtrk; dozyTrackLookup[newname] = vtrk; } tracklayer = dtm.qmm.layerman.AddLayer("tracks"); trackParent = tracklayer.gameObject; vehiclelayer = dtm.qmm.layerman.AddLayer("vehicles"); vehicleParent = vehiclelayer.gameObject; return(rv); }
// Start is called before the first frame update void Start() { vehicleTracks = VehicleTrack.RegisterTracks(this, tracknames, trackcolors); registeredVehicleTracks = VehicleTrack.GetRegisteredTracks(); }
public void Init(VehicleTrack vehicleTrack, SimpleDf sdf, GameObject vehicleParent, string avatartype, float startime, float avaSecpersecInput) { this.vehicleTrack = vehicleTrack; this.vtm = vehicleTrack.vtm; this.sdf = sdf; this.avaSecpersec = avaSecpersecInput; var cnt = Count(avatartype); totcnt++; avaGo = new GameObject(avatartype + "_" + cnt); avaGo.transform.parent = vehicleParent.transform; GameObject prefabgo = null; var shift = Vector3.zero; var angle = 0; var scale = 1; switch (avatartype) { case "DumpTruck": scale = 1; angle = 180; prefabgo = Resources.Load <GameObject>("obj/DumpTruck_TS1"); break; case "Dozer1": scale = 1; angle = 0; shift = new Vector3(-28.80f, 0, 0); prefabgo = Resources.Load <GameObject>("obj/Dozer1"); break; case "Dozer2": scale = 1; angle = 0; shift = new Vector3(-20, 0, 0); prefabgo = Resources.Load <GameObject>("obj/Dozer2"); break; case "Minehaul1": scale = 1; angle = 0; shift = new Vector3(0, 0, 0); prefabgo = Resources.Load <GameObject>("obj/Minehaul1"); break; case "Shovel1": scale = 1; angle = 0; shift = new Vector3(-10, 0, 0); prefabgo = Resources.Load <GameObject>("obj/Shovel1"); break; case "Rover": scale = 1; angle = 0; shift = new Vector3(0, 0, 0); prefabgo = Resources.Load <GameObject>("obj/Rover2"); break; case "Sailboat1": scale = 1; angle = 90; shift = new Vector3(0, 0, 0); prefabgo = Resources.Load <GameObject>("obj/Sailboat1"); break; case "Sailboat100": scale = 100; angle = 90; this.avaSecpersec = avaSecpersec * 100; shift = new Vector3(0, 0, 0); prefabgo = Resources.Load <GameObject>("obj/Sailboat1"); break; } switch (vtm.vehicleInitialPlacement) { case VehicleInitialPlacement.zero: this.starttime = avaSecpersec * vehicleTrack.vtm.GetSimulationTime(); break; case VehicleInitialPlacement.random: this.starttime = vehicleTrack.GetRandomTrackTime(); break; } if (prefabgo == null) { Debug.LogWarning($"Prefab not loaded for {avatartype}"); return; } var skav3 = prefabgo.transform.localScale * scale; Transform t = UnityEngine.Object.Instantiate <Transform>(prefabgo.transform); t.localScale = skav3; t.localRotation = Quaternion.Euler(0, angle, 0); t.position = shift; t.SetParent(avaGo.transform, worldPositionStays: false); MoveToTracktime(); }