diff --git a/Assets/FactManager.cs b/Assets/FactManager.cs new file mode 100644 index 0000000000000000000000000000000000000000..5362ae4c7ec687a589ad4b4d01d5f5cb700935ea --- /dev/null +++ b/Assets/FactManager.cs @@ -0,0 +1,184 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using static CommunicationEvents; +public class FactManager : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + CommunicationEvents.ToolModeChangedEvent.AddListener(OnToolModeChanged); + } + + // Update is called once per frame + void Update() + { + //Je nachdem ob erster oder der zweite Punkt angeklickt wurde behandeln + + //Wenn erster Punkt einen Point-Collider erwischt hat: + //Linie aktivieren und Cursor folgen + //Wenn erster Punkt keinen Point-Collider erwischt hat: + //Nichts tun -> Evtl Hint einblenden + + //Wenn zweiter Punkt einen Point-Collider erwischt hat: + //Event senden um GameObject-Line zu erzeugen + //Wenn zweiter Punkt keinen Point-Collider erwischt hat: + //Linie deaktivieren -> Evtl Hint einblenden + + //LayerMask for Points + int layerMask = 1 << LayerMask.NameToLayer("Point"); //only hit Point + + //Wenn bereits der erste Punkt markiert wurde + if (this.lineRendererActivated) //instead: bool variable.... + { + //If a second Point was Hit + if (Physics.Raycast(ray, out Hit, 30f, layerMask)) + { + //Event for Creating the Line + Vector3 point1 = this.linePositions[0]; + Vector3 point2 = Hit.transform.gameObject.transform.position; + this.DeactivateLineRenderer(); + CommunicationEvents.AddLineEvent.Invoke(point1, point2); + break; + } + //If no Point was hit + else + { + //TODO: Hint that only a line can be drawn between already existing points + this.DeactivateLineRenderer(); + } + } + //Wenn der erste Punkt noch nicht markiert wurde + else + { + //Check if a Point was hit + if (Physics.Raycast(ray, out Hit, 30f, layerMask)) + { + //Set LineRenderer activated + this.lineRendererActivated = true; + //Add the position of the hit Point for the start of the Line + Vector3 temp = Hit.transform.gameObject.transform.position; + //temp += Vector3.up; + + linePositions.Add(temp); + //The second point is the same point at the moment + linePositions.Add(temp); + this.lineRenderer.SetPosition(0, linePositions[0]); + this.lineRenderer.SetPosition(1, linePositions[1]); + } + else + { + //TODO: Hint that only a line can be drawn between already existing points + } + } + + + + } + + + public int GetFirstEmptyID() + { + + for (int i = 0; i < Facts.Length; ++i) + { + if (Facts[i] == "") + return i; + } + return Facts.Length - 1; + + } + + public void OnToolModeChanged(ToolMode ActiveToolMode) + { + switch (ActiveToolMode) + { + case ToolMode.MarkPointMode: + //If MarkPointMode is activated we want to have the ability to mark the point + //everywhere, independent of already existing facts + foreach (GameObject GameObjectFact in GameObjectFacts) + { + GameObjectFact.GetComponentInChildren<Collider>().enabled = false; + } + break; + case ToolMode.CreateLineMode: + //If CreateLineMode is activated we want to have the ability to select points for the Line + //but we don't want to have the ability to select Lines or Angles + foreach (GameObject GameObjectFact in GameObjectFacts) + { + if (GameObjectFact.layer == LayerMask.NameToLayer("Line") || GameObjectFact.layer == LayerMask.NameToLayer("Angle")) + { + GameObjectFact.GetComponentInChildren<Collider>().enabled = false; + } + else if (GameObjectFact.layer == LayerMask.NameToLayer("Point")) + { + GameObjectFact.GetComponentInChildren<Collider>().enabled = true; + } + } + break; + case ToolMode.CreateAngleMode: + //If CreateAngleMode is activated we want to have the ability to select Lines for the Angle + //but we don't want to have the ability to select Points or Angles + foreach (GameObject GameObjectFact in GameObjectFacts) + { + if (GameObjectFact.layer == LayerMask.NameToLayer("Point") || GameObjectFact.layer == LayerMask.NameToLayer("Angle")) + { + GameObjectFact.GetComponentInChildren<Collider>().enabled = false; + } + else if (GameObjectFact.layer == LayerMask.NameToLayer("Line")) + { + GameObjectFact.GetComponentInChildren<Collider>().enabled = true; + } + } + break; + case ToolMode.DeleteMode: + //If DeleteMode is activated we want to have the ability to delete every Fact + //independent of the concrete type of fact + foreach (GameObject GameObjectFact in GameObjectFacts) + { + GameObjectFact.GetComponentInChildren<Collider>().enabled = true; + } + break; + case ToolMode.ExtraMode: + foreach (GameObject GameObjectFact in GameObjectFacts) + { + + } + break; + + + + } + } + + public void OnHit(RaycastHit hit) + { + Debug.Log(CommunicationEvents.ActiveToolMode); + if (hit.transform.gameObject.layer == LayerMask.NameToLayer("Point")) + { + //hit existing point, so delete it + if (CommunicationEvents.ActiveToolMode == ToolMode.ExtraMode) + { + var menu = GameObject.Instantiate(SmartMenu); + menu.GetComponent<Canvas>().worldCamera = Camera.main; + menu.transform.SetParent(hit.transform); + menu.transform.localPosition = Vector3.up - Camera.main.transform.forward; + } + else + { + char letter = hit.transform.gameObject.GetComponentInChildren<TextMeshPro>().text.ToCharArray()[0]; + int id = letter - 65; + CommunicationEvents.RemoveEvent.Invoke(id); + } + + } + else + { + + CommunicationEvents.AddPointEvent.Invoke(hit, GetFirstEmptyID()); + } + } + + + +} diff --git a/Assets/FactManager.cs.meta b/Assets/FactManager.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..172218dae9a872d5826b8c36e5b2a0cc5d8c744d --- /dev/null +++ b/Assets/FactManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c75823b1712c4914b987f0e1ba8a5cba +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/InteractionEngine/CommunicationEvents.cs b/Assets/InteractionEngine/CommunicationEvents.cs index c4a80da18ed5aafc2e9200d5343cb7011ff021b2..706e4666b1bb420f59493ea0a3b2f50a9086f7d0 100644 --- a/Assets/InteractionEngine/CommunicationEvents.cs +++ b/Assets/InteractionEngine/CommunicationEvents.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; +using System; public static class CommunicationEvents { @@ -10,7 +11,7 @@ public class PointEvent : UnityEvent<RaycastHit,int> } - public class LineEvent : UnityEvent<Vector3, Vector3> { + public class LineEvent : UnityEvent<int, int, int> { } @@ -39,4 +40,9 @@ public class ToolModeEvent : UnityEvent<ToolMode> { public static LineEvent AddLineEvent = new LineEvent(); public static FactEvent RemoveEvent = new FactEvent(); public static ToolMode ActiveToolMode { get; set; } + + public static List<Fact> Facts = new List<Fact>(); + + + } diff --git a/Assets/InteractionEngine/Fact.cs b/Assets/InteractionEngine/Fact.cs new file mode 100644 index 0000000000000000000000000000000000000000..fd6f5e6513d34571326a623f676175952c757f8a --- /dev/null +++ b/Assets/InteractionEngine/Fact.cs @@ -0,0 +1,13 @@ +using UnityEngine; + +public class Fact +{ + public int Id; + public GameObject Representation; + +} + +public class PointFact : Fact +{ + public Vector3 Point; +} \ No newline at end of file diff --git a/Assets/InteractionEngine/Fact.cs.meta b/Assets/InteractionEngine/Fact.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..1e259178fa67ad2e48cdb3f5918f174c2684a383 --- /dev/null +++ b/Assets/InteractionEngine/Fact.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f3845653d3db1cc4288bc1141281cb97 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/InteractionEngine/FactSpawner.cs b/Assets/InteractionEngine/FactSpawner.cs index e2111703e68499f279619361df5a74152d7c1130..ce32db93955baaea0b84c36bef4586bedd0fa479 100644 --- a/Assets/InteractionEngine/FactSpawner.cs +++ b/Assets/InteractionEngine/FactSpawner.cs @@ -3,12 +3,12 @@ using System.Collections.Generic; using TMPro; using UnityEngine; +using static CommunicationEvents; public class FactSpawner : MonoBehaviour { private GameObject FactRepresentation; - public string[] Facts = new String[100]; - public GameObject[] GameObjectFacts = new GameObject[100]; + //Variables for highlighting Facts where the cursor moves over public Material defaultMaterial; @@ -21,7 +21,7 @@ void Start() CommunicationEvents.HighlightEvent.AddListener(OnMouseOverFact); CommunicationEvents.EndHighlightEvent.AddListener(OnMouseOverFactEnd); CommunicationEvents.TriggerEvent.AddListener(OnHit); - CommunicationEvents.ToolModeChangedEvent.AddListener(OnToolModeChanged); + CommunicationEvents.AddPointEvent.AddListener(SpawnPoint); CommunicationEvents.AddLineEvent.AddListener(SpawnLine); CommunicationEvents.RemoveEvent.AddListener(DeletePoint); @@ -31,17 +31,7 @@ void Start() } - public int GetFirstEmptyID() - { - - for(int i = 0; i < Facts.Length; ++i) - { - if(Facts[i]== "") - return i; - } - return Facts.Length - 1; - - } + public void SpawnPoint(RaycastHit hit, int id) { @@ -58,21 +48,20 @@ public void SpawnPoint(RaycastHit hit, int id) //Collider will be set disabled if(CommunicationEvents.ActiveToolMode != ToolMode.ExtraMode) point.GetComponentInChildren<SphereCollider>().enabled = false; - Facts[id] = letter; - GameObjectFacts[id] = point; + } public void DeletePoint(int id) { - GameObject point = GameObjectFacts[id]; + GameObject point = Facts[id].Representation; GameObject.Destroy(point); - Facts[id] = ""; + } - public void SpawnLine(Vector3 point1, Vector3 point2) { - int id = GetFirstEmptyID(); - Debug.Log(id); + public void SpawnLine(int pid1, int pid2, int id) { + + Vector3 point1 = (Facts[pid1] as PointFact).Point; //Change FactRepresentation to Line this.FactRepresentation = (GameObject)Resources.Load("Prefabs/Line2", typeof(GameObject)); GameObject line = GameObject.Instantiate(FactRepresentation); @@ -97,118 +86,10 @@ public void SpawnLine(Vector3 point1, Vector3 point2) { GameObjectFacts[id] = line; } - public void OnMouseOverFactEnd(Transform selection) - { - Renderer selectionRenderer; - - if (selection != null) - { - selectionRenderer = selection.GetComponent<Renderer>(); - if (selectionRenderer != null) - { - //Set the Material of the fact back to default - selectionRenderer.material = defaultMaterial; - } - } - } - - public void OnMouseOverFact(Transform selection) - { - Renderer selectionRenderer; - - selectionRenderer = selection.GetComponent<Renderer>(); - if (selectionRenderer != null) { - //Set the Material of the Fact, where the mouse is over, to a special one - selectionRenderer.material = highlightMaterial; - } - } - public void OnHit(RaycastHit hit) - { - Debug.Log(CommunicationEvents.ActiveToolMode); - if (hit.transform.gameObject.layer == LayerMask.NameToLayer("Point")) - { - //hit existing point, so delete it - if(CommunicationEvents.ActiveToolMode == ToolMode.ExtraMode) - { - var menu =GameObject.Instantiate(SmartMenu); - menu.GetComponent<Canvas>().worldCamera = Camera.main; - menu.transform.SetParent(hit.transform); - menu.transform.localPosition = Vector3.up- Camera.main.transform.forward; - } - else - { - char letter = hit.transform.gameObject.GetComponentInChildren<TextMeshPro>().text.ToCharArray()[0]; - int id = letter - 65; - CommunicationEvents.RemoveEvent.Invoke(id); - } - - } - else - { - - CommunicationEvents.AddPointEvent.Invoke(hit, GetFirstEmptyID()); - } - } - public void OnToolModeChanged(ToolMode ActiveToolMode) { - switch (ActiveToolMode) { - case ToolMode.MarkPointMode: - //If MarkPointMode is activated we want to have the ability to mark the point - //everywhere, independent of already existing facts - foreach (GameObject GameObjectFact in this.GameObjectFacts) { - GameObjectFact.GetComponentInChildren<Collider>().enabled = false; - } - break; - case ToolMode.CreateLineMode: - //If CreateLineMode is activated we want to have the ability to select points for the Line - //but we don't want to have the ability to select Lines or Angles - foreach (GameObject GameObjectFact in this.GameObjectFacts) - { - if (GameObjectFact.layer == LayerMask.NameToLayer("Line") || GameObjectFact.layer == LayerMask.NameToLayer("Angle")) - { - GameObjectFact.GetComponentInChildren<Collider>().enabled = false; - } - else if (GameObjectFact.layer == LayerMask.NameToLayer("Point")) { - GameObjectFact.GetComponentInChildren<Collider>().enabled = true; - } - } - break; - case ToolMode.CreateAngleMode: - //If CreateAngleMode is activated we want to have the ability to select Lines for the Angle - //but we don't want to have the ability to select Points or Angles - foreach (GameObject GameObjectFact in this.GameObjectFacts) - { - if (GameObjectFact.layer == LayerMask.NameToLayer("Point") || GameObjectFact.layer == LayerMask.NameToLayer("Angle")) - { - GameObjectFact.GetComponentInChildren<Collider>().enabled = false; - } - else if (GameObjectFact.layer == LayerMask.NameToLayer("Line")) - { - GameObjectFact.GetComponentInChildren<Collider>().enabled = true; - } - } - break; - case ToolMode.DeleteMode: - //If DeleteMode is activated we want to have the ability to delete every Fact - //independent of the concrete type of fact - foreach (GameObject GameObjectFact in this.GameObjectFacts) - { - GameObjectFact.GetComponentInChildren<Collider>().enabled = true; - } - break; - case ToolMode.ExtraMode: - foreach (GameObject GameObjectFact in this.GameObjectFacts) - { - - } - break; - - - - } - } + - + } diff --git a/Assets/InteractionEngine/WorldCursor.cs b/Assets/InteractionEngine/WorldCursor.cs index 1bae810bcfb8635ba24830acc31be6b170142ffc..1a3a94dcfbf87f7e84754c8d2573afbff80894d3 100644 --- a/Assets/InteractionEngine/WorldCursor.cs +++ b/Assets/InteractionEngine/WorldCursor.cs @@ -7,18 +7,11 @@ public class WorldCursor : MonoBehaviour { - private RaycastHit Hit; + public RaycastHit Hit; private Camera Cam; private ToolMode ActiveToolMode{get; set;} - //Attributes for Highlighting of Facts when Mouse-Over - private string selectableTag = "Selectable"; - private Transform lastFactSelection; - //Attributes for simulating the drawing of a line - public LineRenderer lineRenderer; - private List<Vector3> linePositions = new List<Vector3>(); - private bool lineRendererActivated; void Start() { @@ -47,31 +40,8 @@ void Update() transform.position = Hit.point; transform.up = Hit.normal; transform.position += .01f * Hit.normal; - - //SELECTION-HIGHLIGHTING-PART - //Check if a Fact was Hit - Transform selection = Hit.transform; - - //Set the last Fact unselected - if (this.lastFactSelection != null) - { - //Invoke the EndHighlightEvent that will be handled in FactSpawner - CommunicationEvents.EndHighlightEvent.Invoke(this.lastFactSelection); - this.lastFactSelection = null; - } - - //Set the Fact that was Hit as selected - if (selection.CompareTag(selectableTag)) - { - //Invoke the HighlightEvent that will be handled in FactSpawner - this.lastFactSelection = selection; - CommunicationEvents.HighlightEvent.Invoke(selection); - } - //SELECTION-HIGHLIGHTING-PART-END - CheckMouseButtons(ray); - UpdateLineRenderer(transform.position); } else @@ -86,112 +56,19 @@ void Update() } //Deactivate LineRenderer so that no Line gets drawn when Cursor changes - void DeactivateLineRenderer() - { - //Reset the first points - this.lineRenderer.SetPosition(0, Vector3.zero); - this.lineRenderer.SetPosition(1, Vector3.zero); - if (linePositions.Count > 0) - this.linePositions.Clear(); - this.lineRendererActivated = false; - } + //Check if left Mouse-Button was pressed and handle it void CheckMouseButtons(Ray ray) { if (Input.GetMouseButtonDown(0)) { - switch (this.ActiveToolMode) - { - case ToolMode.MarkPointMode: - //send HitEvent - CommunicationEvents.TriggerEvent.Invoke(Hit); - break; - case ToolMode.ExtraMode: - //send HitEvent - CommunicationEvents.TriggerEvent.Invoke(Hit); - break; - case ToolMode.DeleteMode: - //send HitEvent - CommunicationEvents.TriggerEvent.Invoke(Hit); - break; - case ToolMode.CreateLineMode: - //Je nachdem ob erster oder der zweite Punkt angeklickt wurde behandeln - - //Wenn erster Punkt einen Point-Collider erwischt hat: - //Linie aktivieren und Cursor folgen - //Wenn erster Punkt keinen Point-Collider erwischt hat: - //Nichts tun -> Evtl Hint einblenden - - //Wenn zweiter Punkt einen Point-Collider erwischt hat: - //Event senden um GameObject-Line zu erzeugen - //Wenn zweiter Punkt keinen Point-Collider erwischt hat: - //Linie deaktivieren -> Evtl Hint einblenden - - //LayerMask for Points - int layerMask = 1 << LayerMask.NameToLayer("Point"); //only hit Point - - //Wenn bereits der erste Punkt markiert wurde - if (this.lineRendererActivated) - { - //If a second Point was Hit - if (Physics.Raycast(ray, out Hit, 30f, layerMask)) - { - //Event for Creating the Line - Vector3 point1 = this.linePositions[0]; - Vector3 point2 = Hit.transform.gameObject.transform.position; - this.DeactivateLineRenderer(); - CommunicationEvents.AddLineEvent.Invoke(point1, point2); - break; - } - //If no Point was hit - else - { - //TODO: Hint that only a line can be drawn between already existing points - this.DeactivateLineRenderer(); - } - } - //Wenn der erste Punkt noch nicht markiert wurde - else - { - //Check if a Point was hit - if (Physics.Raycast(ray, out Hit, 30f, layerMask)) - { - //Set LineRenderer activated - this.lineRendererActivated = true; - //Add the position of the hit Point for the start of the Line - Vector3 temp = Hit.transform.gameObject.transform.position; - //temp += Vector3.up; - - linePositions.Add(temp); - //The second point is the same point at the moment - linePositions.Add(temp); - this.lineRenderer.SetPosition(0, linePositions[0]); - this.lineRenderer.SetPosition(1, linePositions[1]); - } - else - { - //TODO: Hint that only a line can be drawn between already existing points - } - } - - break; - } + + CommunicationEvents.TriggerEvent.Invoke(Hit); + } } - //Updates the second-point of the Line when First Point was selected in LineMode - void UpdateLineRenderer(Vector3 currentPosition) - { - if (this.ActiveToolMode == ToolMode.CreateLineMode) - { - if (this.lineRendererActivated) - { - this.linePositions[1] = currentPosition; - this.lineRenderer.SetPosition(1, this.linePositions[1]); - } - } - } void CheckToolModeSelection() { if (Input.GetButtonDown("ToolMode")) { diff --git a/Assets/ShinyThings.cs b/Assets/ShinyThings.cs new file mode 100644 index 0000000000000000000000000000000000000000..655041131268dea93d62aeb5c910a5ab4ace682b --- /dev/null +++ b/Assets/ShinyThings.cs @@ -0,0 +1,103 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class ShinyThings : MonoBehaviour +{ + + public WorldCursor Cursor; + //Attributes for Highlighting of Facts when Mouse-Over + private string selectableTag = "Selectable"; + private Transform lastFactSelection; + + //Attributes for simulating the drawing of a line + public LineRenderer lineRenderer; + private List<Vector3> linePositions = new List<Vector3>(); + private bool lineRendererActivated; + //Visual helpers + + // Start is called before the first frame update + void Start() + { + if(Cursor == null)Cursor = GetComponent<WorldCursor>(); + } + + // Update is called once per frame + void Update() + { + //SELECTION-HIGHLIGHTING-PART + //Check if a Fact was Hit + + RaycastHit Hit = Cursor.Hit; + + Transform selection = Hit.transform; + + //Set the last Fact unselected + if (this.lastFactSelection != null) + { + //Invoke the EndHighlightEvent that will be handled in FactSpawner + CommunicationEvents.EndHighlightEvent.Invoke(this.lastFactSelection); + this.lastFactSelection = null; + } + + //Set the Fact that was Hit as selected + if (selection.CompareTag(selectableTag)) + { + //Invoke the HighlightEvent that will be handled in FactSpawner + this.lastFactSelection = selection; + CommunicationEvents.HighlightEvent.Invoke(selection); + } + //SELECTION-HIGHLIGHTING-PART-END + } + + public void OnMouseOverFactEnd(Transform selection) + { + Renderer selectionRenderer; + + if (selection != null) + { + selectionRenderer = selection.GetComponent<Renderer>(); + if (selectionRenderer != null) + { + //Set the Material of the fact back to default + selectionRenderer.material = defaultMaterial; + } + } + } + + public void OnMouseOverFact(Transform selection) + { + Renderer selectionRenderer; + + selectionRenderer = selection.GetComponent<Renderer>(); + if (selectionRenderer != null) + { + //Set the Material of the Fact, where the mouse is over, to a special one + selectionRenderer.material = highlightMaterial; + } + } + + + void DeactivateLineRenderer() + { + //Reset the first points + this.lineRenderer.SetPosition(0, Vector3.zero); + this.lineRenderer.SetPosition(1, Vector3.zero); + if (linePositions.Count > 0) + this.linePositions.Clear(); + this.lineRendererActivated = false; + } + //Updates the second-point of the Line when First Point was selected in LineMode + void UpdateLineRenderer(Vector3 currentPosition) + { + if (this.ActiveToolMode == ToolMode.CreateLineMode) + { + if (this.lineRendererActivated) + { + this.linePositions[1] = currentPosition; + this.lineRenderer.SetPosition(1, this.linePositions[1]); + } + } + } + +} diff --git a/Assets/ShinyThings.cs.meta b/Assets/ShinyThings.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..f52cff5f541b3608c139084c0c0805b95c67d5a1 --- /dev/null +++ b/Assets/ShinyThings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1ed2627334ef0e44ebe98f8b9ce4bc25 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TreeWorld.unity b/Assets/TreeWorld.unity index 3b6983ea4c31d8e96dd1ebf94ff34d18d4ff994f..72bf4cc591b5d08e0b9b0ddb2617ff61ec190a28 100644 --- a/Assets/TreeWorld.unity +++ b/Assets/TreeWorld.unity @@ -1133,208 +1133,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 5c41d44ed1851e14089a3b6e37cba740, type: 3} m_Name: m_EditorClassIdentifier: - Facts: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - GameObjectFacts: - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} defaultMaterial: {fileID: 2100000, guid: 8ae9adf4dc782964387385c1e8c0eb72, type: 2} highlightMaterial: {fileID: 2100000, guid: c7daa82e15f0cf04d92d0f41ce84f9df, type: 2} SmartMenu: {fileID: 5601740127768851631, guid: e693bf633c633d243b0254d117ec3893, @@ -1434,6 +1232,30 @@ LineRenderer: generateLightingData: 0 m_UseWorldSpace: 1 m_Loop: 0 +--- !u!114 &1661088669 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1661088665} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1ed2627334ef0e44ebe98f8b9ce4bc25, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1661088670 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1661088665} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c75823b1712c4914b987f0e1ba8a5cba, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1 &1675643434 GameObject: m_ObjectHideFlags: 0