Example #1
0
        private Drawing GetTargetLight_Ver0(TargetLight targetLight)
        {
            const double BigRange = 0.4;
            const double SmallRange = 0.3;
            double       rotateReal = Math.Cos(Math.PI / 16), rotateImag = Math.Sin(Math.PI / 16);

            var drawingVisual = new DrawingVisual();

            using (var dc = drawingVisual.RenderOpen()) {
                var geometry = new StreamGeometry();
                using (var sgc = geometry.Open()) {
                    sgc.BeginFigure(new Point(0.5 + BigRange, 0.5), true, true);

                    double x = 1, y = 0;

                    for (int i = 0; i < 8; i++)
                    {
                        ComplexMultiply(ref x, ref y, rotateReal, rotateImag);
                        sgc.LineTo(new Point(0.5 + BigRange * x, 0.5 + BigRange * y), true, false);
                        sgc.LineTo(new Point(0.5 + SmallRange * x, 0.5 + SmallRange * y), true, false);
                        ComplexMultiply(ref x, ref y, rotateReal, rotateImag);
                        ComplexMultiply(ref x, ref y, rotateReal, rotateImag);
                        sgc.LineTo(new Point(0.5 + SmallRange * x, 0.5 + SmallRange * y), true, false);
                        sgc.LineTo(new Point(0.5 + BigRange * x, 0.5 + BigRange * y), true, false);
                        ComplexMultiply(ref x, ref y, rotateReal, rotateImag);
                    }
                }
                geometry.Transform = DefaultScaleTransform;
                geometry.Freeze();
                var pen = new Pen()
                {
                    Thickness = 1,
                    Brush     = GetDarkBrush(targetLight.Color)
                };
                targetLight.ActivatedChanged += delegate {
                    if (targetLight.Activated)
                    {
                        pen.Brush = GetBrush(targetLight.Color);
                    }
                    else
                    {
                        pen.Brush = GetDarkBrush(targetLight.Color);
                    }
                };
                dc.DrawGeometry(null, pen, geometry);
            }
            return(drawingVisual.Drawing);
        }
Example #2
0
    private void OnSceneGUI()
    {
        TargetLight _TargetLight    = (TargetLight)target;
        Transform   handleTransform = _TargetLight.transform;
        Quaternion  handleRotation  = Quaternion.identity;

        Vector3 _Target = _TargetLight._TargetPos;

        Handles.color = _TargetLight.GetLightColor();
        Handles.DrawLine(handleTransform.position, _Target);

        EditorGUI.BeginChangeCheck();
        _Target = Handles.DoPositionHandle(_Target, handleRotation);

        if (EditorGUI.EndChangeCheck())
        {
            //_TargetLight._TargetPos = _Target;
            //_TargetLight.LookAtTarget ();
            _TargetLight.SetTargetPos(_Target);

            Undo.RecordObject(_TargetLight, "Move Target");
            EditorUtility.SetDirty(_TargetLight);
        }
    }
Example #3
0
 public override void OnInspectorGUI()
 {
     DrawDefaultInspector();
     TargetLight _TargetLight = (TargetLight)target;
 }
Example #4
0
        public virtual Drawing GetTargetLight(TargetLight targetLight)
        {
            const double BigRange = 0.43;
            const double SmallRange = 0.34;
            double       rotateReal = Math.Cos(Math.PI * 2 / 3), rotateImag = Math.Sin(Math.PI * 2 / 3);

            var drawingVisual = new DrawingVisual();

            using (var dc = drawingVisual.RenderOpen()) {
                var geometry = new StreamGeometry {
                };
                using (var sgc = geometry.Open()) {
                    double x = 0, y = 1;
                    sgc.BeginFigure(new Point(0.5 + SmallRange * x, 0.5 + SmallRange * y), false, true);
                    ComplexMultiply(ref x, ref y, rotateReal, rotateImag);
                    sgc.LineTo(new Point(0.5 + SmallRange * x, 0.5 + SmallRange * y), true, false);
                    ComplexMultiply(ref x, ref y, rotateReal, rotateImag);
                    sgc.LineTo(new Point(0.5 + SmallRange * x, 0.5 + SmallRange * y), true, false);

                    x = 0; y = -1;
                    sgc.BeginFigure(new Point(0.5 + SmallRange * x, 0.5 + SmallRange * y), false, true);
                    ComplexMultiply(ref x, ref y, rotateReal, rotateImag);
                    sgc.LineTo(new Point(0.5 + SmallRange * x, 0.5 + SmallRange * y), true, false);
                    ComplexMultiply(ref x, ref y, rotateReal, rotateImag);
                    sgc.LineTo(new Point(0.5 + SmallRange * x, 0.5 + SmallRange * y), true, false);
                }
                geometry.Transform = DefaultScaleTransform;
                geometry.Freeze();

                var brush      = new SolidColorBrush(GetDarkColor(targetLight.Color));
                var lightColor = GetColor(targetLight.Color);
                var pen        = new Pen()
                {
                    Thickness = 1,
                    Brush     = brush
                };
                targetLight.ActivatedChanged += delegate {
                    if (targetLight.Activated)
                    {
                        brush.Color = lightColor;
                    }
                    else
                    {
                        brush.Color = GetDarkColor(targetLight.Color);
                    }
                };
                dc.DrawGeometry(null, pen, geometry);

                var ellipse = Freeze(new EllipseGeometry(new Point(0.5, 0.5), SmallRange, SmallRange)
                {
                    Transform = DefaultScaleTransform
                });
                dc.DrawGeometry(null, pen, ellipse);
                ellipse = Freeze(new EllipseGeometry(new Point(0.5, 0.5), BigRange, BigRange)
                {
                    Transform = DefaultScaleTransform
                });
                dc.DrawGeometry(null, pen, ellipse);
            }
            return(drawingVisual.Drawing);
        }