diff --git a/Assets/Scripts/InteractionEngine/FactHandling/FactSpawner.cs b/Assets/Scripts/InteractionEngine/FactHandling/FactSpawner.cs index 85df7957d5c4881789e914d72a2c847e9f254e22..17fd6d0dcb5ef31c36ce98551d6ab289b4e1fb96 100644 --- a/Assets/Scripts/InteractionEngine/FactHandling/FactSpawner.cs +++ b/Assets/Scripts/InteractionEngine/FactHandling/FactSpawner.cs @@ -130,10 +130,19 @@ public void SpawnRectangle(RectangleFact fact){ GameObject rectangle = GameObject.Instantiate(Rectangle); + fact.WorldRepresentation = rectangle.GetComponent<FactObject3D>(); + fact.WorldRepresentation.Fact = fact; + rectangle.transform.SetPositionAndRotation(fact.Position, fact.Rotation); - rectangle.transform.localScale = Vector3.Scale(rectangle.transform.localScale, fact.LocalScale); rectangle.GetComponentInChildren<TextMeshPro>().text = fact.GetLabel(StageStatic.stage.factState) + " = " + System.Math.Round(fact.Area, 2) + "m²"; + RectangleGenerator[] rectangleGenerators = rectangle.GetComponentsInChildren<RectangleGenerator>(); + foreach (var gen in rectangleGenerators) + { + gen.ab = Vector3.Distance(fact.A, fact.B); + gen.bc = Vector3.Distance(fact.B, fact.C); + } + } public void SpawnSimpleCircle(SimpleCircleFact fact){ diff --git a/Assets/Scripts/MeshGenerator/RectangleGenerator.cs b/Assets/Scripts/MeshGenerator/RectangleGenerator.cs new file mode 100644 index 0000000000000000000000000000000000000000..b93da7dc7f24c2b40fac4904c1c536a39160b1a8 --- /dev/null +++ b/Assets/Scripts/MeshGenerator/RectangleGenerator.cs @@ -0,0 +1,53 @@ +using Microsoft.Win32; +using System.Linq; +using UnityEngine; + +public class RectangleGenerator : ShapeGenerator +{ + #region InspectorVariables + [Header("Rectangle values")] + [SerializeField] protected float _ab = 1f; + [SerializeField] protected float _bc = 1f; + + public float ab + { + get { return _ab; } + set + { + _ab = value; + GenerateShapeForAll(); + } + } + public float bc + { + get { return _bc; } + set + { + _bc = value; + GenerateShapeForAll(); + } + } + #endregion InspectorVariables + + #region Implementation + + public static (Vector3[], int[]) CreateRectangle(float ab, float bc, Vector3 offset, bool invert = false) + { + Vector3[] edge = GetRectanglePoints(ab, bc); + Vector3[] vertices = new Vector3[] { offset } + .AppendRange(edge) + .Append(edge[0]) + .ToArray(); + + return CreatePlane(vertices, invert); + } + public static (Vector3[], int[]) CreateRectangle(float ab, float bc, bool invert = false) + { + + return CreateRectangle(ab, bc, Vector3.zero, invert); + } + + protected override (Vector3[] vertices, int[] triangles) GenerateTopology() + => CreateRectangle(ab, bc); + #endregion Implementation +} \ No newline at end of file diff --git a/Assets/Scripts/MeshGenerator/RectangleGenerator.cs.meta b/Assets/Scripts/MeshGenerator/RectangleGenerator.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..937bb74c3e001da760186c679cf343186ae148b4 --- /dev/null +++ b/Assets/Scripts/MeshGenerator/RectangleGenerator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 07751329564032247ae66477c3d5d600 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: