コード例 #1
0
        public static CameraDetails ChangeReplayTime(double sessionTime, int carnumber = -1)
        {
            var cam = new CameraDetails(carnumber);

            cam.SetSessionTime(sessionTime);
            return(cam);
        }
コード例 #2
0
        public bool RegisterCamera(CameraDetails cameraDetails)
        {
            try
            {
                if (cameraDetails.ImageDeleted)
                {
                    DeleteCameraImage(cameraDetails);
                }

                if (cameraDetails.UploadedImage == null || PerformCameraImageUpload(cameraDetails))
                {
                    if (cameraDetails.ExistingRoomId <= 0)
                    {
                        DatabaseRoom dbRoom = new DatabaseRoom(cameraDetails);
                        dbRoom.EscapeStringFields();
                        if (!_dbQueryService.PersistNewRoom(dbRoom))
                        {
                            return(false);
                        }
                        cameraDetails.ExistingRoomId = _dbQueryService.GetRoomIdByLocationIdAndRoomName(dbRoom.LocationId, dbRoom.RoomName);
                    }
                    DatabaseCamera dbCamera = new DatabaseCamera(cameraDetails);
                    dbCamera.EscapeStringFields();
                    return(_dbQueryService.PersistExistingCameraByCameraKey(dbCamera, cameraDetails.ImageDeleted));
                }
            }
            catch (Exception e)
            {
                logger.Error(e);
            }

            return(false);
        }
コード例 #3
0
        public static CameraDetails ChangeReplayFrame(int frame, int carnumber = -1)
        {
            var cam = new CameraDetails(carnumber);

            cam.SetReplayFrame(frame);
            return(cam);
        }
コード例 #4
0
        public static void ChangeCamera(CameraDetails camera)
        {
            if (!Simulator.Instance.Sdk.IsConnected)
            {
                return;
            }
            if (Connection.Instance.IsSimulated)
            {
                return;
            }

            var driver = GetFollowedDriver();

            if (driver == null)
            {
                return;
            }

            if (camera.CarNumber < 0)
            {
                camera.CarNumber = driver.Driver.CarNumberRaw;
            }

            // Change camera
            Simulator.Instance.Sdk.Sdk.BroadcastMessage(BroadcastMessageTypes.CamSwitchNum, camera.CarNumber, -1);

            if (camera.ReplayChangeType == CameraDetails.ReplayChangeTypes.SetReplayFrame)
            {
                ChangeReplayFrame(camera.Frame);
            }
            else if (camera.ReplayChangeType == CameraDetails.ReplayChangeTypes.SetSessionTime)
            {
                ChangeReplayTime(camera.SessionTime);
            }
        }
コード例 #5
0
        public ConfirmCameraSyncWindow(UserContainer admin, CameraDetails camera)
        {
            InitializeComponent();

            var driver = Simulator.Instance.Drivers.FirstOrDefault(d => d.Driver.CarNumberRaw == camera.CarNumber);

            var sync = new CameraSync(admin, driver, camera);

            this.DataContext = sync;
        }
コード例 #6
0
 public DatabaseCamera(CameraDetails cameraDetails)
 {
     CameraId      = cameraDetails.CameraId;
     CameraName    = cameraDetails.CameraName;
     LocationId    = cameraDetails.LocationId;
     UserId        = cameraDetails.UserId;
     MonitoredArea = cameraDetails.MonitoredArea;
     Brand         = cameraDetails.Brand;
     Model         = cameraDetails.Model;
     Resolution    = !cameraDetails.CustomResolution.IsNullOrEmpty() ? cameraDetails.CustomResolution : cameraDetails.Resolution;
 }
コード例 #7
0
 // Use this for initialization
 void Start()
 {
     _overheadView  = new CameraDetails(new Vector3(2.84f, 10.1f, 1.96f), new Vector3(90, 0, 0));
     _cameraDetails = new List <CameraDetails> ();
     _cameraDetails.Add(new CameraDetails(new Vector3(-0.82f, 7.15f, -2.4f), new Vector3(45, 45, 0)));
     _cameraDetails.Add(new CameraDetails(new Vector3(-1.8F, 5.36F, 8.06F), new Vector3(45, 135, 0)));
     _cameraDetails.Add(new CameraDetails(new Vector3(8.67f, 5.69f, 8.06f), new Vector3(135, 45, 180)));
     _cameraDetails.Add(new CameraDetails(new Vector3(8.22f, 5.91f, -1.98f), new Vector3(45, -45, 0)));
     _mainCamera.gameObject.SetActive(true);
     _shotCamera.gameObject.SetActive(false);
 }
コード例 #8
0
        public void SwitchToDriver(DriverContainer driver)
        {
            if (driver == null)
            {
                return;
            }

            // Switch client camera to driver
            var camera = CameraDetails.ChangeFocus(driver.Driver.CarNumberRaw);

            CameraControl.ChangeCamera(camera);
        }
コード例 #9
0
 public DatabaseCamera(CameraDetails cameraDetails)
 {
     CameraId   = cameraDetails.CameraId;
     CameraName = cameraDetails.CameraName;
     CameraKey  = cameraDetails.CameraKey;
     LocationId = cameraDetails.LocationId;
     UserId     = cameraDetails.UserId;
     Brand      = cameraDetails.Brand;
     Model      = cameraDetails.Model;
     Resolution = !cameraDetails.CustomResolution.IsNullOrEmpty() ? cameraDetails.CustomResolution : cameraDetails.Resolution;
     ImagePath  = cameraDetails.SavedImagePath;
     RoomId     = cameraDetails.ExistingRoomId;
 }
コード例 #10
0
        private bool PerformCameraImageUpload(CameraDetails cameraDetails)
        {
            IFormFile image = cameraDetails.UploadedImage;

            // If the user has uploaded a file.
            if (image != null)
            {
                // Verify file size, must be under 5 MB.
                if (image.Length > 5000000)
                {
                    return(false);
                }

                // Verify that the file is a valid image file (respects Minimum Size, File Extension and MIME Types).
                if (HttpPostedFileBaseExtensions.IsImage(image))
                {
                    // Proceed to process the request with the valid image.

                    // Obtain the file extension.
                    string fileExtension = Path.GetExtension(image.FileName).ToLower();

                    // Obtain the Database ID of the camera.
                    int cameraId = GetExistingCameraId(cameraDetails.CameraKey);

                    // Save the file to disk.

                    // 1. Ensure the output folder exists.
                    DirectoryInfo outputDirectory = Directory.CreateDirectory(DatabaseCamera.PATH_FOR_USER_UPLOADED_IMAGES);

                    // 2. Create the full file path (output path + filename).
                    string fullFilePath = Path.Combine(outputDirectory.FullName, cameraId + fileExtension);
                    cameraDetails.SavedImagePath = fullFilePath;

                    // 3. Save IFormFile as an image file in the output path.
                    using (var fileStream = new FileStream(fullFilePath, FileMode.Create))
                    {
                        // NOTE: If this was for the Edit page, we would have to delete the previous picture first.
                        Task task = image.CopyToAsync(fileStream);
                        task.GetAwaiter().GetResult();
                    }
                    return(true);
                }
            }

            return(false);
        }
コード例 #11
0
            public CameraSync(UserContainer admin, DriverContainer driver, CameraDetails camera)
            {
                this.Admin  = admin;
                this.Driver = driver;
                this.Camera = camera;

                if (camera.ReplayChangeType == CameraDetails.ReplayChangeTypes.SetReplayFrame)
                {
                    var seconds = Simulator.Instance.Telemetry.SessionTime.Value - (camera.Frame / 60f);
                    var time    = TimeSpan.FromSeconds(seconds);
                    this.SessionTime = string.Format("{0:0}:{1:00}:{2:00}", time.Hours, time.Minutes, time.Seconds);
                }
                else if (camera.ReplayChangeType == CameraDetails.ReplayChangeTypes.SetSessionTime)
                {
                    var time = TimeSpan.FromSeconds(camera.SessionTime);
                    this.SessionTime = string.Format("{0:0}:{1:00}:{2:00}", time.Hours, time.Minutes, time.Seconds);
                }
            }
コード例 #12
0
        public IActionResult RegisterCamera(CameraDetails cameraDetails)
        {
            int?currentUserId = HttpContext.Session.GetInt32("currentUserId");

            if (currentUserId == null)
            {
                return(RedirectToAction("SignIn", "Home"));
            }

            cameraDetails.UserId = currentUserId.Value;
            if (!CameraService.RegisterCamera(cameraDetails))
            {
                return(View("Error"));
            }

            CameraInformationList availableCameras = CameraService.GetAllCamerasOwnedByUser(currentUserId.Value);

            return(View("ManageCameras", availableCameras));
        }
コード例 #13
0
        private bool DeleteCameraImage(CameraDetails cameraDetails)
        {
            DatabaseCamera dbCamera  = _dbQueryService.GetCameraById(cameraDetails.CameraId);
            string         imagePath = dbCamera.ImagePath;

            if (File.Exists(imagePath))
            {
                try
                {
                    File.Delete(imagePath);
                    return(true);
                }
                catch (Exception e)
                {
                    logger.Error(e);
                }
            }
            return(false);
        }
コード例 #14
0
        public IActionResult SaveCamera(CameraDetails cameraDetails)
        {
            if (HttpContext.Session.GetString("currentUsername") == null)
            {
                return(RedirectToAction("SignIn", "Home"));
            }

            int?currentUsedId = HttpContext.Session.GetInt32("currentUserId");

            if (currentUsedId != null)
            {
                cameraDetails.UserId = currentUsedId.Value;
                CameraService.SaveNewCamera(cameraDetails);
            }
            else
            {
                throw new InvalidOperationException("Can't get current user's id!");
            }

            return(View("CameraRegistration", CameraService.GetNewCameraRegistrationDetails(HttpContext.Session.GetString("currentUsername"))));
        }
コード例 #15
0
        private void UpdateEvents()
        {
            this.Events.Clear();

#if DEBUG
            var debugEvents = new List <ReplayEvent>();
            var ev          = new ReplayEvent();
            ev.AdminId = SyncManager.Instance.UserId;
            ev.Camera  = CameraDetails.ChangeReplayTime(400, 4);
            ev.Type    = ReplayEvent.EventTypes.Interesting;
            ev.Text    = "Test event 1";
            debugEvents.Add(ev);

            ev         = new ReplayEvent();
            ev.AdminId = SyncManager.Instance.UserId;
            ev.Camera  = CameraDetails.ChangeReplayTime(500, 7);
            ev.Type    = ReplayEvent.EventTypes.Incident;
            ev.Text    = "Test event 2";
            debugEvents.Add(ev);

            ev         = new ReplayEvent();
            ev.AdminId = SyncManager.Instance.UserId;
            ev.Camera  = CameraDetails.ChangeReplayTime(850, 7);
            ev.Type    = ReplayEvent.EventTypes.Interesting;
            ev.Text    = "Test event 3";
            debugEvents.Add(ev);

            foreach (var @event in debugEvents)
            {
#else
            foreach (var @event in SyncManager.Instance.State.Events)
            {
#endif
                var container = new ReplayEventContainer(@event);
                container.RelativePosition = @event.Camera.SessionTime / this.SessionTime;
                this.Events.Add(container);
            }
            this.UpdateEventPositions();
        }
コード例 #16
0
        public IActionResult ViewAllUsersExceptCurrent(int cameraId)
        {
            int?currentUserId = HttpContext.Session.GetInt32("currentUserId");

            if (currentUserId == null)
            {
                return(RedirectToAction("SignIn", "Home"));
            }

            List <UserSettings> users        = UserService.GetUserSettingsForCamera(cameraId);
            CameraDetails       camera       = CameraService.GetCameraInfoById(cameraId);
            UserSettingsList    settingsList = new UserSettingsList
            {
                CameraDetails = camera,
                UserList      = users
            };

            if (Request.Headers["x-requested-with"] == "XMLHttpRequest")
            {
                return(PartialView("UserViewAccess", settingsList));
            }

            return(View("UserViewAccess", settingsList));
        }
コード例 #17
0
        /// <summary>
        /// Get camera of followed driver at the current replay session time.
        /// </summary>
        public static CameraDetails GetCurrentCameraSessionTime()
        {
            if (Connection.Instance.IsSimulated)
            {
                return(CameraDetails.ChangeReplayTime(0, 0));
            }

            if (!Simulator.Instance.Sdk.IsConnected)
            {
                return(null);
            }

            var driver = GetFollowedDriver();

            if (driver == null)
            {
                return(null);
            }

            var carNumber = driver.Driver.CarNumberRaw;
            var time      = Simulator.Instance.Telemetry.ReplaySessionTime.Value;

            return(CameraDetails.ChangeReplayTime(time, carNumber));
        }
コード例 #18
0
 public DatabaseRoom(CameraDetails cameraDetails)
 {
     LocationId = cameraDetails.LocationId;
     RoomName   = cameraDetails.NewRoomName;
 }
コード例 #19
0
        public static CameraDetails ChangeFocus(int carnumber)
        {
            var cam = new CameraDetails(carnumber);

            return(cam);
        }
コード例 #20
0
 public static CameraDetails ChangeReplayTime(double sessionTime, int carnumber = -1)
 {
     var cam = new CameraDetails(carnumber);
     cam.SetSessionTime(sessionTime);
     return cam;
 }
コード例 #21
0
 public static CameraDetails ChangeReplayFrame(int frame, int carnumber = -1)
 {
     var cam = new CameraDetails(carnumber);
     cam.SetReplayFrame(frame);
     return cam;
 }
コード例 #22
0
 public static CameraDetails ChangeFocus(int carnumber)
 {
     var cam = new CameraDetails(carnumber);
     return cam;
 }
コード例 #23
0
        public bool SaveNewCamera(CameraDetails cameraDetails)
        {
            DatabaseCamera camera = new DatabaseCamera(cameraDetails);

            return(_dbQueryService.PersistNewCamera(camera));
        }
コード例 #24
0
 public bool SaveNewCamera(CameraDetails cameraDetails)
 {
     return(true);
 }