Пример #1
0
        public void SelectCamera(int selectedPreviewCamera)
        {
            var dummy = _state.InternalDummyOptional();

            if (!dummy.HasValue || selectedPreviewCamera >= dummy.Value.Cameras.Count)
            {
                return;
            }

            _state.Altered(_previewHandler).CameraSelected(selectedPreviewCamera);
        }
            public void NewClipSelected(AnimationClip activeNonNull)
            {
                _state.CurrentClip = activeNonNull;

                // FIXME _state._editableProperties and animationEditorState._stats will have a content that depends on the currently active dummy!!!
                // FIXME: not only it depends on the currently active dummy, that dummy must not be animated too.
                // FIXME: For now, only consider blendshapes with a value of 0.
                _state.EditableBlendshapes = AnimationUtility.GetCurveBindings(_state.CurrentClip)
                                             .Where(binding => binding.type == typeof(SkinnedMeshRenderer) && binding.propertyName.StartsWith("blendShape."))
                                             .Where(binding => AnimationUtility.GetEditorCurve(_state.CurrentClip, binding).keys.All(keyframe => keyframe.value != 0))
                                             .Select(binding => EditableBlendshapeFromActive(_state.CurrentClip, binding)).ToList();

                RecalculateStats();
                var dummy = _state.InternalDummyOptional();

                if (dummy.HasValue)
                {
                    var fakeController = new UnityEditor.Animations.AnimatorController();
                    fakeController.name = "Fake Temporary Controller__DoNotModify";
                    fakeController.AddLayer("Base");
                    var animatorState = fakeController.layers[0].stateMachine.AddState("recorder");
                    animatorState.motion                        = activeNonNull;
                    animatorState.writeDefaultValues            = false;
                    dummy.Value.Dummy.runtimeAnimatorController = fakeController;
                }

                _previewHandler.GeneratePreviewsFromCurrentClip();
            }
        public EePreviewHandler(EeRenderingCommands renderingCommands, EeAnimationEditorState state, EeMetadata metadata)
        {
            _renderingCommands = renderingCommands;
            _state             = state;
            _metadata          = metadata;
            _renderingCommands.SetQueueEmptiedAction(() =>
            {
                if (!_state.Maintain)
                {
                    return;
                }

                var dummy = _state.InternalDummyOptional();
                if (!dummy.HasValue)
                {
                    return;
                }
                Maintain(dummy.Value);
            });
        }
        internal void SubjectsAreBased(List <string> subjects)
        {
            foreach (var based in _metadata.MetadataAsset.AllOnWhat())
            {
                if (!_basedOnSomething.ContainsKey(based))
                {
                    _basedOnSomething[based] = NewActualTexture2D();
                }
            }

            var dummy = _state.InternalDummyOptional();

            if (!dummy.HasValue)
            {
                return;
            }
            GeneratePreviewsFromSubjectNamesAssignments(dummy.Value, subjects);
        }
 public EePreviewAvatar?DummyNullable()
 {
     return(_state.InternalDummyOptional());
 }