Exemplo n.º 1
0
        private CompositionPropertySet _createSpotLightColorsProxy(SpotLight compositionSpotLight)
        {
            var lightProperties = compositionSpotLight.Properties;
            var compositor      = compositionSpotLight.Compositor;

            lightProperties.InsertColor("InnerConeColor", Color.FromArgb(255, 255, 255, 255));
            lightProperties.InsertColor("OuterConeColor", Color.FromArgb(255, 255, 255, 255));
            lightProperties.InsertScalar("LightIntensity", 1f);

            var innerConeColorExpression = compositor.CreateExpressionAnimation("ColorLerp(ColorRgb(0,0,0,0), target.InnerConeColor, target.LightIntensity)");

            innerConeColorExpression.SetReferenceParameter("target", lightProperties);

            var outerConeColorExpression = compositor.CreateExpressionAnimation("ColorLerp(ColorRgb(0,0,0,0), target.OuterConeColor, target.LightIntensity)");

            outerConeColorExpression.SetReferenceParameter("target", lightProperties);

            compositionSpotLight.StartAnimation("InnerConeColor", innerConeColorExpression);
            compositionSpotLight.StartAnimation("OuterConeColor", outerConeColorExpression);

            return(lightProperties);
        }
Exemplo n.º 2
0
        private void GalleryItem_PointerEntered(object sender, PointerRoutedEventArgs e)
        {
            var frameworkElement = sender as FrameworkElement;

            //Setup Animations for the current Image Visual

            var element        = ElementCompositionPreview.GetElementVisual(frameworkElement);
            var scaleAnimation = _compositor.CreateVector3KeyFrameAnimation();

            scaleAnimation.Duration = TimeSpan.FromMilliseconds(durationHover);
            scaleAnimation.InsertKeyFrame(1f, new Vector3(1.1f, 1.1f, 1.1f));

            element.CenterPoint = new Vector3(275f / 2, 275f / 2, 275f / 2);
            element.StartAnimation("Scale", scaleAnimation);

            var shadowBorder = (Grid)sender;
            var shadow       = _compositor.CreateDropShadow();

            shadow.Color = Colors.DimGray;

            var shadowBlurAnimation = _compositor.CreateScalarKeyFrameAnimation();

            shadowBlurAnimation.Duration = TimeSpan.FromMilliseconds(durationHover);
            shadowBlurAnimation.InsertKeyFrame(0f, 1f);
            shadowBlurAnimation.InsertKeyFrame(1f, 18f);
            shadow.StartAnimation(nameof(shadow.BlurRadius), shadowBlurAnimation);

            var shadowOffsetAnimation = _compositor.CreateVector3KeyFrameAnimation();

            shadowOffsetAnimation.Duration = TimeSpan.FromMilliseconds(durationHover);
            shadowOffsetAnimation.InsertKeyFrame(1f, new Vector3(shadowDistance, shadowDistance, 0));
            shadow.StartAnimation(nameof(Visual.Offset), shadowOffsetAnimation);

            var sprite = _compositor.CreateSpriteVisual();

            sprite.Size   = new System.Numerics.Vector2((float)shadowBorder.ActualWidth, (float)shadowBorder.ActualHeight);
            sprite.Shadow = shadow;

            ElementCompositionPreview.SetElementChildVisual((UIElement)shadowBorder.FindName("Shadow"), sprite);

            //Move the spotlight to the center of the hovered light

            var   ttv          = frameworkElement.TransformToVisual(galleryPage);
            Point screenCoords = ttv.TransformPoint(new Point(0, 0));

            var mouse_x = screenCoords.X + frameworkElement.ActualWidth / 2;
            var mouse_y = screenCoords.Y + frameworkElement.ActualHeight / 2;


            var elementOffset            = new Vector3((float)mouse_x, (float)mouse_y, spotlight_z); // EF: Need to calculate tile offset here
            var spotlightOffsetAnimation = _compositor.CreateVector3KeyFrameAnimation();

            spotlightOffsetAnimation.Duration = TimeSpan.FromMilliseconds(durationHover);
            spotlightOffsetAnimation.InsertKeyFrame(1f, elementOffset);
            spotLight.StartAnimation(nameof(Visual.Offset), spotlightOffsetAnimation);

            var ambientLightColorAnimation = _compositor.CreateColorKeyFrameAnimation();

            ambientLightColorAnimation.Duration = TimeSpan.FromMilliseconds(durationHover);
            ambientLightColorAnimation.InsertKeyFrame(1f, ambientLightColorOn);
            ambientLight.StartAnimation(nameof(AmbientLight.Color), ambientLightColorAnimation);
        }
Exemplo n.º 3
0
        private void UpdateAnimations()
        {
            Vector2 sizeLightBounds = new Vector2((float)RootPanel.ActualWidth, (float)RootPanel.ActualHeight);
            Vector3KeyFrameAnimation lightPositionAnimation;
            ColorKeyFrameAnimation   lightColorAnimation;

            ComboBoxItem item = LightingSelection.SelectedValue as ComboBoxItem;

            switch ((LightingTypes)item.Tag)
            {
            case LightingTypes.PointDiffuse:
            case LightingTypes.PointSpecular:
            {
                float zDistance = 50f;

                // Create the light position animation
                lightPositionAnimation = _compositor.CreateVector3KeyFrameAnimation();
                lightPositionAnimation.InsertKeyFrame(0f, new Vector3(0f, 0f, zDistance));
                lightPositionAnimation.InsertKeyFrame(.25f, new Vector3(sizeLightBounds.X * .2f, sizeLightBounds.Y * .5f, zDistance));
                lightPositionAnimation.InsertKeyFrame(.50f, new Vector3(sizeLightBounds.X * .75f, sizeLightBounds.Y * .5f, zDistance));
                lightPositionAnimation.InsertKeyFrame(.75f, new Vector3(sizeLightBounds.X * .2f, sizeLightBounds.Y * .2f, zDistance));
                lightPositionAnimation.InsertKeyFrame(1f, new Vector3(0f, 0f, zDistance));
                lightPositionAnimation.Duration          = TimeSpan.FromMilliseconds(7500);
                lightPositionAnimation.IterationBehavior = AnimationIterationBehavior.Forever;

                lightColorAnimation = _compositor.CreateColorKeyFrameAnimation();
                lightColorAnimation.InsertKeyFrame(0f, Colors.White);
                lightColorAnimation.InsertKeyFrame(.33f, Colors.White);
                lightColorAnimation.InsertKeyFrame(.66f, Colors.Yellow);
                lightColorAnimation.InsertKeyFrame(1f, Colors.White);
                lightColorAnimation.Duration          = TimeSpan.FromMilliseconds(20000);
                lightColorAnimation.IterationBehavior = AnimationIterationBehavior.Forever;

                _pointLight.StartAnimation("Offset", lightPositionAnimation);
                _pointLight.StartAnimation("Color", lightColorAnimation);
            }
            break;

            case LightingTypes.SpotLightDiffuse:
            case LightingTypes.SpotLightSpecular:
            {
                // Create the light position animation
                lightPositionAnimation = _compositor.CreateVector3KeyFrameAnimation();
                lightPositionAnimation.InsertKeyFrame(0f, new Vector3(0f, 0f, 100f));
                lightPositionAnimation.InsertKeyFrame(.33f, new Vector3(sizeLightBounds.X * .5f, sizeLightBounds.Y * .5f, 200f));
                lightPositionAnimation.InsertKeyFrame(.66f, new Vector3(sizeLightBounds.X, sizeLightBounds.Y * .5f, 400f));
                lightPositionAnimation.InsertKeyFrame(1f, new Vector3(0f, 0f, 100f));
                lightPositionAnimation.Duration          = TimeSpan.FromMilliseconds(7500);
                lightPositionAnimation.IterationBehavior = AnimationIterationBehavior.Forever;

                lightColorAnimation = _compositor.CreateColorKeyFrameAnimation();
                lightColorAnimation.InsertKeyFrame(0f, Colors.White);
                lightColorAnimation.InsertKeyFrame(.33f, Colors.White);
                lightColorAnimation.InsertKeyFrame(.66f, Colors.Yellow);
                lightColorAnimation.InsertKeyFrame(1f, Colors.White);
                lightColorAnimation.Duration          = TimeSpan.FromMilliseconds(20000);
                lightColorAnimation.IterationBehavior = AnimationIterationBehavior.Forever;

                _spotLight.StartAnimation("Offset", lightPositionAnimation);
                _spotLight.StartAnimation("InnerConeColor", lightColorAnimation);
            }
            break;

            case LightingTypes.DistantDiffuse:
            case LightingTypes.DistantSpecular:
            {
                // Animate the light direction
                Vector3 position  = new Vector3(0, 0, 100);
                float   offCenter = 700f;

                Vector3KeyFrameAnimation lightDirectionAnimation = _compositor.CreateVector3KeyFrameAnimation();
                lightDirectionAnimation.InsertKeyFrame(0f, Vector3.Normalize(new Vector3(0, 0, 0) - position));
                lightDirectionAnimation.InsertKeyFrame(.25f, Vector3.Normalize(new Vector3(offCenter, 0, 0) - position));
                lightDirectionAnimation.InsertKeyFrame(.5f, Vector3.Normalize(new Vector3(-offCenter, offCenter, 0) - position));
                lightDirectionAnimation.InsertKeyFrame(.75f, Vector3.Normalize(new Vector3(0, -offCenter, 0) - position));
                lightDirectionAnimation.InsertKeyFrame(1f, Vector3.Normalize(new Vector3(0, 0, 0) - position));
                lightDirectionAnimation.Duration          = TimeSpan.FromMilliseconds(7500);
                lightDirectionAnimation.IterationBehavior = AnimationIterationBehavior.Forever;

                _distantLight.StartAnimation("Direction", lightDirectionAnimation);
            }
            break;

            default:
                break;
            }
        }