コード例 #1
0
        /// <summary>
        /// What the instruction should do
        /// </summary>
        protected override void _Process()
        {
            // Parameters
            string camId      = _GetParameter(PatchInstructionParameter.ParameterName.cameraIKIdentifier);
            string viewSource = _GetParameter(PatchInstructionParameter.ParameterName.viewSource);

            Cameras.Position sourcePosition = _ValidatePosition(viewSource);
            string           viewTarget     = _GetParameter(PatchInstructionParameter.ParameterName.viewTarget);

            Cameras.Position targetPosition = _ValidatePosition(viewTarget);

            // Loading current camera
            string  currentCamFile = LibraryConstants.GetSpecialFile(LibraryConstants.TduSpecialFile.CamerasBin);
            Cameras currentCameras = TduFile.GetFile(currentCamFile) as Cameras;

            if (currentCameras == null || !currentCameras.Exists)
            {
                throw new Exception("Unable to load current camera data: " + currentCamFile);
            }

            // Retrieving entry
            Cameras.CamEntry entryToEdit = currentCameras.GetEntryByCameraId(camId);

            VehicleSlotsHelper.CustomizeCameraPosition(currentCameras, entryToEdit, Cameras.ViewType.Cockpit, sourcePosition, targetPosition);

            // Saving
            currentCameras.Save();
        }
コード例 #2
0
        private void cockSetButton_Click(object sender, EventArgs e)
        {
            // Click on Set c**k position button
            try
            {
                Cursor = Cursors.WaitCursor;

                Cameras.Position sourcePos =
                    (Cameras.Position)Enum.Parse(typeof(Cameras.Position), cockSourceComboBox.Text);
                Cameras.Position targetPos =
                    (Cameras.Position)Enum.Parse(typeof(Cameras.Position), cockTargetComboBox.Text);
                Cameras.CamEntry currentEntry = _CameraData.GetEntryByCameraId(customCameraIdLabel.Text);

                if (currentEntry.isValid)
                {
                    VehicleSlotsHelper.CustomizeCameraPosition(_CameraData, currentEntry, Cameras.ViewType.Cockpit,
                                                               sourcePos, targetPos);

                    // Refresh
                    _RefreshCameraIKContents();

                    // Modification flag
                    _IsCameraModified = true;

                    StatusBarLogManager.ShowEvent(this, _STATUS_CHANGING_VIEW_POS_OK);
                }
            }
            catch (Exception ex)
            {
                MessageBoxes.ShowError(this, ex);
            }
            finally
            {
                Cursor = Cursors.Default;
            }
        }
コード例 #3
0
ファイル: VehicleSlotsHelper.cs プロジェクト: djey47/tdumt
        /// <summary>
        /// Changes camera source and/or target position(s)
        /// </summary>
        /// <param name="cameraData"></param>
        /// <param name="entry"></param>
        /// <param name="viewType"></param>
        /// <param name="sourcePosition"></param>
        /// <param name="targetPosition"></param>
        public static void CustomizeCameraPosition(Cameras cameraData, Cameras.CamEntry entry, Cameras.ViewType viewType, Cameras.Position sourcePosition, Cameras.Position targetPosition)
        {
            if (cameraData != null)
            {
                Cameras.View baseView = Cameras.GetViewByType(entry, viewType);

                if (baseView.isValid)
                {
                    List <Cameras.View> currentViews = entry.views;

                    currentViews.Remove(baseView);

                    baseView.source = sourcePosition;
                    baseView.target = targetPosition;

                    currentViews.Add(baseView);
                    entry.views = currentViews;

                    // Updating entry
                    cameraData.UpdateEntry(entry);
                }
            }
        }