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); }
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); } }
public override void OnInspectorGUI() { DrawDefaultInspector(); TargetLight _TargetLight = (TargetLight)target; }
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); }