From 2e8170dacd9ff02272e90a4615484c3ad9a6453a Mon Sep 17 00:00:00 2001
From: unknown <john.schihada@hotmail.com>
Date: Thu, 26 Dec 2019 18:45:19 +0100
Subject: [PATCH] Adjusted Angle-Preview

---
 Assets/InteractionEngine/ShinyThings.cs | 21 ++++++++++++++++-----
 1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/Assets/InteractionEngine/ShinyThings.cs b/Assets/InteractionEngine/ShinyThings.cs
index abf1cef7..626a42ce 100644
--- a/Assets/InteractionEngine/ShinyThings.cs
+++ b/Assets/InteractionEngine/ShinyThings.cs
@@ -1,6 +1,7 @@
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
+using UnityEditor;
 using static CommunicationEvents;
 
 public class ShinyThings : MonoBehaviour
@@ -19,10 +20,11 @@ public class ShinyThings : MonoBehaviour
 
     private bool lineDrawingActivated;
     private bool curveDrawingActivated;
-    private int curveDrawingVertexCount = 12;
+    private int curveDrawingVertexCount = 36;
     private LineFact curveDrawingStartLine;
     private Vector3 curveEndPoint;
     private Vector3 angleMiddlePoint;
+    private float curveRadius;
 
     // Start is called before the first frame update
     public void Start()
@@ -155,23 +157,31 @@ public void ActivateCurveDrawing(Fact startFact)
         float Distance2 = (Facts.Find(x => x.Id == curveDrawingStartLine.Pid2).Representation.transform.position - curveEndPoint).magnitude;
 
         if (Distance1 >= Distance2)
+        {
             angleMiddlePoint = Facts.Find(x => x.Id == curveDrawingStartLine.Pid2).Representation.transform.position;
+            curveRadius = Distance2;
+        }
         else
+        {
             angleMiddlePoint = Facts.Find(x => x.Id == curveDrawingStartLine.Pid1).Representation.transform.position;
-
+            curveRadius = Distance1;
+        }
     }
 
     public void UpdateCurveDrawing(Vector3 currentPosition)
     {
+        
+        //Determine the Start-Point
+        Vector3 startPoint = angleMiddlePoint + curveRadius * (currentPosition - angleMiddlePoint).normalized;
         //Determine the Center of Start-Point and End-Point 
-        Vector3 tempCenterPoint = Vector3.Lerp(currentPosition, curveEndPoint, 0.5f);
-        Vector3 curveMiddlePoint = angleMiddlePoint + 2 * (tempCenterPoint - angleMiddlePoint);
+        Vector3 tempCenterPoint = Vector3.Lerp(startPoint, curveEndPoint, 0.5f);
+        Vector3 curveMiddlePoint = angleMiddlePoint + curveRadius * (tempCenterPoint - angleMiddlePoint).normalized;
         
         linePositions = new List<Vector3>();
 
         for (float ratio = 0; ratio <= 1; ratio += 1.0f / this.curveDrawingVertexCount)
         {
-            var tangentLineVertex1 = Vector3.Lerp(currentPosition, curveMiddlePoint, ratio);
+            var tangentLineVertex1 = Vector3.Lerp(startPoint, curveMiddlePoint, ratio);
             var tangentLineVertex2 = Vector3.Lerp(curveMiddlePoint, curveEndPoint, ratio);
             var bezierPoint = Vector3.Lerp(tangentLineVertex1, tangentLineVertex2, ratio);
             linePositions.Add(bezierPoint);
@@ -179,6 +189,7 @@ public void UpdateCurveDrawing(Vector3 currentPosition)
 
         lineRenderer.positionCount = linePositions.Count;
         lineRenderer.SetPositions(linePositions.ToArray());
+        
     }
 
     public void DeactivateCurveDrawing(Fact startFact)
-- 
GitLab