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;
        }
Exemplo n.º 2
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;
        }
Exemplo n.º 3
0
        public override void OnInspectorGUI()
        {
            base.OnInspectorGUI();

            _targetCameraSync = target as CameraSync;
            _gameCamera       = _targetCameraSync.transform;
            _viewCamera       = SceneView.lastActiveSceneView;

            //Selection.selectionChanged -= _onInspectorChanged;
            //Selection.selectionChanged += _onInspectorChanged;

            GUILayout.Space(10f);
            if (GUILayout.Button("Game To Scene"))
            {
                Undo.RecordObject(_viewCamera, "Game To Scene");
                CameraSync.GameToScene(_gameCamera, _viewCamera);
            }

            GUILayout.Space(10f);
            if (GUILayout.Button("Scene TO Game"))
            {
                Undo.RecordObject(_viewCamera, "Scene To Game");
                CameraSync.SceneToGame(_gameCamera, _viewCamera.camera.transform);
            }

            GUILayout.Space(10f);
            EditorGUI.BeginDisabledGroup(!_canUpdateKey);
            if (GUILayout.Button("Update / Create Key (Shift+Q)"))
            {
                var clip = TimelineEditor.selectedClip.animationClip;
                Undo.RecordObject(clip, "Update / Create Key");

                string[] propertyNames = { "m_LocalPosition.x", "m_LocalPosition.y", "m_LocalPosition.z",
                                           "m_LocalRotation.x", "m_LocalRotation.y", "m_LocalRotation.z", "m_LocalRotation.w" };
                float[]  values = { _gameCamera.localPosition.x, _gameCamera.localPosition.y, _gameCamera.localPosition.z,
                                    _gameCamera.localRotation.x,  _gameCamera.localRotation.y, _gameCamera.localRotation.z, _gameCamera.localRotation.w };

                var bindings = AnimationUtility.GetCurveBindings(clip).
                               Where((binding) =>
                {
                    return(binding.path.EndsWith(_gameCamera.name) && propertyNames.Contains(binding.propertyName));
                }).ToArray();

                foreach (var binding in bindings)
                {
                    float time  = (float)(_targetCameraSync.timelinePlayableDirector.time - TimelineEditor.selectedClip.start);
                    float value = values[Array.IndexOf(propertyNames, binding.propertyName)];
                    var   curve = AnimationUtility.GetEditorCurve(clip, binding);
                    int   index = -1;
                    if (curve.keys.Any((k) =>
                    {
                        index++;
                        return(Mathf.Abs(k.time - time) < (1.0 / clip.frameRate * 0.5));
                    }))
                    {
                        curve.RemoveKey(index);
                    }
                    curve.AddKey(new Keyframe(time, value));
                    AnimationUtility.SetEditorCurve(clip, binding, curve);
                }

                EditorUtility.SetDirty(clip);
            }
            EditorGUI.EndDisabledGroup();
        }