diff --git a/Assets/Scripts/GenerateDemoFiles.cs b/Assets/Scripts/GenerateDemoFiles.cs index f30520b4d57f3306f0ff738de1164569a2b27c7e..252a0ca7521dbf672742fc79594b149bcf2ccc3e 100644 --- a/Assets/Scripts/GenerateDemoFiles.cs +++ b/Assets/Scripts/GenerateDemoFiles.cs @@ -46,11 +46,11 @@ public static void GenerateDemoA() buttom = new PointFact(Vector3.zero, Vector3.up, StageStatic.stage.solution), top = new PointFact(Vector3.zero + Vector3.up * minimalSolutionHight, Vector3.up, StageStatic.stage.solution); - StageStatic.stage.solution.Add(buttom, out _); - StageStatic.stage.solution.Add(top, out _, true); + StageStatic.stage.solution.Add(buttom, out _, false, null); + StageStatic.stage.solution.Add(top, out _, true, null); LineFact target = new LineFact(buttom.Id, top.Id, StageStatic.stage.solution); - var target_Id = StageStatic.stage.solution.Add(target, out _, true); + var target_Id = StageStatic.stage.solution.Add(target, out _, true, null); // Set Solution StageStatic.stage.solution.ValidationSet = @@ -92,11 +92,11 @@ public static void GenerateDemoB() buttom = new PointFact(Vector3.zero, Vector3.up, StageStatic.stage.solution), top = new PointFact(Vector3.zero + Vector3.up * minimalSolutionHight, Vector3.up, StageStatic.stage.solution); - StageStatic.stage.solution.Add(buttom, out _); - StageStatic.stage.solution.Add(top, out _, true); + StageStatic.stage.solution.Add(buttom, out _, false, null); + StageStatic.stage.solution.Add(top, out _, true, null); LineFact target = new LineFact(buttom.Id, top.Id, StageStatic.stage.solution); - var target_Id = StageStatic.stage.solution.Add(target, out _, true); + var target_Id = StageStatic.stage.solution.Add(target, out _, true, null); // Set Solution StageStatic.stage.solution.ValidationSet = diff --git a/Assets/Scripts/InteractionEngine/AlignText.cs b/Assets/Scripts/InteractionEngine/AlignText.cs index 27469c0d9dcb115e6bfa5eae0b96281db54abe70..3f19d2cc7cf91156d4df1bc9713c082b018b04a1 100644 --- a/Assets/Scripts/InteractionEngine/AlignText.cs +++ b/Assets/Scripts/InteractionEngine/AlignText.cs @@ -52,7 +52,7 @@ Camera toCamMain() IEnumerator CheckForNewMainCamRoutine() { - yield return new WaitForSeconds(2); + //yield return new WaitForSeconds(2); No! switch (UIconfig.MainCameraID) { @@ -71,6 +71,7 @@ IEnumerator CheckForNewMainCamRoutine() break; } + yield return null; //StopCoroutine(CheckForNewMainCamRoutine()); //print("Stopped:CheckForNewMainCamRoutine()"); //Cam = Camera.main; diff --git a/Assets/Scripts/InteractionEngine/FactHandling/FactManager.cs b/Assets/Scripts/InteractionEngine/FactHandling/FactManager.cs index 8426ed9d9c2c4e816bfb8fe28ed7aa2dfaa0d76c..158544732849984b8a9373f203a73cb750ca3be2 100644 --- a/Assets/Scripts/InteractionEngine/FactHandling/FactManager.cs +++ b/Assets/Scripts/InteractionEngine/FactHandling/FactManager.cs @@ -17,7 +17,7 @@ public static class FactManager /// \copydetails FactManager public static Fact AddFactIfNotFound(Fact fact, out bool exists, bool samestep) { - return StageStatic.stage.factState[StageStatic.stage.factState.Add(fact, out exists, samestep)]; + return StageStatic.stage.factState[StageStatic.stage.factState.Add(fact, out exists, samestep, GadgetManager.activeGadget.GetType())]; } /// \copybrief FactManager <summary></summary> diff --git a/Assets/Scripts/InteractionEngine/FactHandling/FactOrganizer.cs b/Assets/Scripts/InteractionEngine/FactHandling/FactOrganizer.cs index afe14cb7a3f9e315cdcea2407c4cb15003452fda..60c07fb8b33da4f40c92db23255d84a270ca84f3 100644 --- a/Assets/Scripts/InteractionEngine/FactHandling/FactOrganizer.cs +++ b/Assets/Scripts/InteractionEngine/FactHandling/FactOrganizer.cs @@ -171,15 +171,26 @@ protected internal struct meta /// </summary> public bool active; + /// <summary> + /// keeps track with wich <see cref="Gadget"/> the <see cref="Fact"/> is created + /// </summary> + public Type gadget { + get => _gadget; + set => _gadget = Gadget.GadgetTypes.Contains(value) ? value : typeof(Gadget.UndefinedGadget); + } + private Type _gadget; + /// <summary> /// Initiator /// </summary> /// <param name="workflow_id">sets <see cref="workflow_id"/></param> /// <param name="active">sets <see cref="active"/></param> - public meta(int workflow_id, bool active = true) + public meta(int workflow_id, bool active, Type gadget) { this.workflow_id = workflow_id; this.active = active; + _gadget = null; //Compiler Restriction + this.gadget = gadget; } } @@ -254,7 +265,7 @@ public static T ReInitializeFactOrganizer<T> old_to_new.Add(sn.Id, add.Id); } - target.Add(add, out _, sn.samestep); + target.Add(add, out _, sn.samestep, source.MetaInf[sn.Id].gadget); } else if (old_to_new.ContainsKey(sn.Id)) // Remove @@ -406,7 +417,7 @@ private void PruneWorkflow() /// <param name="samestep">set <c>true</c> if <see cref="Fact"/> creation happens as a subsequent/ consequent step of multiple <see cref="Fact"/> creations and/or deletions, /// and you whish that these are affected by a single <see cref="undo"/>/ <see cref="redo"/> step</param> /// <returns><see cref="Fact.Id"/> of <paramref name="value"/> or <see cref="FindEquivalent(Fact, out string, out bool)">found</see> <see cref="Fact"/> iff <paramref name="exists"/>==<c>true</c></returns> - public string Add(Fact value, out bool exists, bool samestep = false) + public string Add(Fact value, out bool exists, bool samestep, Type gadget) { soft_resetted = false; #pragma warning disable IDE0018 // Inlinevariablendeklaration @@ -427,7 +438,7 @@ public string Add(Fact value, out bool exists, bool samestep = false) zombie.creation = false; // this meta entry will be deleted, but will not trigger deletion Workflow[MetaInf[key].workflow_id] = zombie; // set new init location - MetaInf[key] = new meta(marker, true); + MetaInf[key] = new meta(marker, true, gadget); } // zombies are undead! else if (MetaInf[key].active) @@ -440,7 +451,7 @@ public string Add(Fact value, out bool exists, bool samestep = false) { key = value.Id; FactDict.Add(key, value); - MetaInf.Add(key, new meta(marker, true)); + MetaInf.Add(key, new meta(marker, true, gadget)); } WorkflowAdd(new stepnote(key, samestep, true, this)); @@ -457,9 +468,7 @@ public string Add(Fact value, out bool exists, bool samestep = false) /// and you whish that these are affected by a single <see cref="undo"/>/ <see cref="redo"/> step</param> /// <returns><c>true</c> iff <paramref name="value"/><see cref="Fact.Id">.Id</see> was found.</returns> public bool Remove(Fact value, bool samestep = false) - { - return this.Remove(value.Id, samestep); - } + => this.Remove(value.Id, samestep); /// \copybrief Remove(Fact, bool) /// <remarks>this will not <see cref="Fact.delete(bool)">delete</see> a <see cref="Fact"/>, but sets it <see cref="meta.active">inactive</see> for later <see cref="Fact.delete(bool)">deletion</see> when <see cref="PruneWorkflow">pruned</see>.</remarks> @@ -763,7 +772,7 @@ public bool DynamiclySolved( { MissingElements = new List<List<string>>(); // need to work not on ref/out - List<List<string>> Solution_L = new List<List<string>>(); + List<List<string>> Solution_L = new(); int MissingElementsCount = 0; var activeList = FactDict.Values.Where(f => MetaInf[f.Id].active); @@ -812,4 +821,7 @@ public bool DynamiclySolved( return MissingElementsCount == 0; } + public IEnumerable<Type> GetUsedGadgets() + => MetaInf.Values.Where(inf => inf.active).Select(inf => inf.gadget); + } \ No newline at end of file diff --git a/Assets/Scripts/InteractionEngine/FactHandling/SolutionOrganizer.cs b/Assets/Scripts/InteractionEngine/FactHandling/SolutionOrganizer.cs index 7faca0f67ac8f949e0403b9a60fb980e71808017..a015611bc99efb848ebca0d50d3912823c91985d 100644 --- a/Assets/Scripts/InteractionEngine/FactHandling/SolutionOrganizer.cs +++ b/Assets/Scripts/InteractionEngine/FactHandling/SolutionOrganizer.cs @@ -75,7 +75,7 @@ public string ComparerString } } /// <summary> - /// Collection of <c>string</c> representations of *all* available <see cref="FactComparer"/> to choose from. + /// Collection of <c>Type</c>s of *all* available <see cref="FactComparer"/> to choose from. /// </summary> [JsonIgnore] public static readonly IEnumerable<Type> fact_comparer = Assembly.GetExecutingAssembly().GetTypes().Where(typeof(FactComparer).IsAssignableFrom); diff --git a/Assets/Scripts/InteractionEngine/Gadgets/AngleTool.cs b/Assets/Scripts/InteractionEngine/Gadgets/AngleTool.cs index d39ced488e0e4d32fb93a02a1440e6f8be033dbd..e037236a891b5dd09f939c57c56a5d9a0b7b79e2 100644 --- a/Assets/Scripts/InteractionEngine/Gadgets/AngleTool.cs +++ b/Assets/Scripts/InteractionEngine/Gadgets/AngleTool.cs @@ -24,69 +24,68 @@ public class AngleTool : Gadget private Vector3 angleMiddlePoint; private float curveRadius; - new void Awake() + public override void _Awake() { - base.Awake(); UiName = "Angle Mode"; if(MaxRange == 0) MaxRange = GlobalBehaviour.GadgetLaserDistance; } //Initialize Gadget when enabled AND activated - new void OnEnable() + public override void _OnEnable() { - base.OnEnable(); - this.ResetGadget(); + ResetGadget(); } - void OnDisable() + public override void _OnDisable() { - this.ResetGadget(); + ResetGadget(); } - public override void OnHit(RaycastHit hit) + public override void _OnHit(RaycastHit hit) { - if (!GadgetCanBeUsed) return; - if (!this.isActiveAndEnabled) return; + if (!GadgetCanBeUsed) return; + if (!isActiveAndEnabled) return; + if (hit.transform.gameObject.layer == LayerMask.NameToLayer("Point")) { PointFact tempFact = (PointFact)StageStatic.stage.factState[hit.transform.GetComponent<FactObject>().URI]; //If two points were already selected and now the third point got selected - if (this.angleModeIsFirstPointSelected && this.angleModeIsSecondPointSelected) + if (angleModeIsFirstPointSelected && angleModeIsSecondPointSelected) { //Create AngleFact //Check if new Point is equal to one of the previous points -> if true -> cancel - if (!(this.angleModeFirstPointSelected.Id == tempFact.Id || this.angleModeSecondPointSelected.Id == tempFact.Id)) + if (!(angleModeFirstPointSelected.Id == tempFact.Id || angleModeSecondPointSelected.Id == tempFact.Id)) { - FactManager.AddAngleFact(((PointFact)this.angleModeFirstPointSelected).Id, ((PointFact)this.angleModeSecondPointSelected).Id, ((PointFact)tempFact).Id); + FactManager.AddAngleFact((angleModeFirstPointSelected).Id, (angleModeSecondPointSelected).Id, tempFact.Id); } ResetGadget(); } //If only one point was already selected - else if (this.angleModeIsFirstPointSelected && !this.angleModeIsSecondPointSelected) + else if (angleModeIsFirstPointSelected && !angleModeIsSecondPointSelected) { //Check if the 2 selected points are the same: If not - if (this.angleModeFirstPointSelected.Id != tempFact.Id) + if (angleModeFirstPointSelected.Id != tempFact.Id) { - this.angleModeIsSecondPointSelected = true; - this.angleModeSecondPointSelected = tempFact; + angleModeIsSecondPointSelected = true; + angleModeSecondPointSelected = tempFact; ActivateCurveDrawing(); } - else - { - this.angleModeFirstPointSelected = null; - this.angleModeIsFirstPointSelected = false; - } + //else + //{ + // angleModeFirstPointSelected = null; + // angleModeIsFirstPointSelected = false; + //} } //If no point was selected before else { //Save the first point selected - this.angleModeIsFirstPointSelected = true; - this.angleModeFirstPointSelected = tempFact; + angleModeIsFirstPointSelected = true; + angleModeFirstPointSelected = tempFact; } } //No point was hit @@ -100,33 +99,33 @@ public override void OnHit(RaycastHit hit) void Update() { - if (!this.isActiveAndEnabled) return; - if (this.curveDrawingActivated) - UpdateCurveDrawing(this.Cursor.transform.position); + if (!isActiveAndEnabled) return; + if (curveDrawingActivated) + UpdateCurveDrawing(Cursor.transform.position); } private void ResetGadget() { - this.angleModeIsFirstPointSelected = false; - this.angleModeFirstPointSelected = null; - this.angleModeIsSecondPointSelected = false; - this.angleModeSecondPointSelected = null; + angleModeIsFirstPointSelected = false; + angleModeFirstPointSelected = null; + angleModeIsSecondPointSelected = false; + angleModeSecondPointSelected = null; DeactivateCurveDrawing(); } //Expect a LineFact here, where Line.Pid2 will be the Basis-Point of the angle public void ActivateCurveDrawing() { - this.lineRenderer.enabled = true; + lineRenderer.enabled = true; //In AngleMode with 3 Points we want to draw nearly a rectangle so we add a startPoint and an Endpoint to this preview - this.lineRenderer.positionCount = curveDrawingVertexCount + 2; - this.lineRenderer.material = this.anglePreviewMaterial; + lineRenderer.positionCount = curveDrawingVertexCount + 2; + lineRenderer.material = anglePreviewMaterial; lineRenderer.startWidth = 0.05f; lineRenderer.endWidth = 0.05f; //Set CurveDrawing activated - this.curveDrawingActivated = true; + curveDrawingActivated = true; //curveEndPoint is a point on the Line selected, with some distance from point2 curveEndPoint = angleModeSecondPointSelected.Point + 0.3f * (angleModeFirstPointSelected.Point - angleModeSecondPointSelected.Point).magnitude * (angleModeFirstPointSelected.Point - angleModeSecondPointSelected.Point).normalized; @@ -150,7 +149,7 @@ public void UpdateCurveDrawing(Vector3 currentPosition) angleModeSecondPointSelected.Point }; - for (float ratio = 0; ratio <= 1; ratio += 1.0f / this.curveDrawingVertexCount) + for (float ratio = 0; ratio <= 1; ratio += 1.0f / curveDrawingVertexCount) { var tangentLineVertex1 = Vector3.Lerp(startPoint, curveMiddlePoint, ratio); var tangentLineVertex2 = Vector3.Lerp(curveMiddlePoint, curveEndPoint, ratio); @@ -168,10 +167,10 @@ public void UpdateCurveDrawing(Vector3 currentPosition) public void DeactivateCurveDrawing() { - this.lineRenderer.positionCount = 0; - this.linePositions = new List<Vector3>(); - this.curveDrawingActivated = false; - this.lineRenderer.enabled = false; + lineRenderer.positionCount = 0; + linePositions = new List<Vector3>(); + curveDrawingActivated = false; + lineRenderer.enabled = false; } } diff --git a/Assets/Scripts/InteractionEngine/Gadgets/ExtraGadget.cs b/Assets/Scripts/InteractionEngine/Gadgets/ExtraGadget.cs index 944e8f4cd9c037d7a541b0306126d6b854ecafe1..70acd17f9783ff6e9561ef4c662243edcda8a035 100644 --- a/Assets/Scripts/InteractionEngine/Gadgets/ExtraGadget.cs +++ b/Assets/Scripts/InteractionEngine/Gadgets/ExtraGadget.cs @@ -2,21 +2,18 @@ public class ExtraGadget : Gadget { - new void Awake() + public override void _Awake() { - base.Awake(); UiName = "Extra Mode"; MaxRange = GlobalBehaviour.GadgetPhysicalDistance; } - new void OnEnable() - { - base.OnEnable(); - } + public override void _OnDisable() { } - public override void OnHit(RaycastHit hit) - { + public override void _OnEnable() { } + public override void _OnHit(RaycastHit hit) + { + throw new System.NotImplementedException(); } - } diff --git a/Assets/Scripts/InteractionEngine/Gadgets/Gadget.cs b/Assets/Scripts/InteractionEngine/Gadgets/Gadget.cs index 194e6829cdc1a3d0e1b14e97fec7c4f6804df463..f7ca3e68ccb00ceaa0c22320a8627c469057d211 100644 --- a/Assets/Scripts/InteractionEngine/Gadgets/Gadget.cs +++ b/Assets/Scripts/InteractionEngine/Gadgets/Gadget.cs @@ -1,10 +1,14 @@ -using UnityEngine; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using UnityEngine; /// <summary> /// Base class for all Gadgets to derive from. /// A Gadget is a tool for the player (and level editor) to interact with the GameWorld. /// </summary> -public class Gadget : MonoBehaviour +public abstract class Gadget: MonoBehaviour { /// <summary> Position in tool belt. </summary> /// <remarks>Set in Inspector or <see cref="Awake"/></remarks> @@ -19,30 +23,77 @@ public class Gadget : MonoBehaviour /// <summary>Which sprite to use</summary> /// <remarks>Set in Inspector</remarks> public Sprite Sprite; - /// <summary>Layers to ignore for thid gadget by default.</summary> + /// <summary>Layers to ignore for this gadget by default.</summary> /// <remarks>Set in Inspector</remarks> public LayerMask ignoreLayerMask; /// <summary>Which cursor to use</summary> /// <remarks>When not set in Inspector, will be searching for any <see cref="WorldCursor"/>.</remarks> public WorldCursor Cursor; - protected void Awake() + /// <summary> + /// Collection of <c>Type</c>s of *all* available <see cref="Gadget"/>s to choose from. + /// </summary> + public static readonly IEnumerable<Type> GadgetTypes = Assembly.GetExecutingAssembly().GetTypes().Where(typeof(Gadget).IsAssignableFrom); + + + void Awake() { if (Cursor == null) Cursor = GameObject.FindObjectOfType<WorldCursor>(); - CommunicationEvents.TriggerEvent.AddListener(OnHit); + CommunicationEvents.TriggerEvent.AddListener(_OnHit); + + _Awake(); } - protected void OnEnable() + void OnEnable() { this.Cursor.setLayerMask(~this.ignoreLayerMask.value); Cursor.MaxRange = MaxRange; + + _OnEnable(); } + void OnDisable() + { + _OnDisable(); + } + + public void OnHit (RaycastHit hit) + { + _OnHit(hit); + } + + public abstract void _Awake(); + public abstract void _OnEnable(); + public abstract void _OnDisable(); + /// <summary> /// Called when <see cref="CommunicationEvents.TriggerEvent"/> is invoked, a.k.a. when Player clicks in GameWorld. /// </summary> /// <param name="hit">the position where it was clicked</param> - public virtual void OnHit(RaycastHit hit) { } + public abstract void _OnHit(RaycastHit hit); + + public class UndefinedGadget : Gadget + { + public override void _Awake() + { + throw new NotImplementedException(); + } + + public override void _OnDisable() + { + throw new NotImplementedException(); + } + + public override void _OnEnable() + { + throw new NotImplementedException(); + } + + public override void _OnHit(RaycastHit hit) + { + throw new NotImplementedException(); + } + } } diff --git a/Assets/Scripts/InteractionEngine/Gadgets/LineTool.cs b/Assets/Scripts/InteractionEngine/Gadgets/LineTool.cs index a11985f3ed0d852997753c885244aba6d72f18dd..3945dd8ee3e779a397b2ffe99d3c330139352dee 100644 --- a/Assets/Scripts/InteractionEngine/Gadgets/LineTool.cs +++ b/Assets/Scripts/InteractionEngine/Gadgets/LineTool.cs @@ -15,27 +15,25 @@ public class LineTool : Gadget private List<Vector3> linePositions = new List<Vector3>(); public Material linePreviewMaterial; - new void Awake() + public override void _Awake() { - base.Awake(); UiName = "Line Mode"; if (MaxRange == 0) MaxRange = GlobalBehaviour.GadgetLaserDistance; } //Initialize Gadget when enabled AND activated - new void OnEnable() + public override void _OnEnable() { - base.OnEnable(); this.ResetGadget(); } - void OnDisable() + public override void _OnDisable() { this.ResetGadget(); } - public override void OnHit(RaycastHit hit) + public override void _OnHit(RaycastHit hit) { if (!GadgetCanBeUsed) return; if (!this.isActiveAndEnabled) return; diff --git a/Assets/Scripts/InteractionEngine/Gadgets/LotTool.cs b/Assets/Scripts/InteractionEngine/Gadgets/LotTool.cs index eeef723c9a94363071001077e72ff0b1aa25b5c4..67b1aa3ca2c1fdca71ccdf8498ce6975df5017b9 100644 --- a/Assets/Scripts/InteractionEngine/Gadgets/LotTool.cs +++ b/Assets/Scripts/InteractionEngine/Gadgets/LotTool.cs @@ -20,31 +20,26 @@ public class LotTool : Gadget private List<Vector3> linePositions = new List<Vector3>(); public Material linePreviewMaterial; - new void Awake() + public override void _Awake() { - base.Awake(); this.UiName = "Lot Mode"; if (MaxRange == 0) MaxRange = GlobalBehaviour.GadgetLaserDistance; } //Initialize Gadget when enabled AND activated - new void OnEnable() + public override void _OnEnable() { - base.OnEnable(); this.ResetGadget(); } - void OnDisable() + public override void _OnDisable() { this.ResetGadget(); } - public override void OnHit(RaycastHit hit) + public override void _OnHit(RaycastHit hit) { - - - void CreateRayAndAngles(string pidIntersectionPoint, string pidLotPoint, bool samestep) { FactManager.AddRayFact(pidIntersectionPoint, pidLotPoint, samestep); diff --git a/Assets/Scripts/InteractionEngine/Gadgets/Pendulum.cs b/Assets/Scripts/InteractionEngine/Gadgets/Pendulum.cs index f27caf4d834292f2308239ddaadce06a268dcbce..411a16673d5fce28bfce5fadb55dd09254bc2d02 100644 --- a/Assets/Scripts/InteractionEngine/Gadgets/Pendulum.cs +++ b/Assets/Scripts/InteractionEngine/Gadgets/Pendulum.cs @@ -13,27 +13,25 @@ public class Pendulum : Gadget private List<Vector3> linePositions = new List<Vector3>(); public Material linePreviewMaterial; - new void Awake() + public override void _Awake() { - base.Awake(); this.UiName = "Pendulum"; if (MaxRange == 0) MaxRange = GlobalBehaviour.GadgetLaserDistance; } - new void OnEnable() + public override void _OnEnable() { - base.OnEnable(); this.ResetGadget(); ActivateLineDrawing(); } - void OnDisable() + public override void _OnDisable() { this.ResetGadget(); } - public override void OnHit(RaycastHit hit) + public override void _OnHit(RaycastHit hit) { if (!GadgetCanBeUsed) return; @@ -44,8 +42,7 @@ public override void OnHit(RaycastHit hit) PointFact tempFact = StageStatic.stage.factState[hit.transform.GetComponent<FactObject>().URI] as PointFact; //Raycast downwoard - RaycastHit ground; - if(Physics.Raycast(tempFact.Point, Vector3.down, out ground, Mathf.Infinity, this.LayerPendulumHits.value)) + if(Physics.Raycast(tempFact.Point, Vector3.down, out RaycastHit ground, Mathf.Infinity, this.LayerPendulumHits.value)) { FactManager.AddPointFact(ground); } @@ -89,8 +86,7 @@ private void UpdateLineDrawing() this.linePositions[0] = this.Cursor.transform.position; //Raycast downwoard - RaycastHit ground; - if (Physics.Raycast(this.linePositions[0], Vector3.down, out ground, Mathf.Infinity, this.LayerPendulumHits.value)) + if (Physics.Raycast(this.linePositions[0], Vector3.down, out RaycastHit ground, Mathf.Infinity, this.LayerPendulumHits.value)) this.linePositions[1] = ground.point; else this.linePositions[1] = this.linePositions[0]; diff --git a/Assets/Scripts/InteractionEngine/Gadgets/Pointer.cs b/Assets/Scripts/InteractionEngine/Gadgets/Pointer.cs index 73dfcdcdd5c0c98b4c79bb356f0d56db5177ee9b..45d9f02fa26bc072cd89a23c9b00ff2a7be78f1d 100644 --- a/Assets/Scripts/InteractionEngine/Gadgets/Pointer.cs +++ b/Assets/Scripts/InteractionEngine/Gadgets/Pointer.cs @@ -5,21 +5,19 @@ public class Pointer : Gadget { - new void Awake() + public override void _Awake() { - base.Awake(); this.UiName = "Point Mode"; if (MaxRange == 0) MaxRange = GlobalBehaviour.GadgetLaserDistance; } - public override void OnHit(RaycastHit hit) + public override void _OnHit(RaycastHit hit) { - //Debug.Log("pointer1"); if (!GadgetCanBeUsed) return; - + if (!this.isActiveAndEnabled) return; - + var pid = FactManager.AddPointFact(hit).Id; if (hit.transform.gameObject.layer == LayerMask.NameToLayer("Ray")) @@ -27,5 +25,8 @@ public override void OnHit(RaycastHit hit) FactManager.AddOnLineFact(pid, hit.transform.GetComponent<FactObject>().URI, true); } } - + + public override void _OnEnable() { } + + public override void _OnDisable() { } } diff --git a/Assets/Scripts/InteractionEngine/Gadgets/PoleTool.cs b/Assets/Scripts/InteractionEngine/Gadgets/PoleTool.cs index 003d18e1819d90ad69d8beafbe383a7f1180179c..a95d945a08c2165b0d29b637bc3fbcc7243eb668 100644 --- a/Assets/Scripts/InteractionEngine/Gadgets/PoleTool.cs +++ b/Assets/Scripts/InteractionEngine/Gadgets/PoleTool.cs @@ -15,9 +15,8 @@ public class PoleTool : Gadget public float poleHeight = 1f; public float maxHeight; - new void Awake() + public override void _Awake() { - base.Awake(); UiName = "PoleTool"; if (MaxRange == 0) MaxRange = GlobalBehaviour.GadgetPhysicalDistance; @@ -25,19 +24,18 @@ public class PoleTool : Gadget maxHeight = 0.1f; } - new void OnEnable() + public override void _OnEnable() { - base.OnEnable(); this.ResetGadget(); ActivateLineDrawing(); } - void OnDisable() + public override void _OnDisable() { this.ResetGadget(); } - public override void OnHit(RaycastHit hit) + public override void _OnHit(RaycastHit hit) { if (!GadgetCanBeUsed) return; diff --git a/Assets/Scripts/InteractionEngine/Gadgets/Remover.cs b/Assets/Scripts/InteractionEngine/Gadgets/Remover.cs index 47016f20e86581879d6b19431db06f62e9cee2d0..69438a411b22e1e405e8b648c7b3b11f43d463d7 100644 --- a/Assets/Scripts/InteractionEngine/Gadgets/Remover.cs +++ b/Assets/Scripts/InteractionEngine/Gadgets/Remover.cs @@ -5,15 +5,18 @@ public class Remover : Gadget { - new void Awake() + public override void _Awake() { - base.Awake(); this.UiName = "Remove Mode"; if (MaxRange == 0) MaxRange = GlobalBehaviour.GadgetLaserDistance; } - public override void OnHit(RaycastHit hit) + public override void _OnDisable() { } + + public override void _OnEnable() { } + + public override void _OnHit(RaycastHit hit) { if (!GadgetCanBeUsed) return; diff --git a/Assets/Scripts/InteractionEngine/Gadgets/Tape.cs b/Assets/Scripts/InteractionEngine/Gadgets/Tape.cs index 933e75dba3b5009c049ff3d9e7e2da468009e726..273f96090c9fe7efb9dd3cf55c0bc8628d248fc1 100644 --- a/Assets/Scripts/InteractionEngine/Gadgets/Tape.cs +++ b/Assets/Scripts/InteractionEngine/Gadgets/Tape.cs @@ -16,29 +16,25 @@ public class Tape : Gadget private List<Vector3> linePositions = new List<Vector3>(); public Material linePreviewMaterial; - new void Awake() + public override void _Awake() { - base.Awake(); this.UiName = "Distance Mode"; if (MaxRange == 0) MaxRange = GlobalBehaviour.GadgetPhysicalDistance; - //test - //MaxRange = 100; } - //Initialize Gadget when enabled AND activated - new void OnEnable() + //Initialize Gadget when enabled + public override void _OnEnable() { - base.OnEnable(); this.ResetGadget(); } - void OnDisable() + public override void _OnDisable() { this.ResetGadget(); } - public override void OnHit(RaycastHit hit) + public override void _OnHit(RaycastHit hit) { if (!GadgetCanBeUsed) return; if (!this.isActiveAndEnabled) return; @@ -142,4 +138,5 @@ private void DeactivateLineDrawing() this.linePositions = new List<Vector3>(); this.lineRenderer.enabled = false; } + } diff --git a/Assets/Scripts/Loading/Stage.cs b/Assets/Scripts/Loading/Stage.cs index e89eb914702d5f5325f0bb62992b0bca77ac4c4a..a60aec46751ae23fe822307553689b8191ff45ab 100644 --- a/Assets/Scripts/Loading/Stage.cs +++ b/Assets/Scripts/Loading/Stage.cs @@ -5,17 +5,18 @@ using UnityEngine; using Newtonsoft.Json; using static CommunicationEvents; -using System.Reflection; -//using static IJSONsavable<Stage>; public class Stage: IJSONsavable<Stage> { + #region metadata /// <summary> Which category this <see cref="Stage"/> should be displayed in. </summary> public string category = null; + /// <summary> Where to display this <see cref="Stage"/> within a <see cref="category"/> relative to others. </summary> public int number = -1; + /// <summary> /// The name this <see cref="Stage"/> will be displayed with. /// Also defines names of save files of <see cref="player_record_list">stage progress</see>, <see cref="solution"/> @@ -32,15 +33,35 @@ public class Stage: IJSONsavable<Stage> /// <summary> Wether this <see cref="Stage"/> is located in installation folder or user data (a.k.a. !local).</summary> public bool use_install_folder = false; + #endregion metadata + + /// <summary> + /// Defining when this <see cref="Stage.player_record"/> is considered as solved. + /// <seealso cref="FactOrganizer.DynamiclySolved(SolutionOrganizer, out List{List{string}}, out List{List{string}})"/> + /// </summary> + [JSONsavable.JsonAutoPreProcess, JSONsavable.JsonAutoPostProcess] + public SolutionOrganizer solution = null; + [JsonIgnore, JSONsavable.JsonSeparate] public SaveGame savegame = null; + #region makros/shortcuts + /// <summary> /// <see langword="true"/> iff there is at least one element in <see cref="player_record_list"/> where <see cref="PlayerRecord.solved"/> == <see langword="true"/>. /// </summary> [JsonIgnore] //TODO? update color if changed - public bool completed_once { get { return player_record_list != null && player_record_list.Values.Where(s => s.solved == true).Any(); } } + public bool completed_once { get { return player_record_list != null && player_record_list.Values.Any(s => s.solved == true); } } + + /// <summary> Current Stage progress.</summary> + [JsonIgnore] + public PlayerRecord player_record { + get => savegame?.player_record; + set => (savegame ??= new()) + .player_record = value; + } + /// <summary> /// A list containing all saved player progress. <br/> /// - Key: name of file @@ -53,13 +74,6 @@ public Dictionary<string, PlayerRecord> player_record_list { .player_record_list = value; } - /// <summary> - /// Defining when this <see cref="Stage.player_record"/> is considered as solved. - /// <seealso cref="FactOrganizer.DynamiclySolved(SolutionOrganizer, out List{List{string}}, out List{List{string}})"/> - /// </summary> - [JSONsavable.JsonAutoPreProcess, JSONsavable.JsonAutoPostProcess] - public SolutionOrganizer solution = null; - /// <summary> /// A wrapper returning (or setting) <see cref="player_record.factState"/>. <br/> /// When <see cref="player_record"/> == <see langword="null"/>: @@ -72,13 +86,9 @@ public FactOrganizer factState { set => (player_record ??= new(record_name)) .factState = value; } - /// <summary> Current Stage progress.</summary> - [JsonIgnore] - public PlayerRecord player_record { - get => savegame?.player_record; - set => (savegame ??= new()) - .player_record = value; - } + + #endregion makros/shortcuts + /// <summary> Returns a name for <see cref="player_record.name"/> which needs to be uniquified once put into <see cref="player_record_list"/> (e.g. by <see cref="push_record(double, bool) adding '_i'"/>).</summary> private string record_name { get { return name + "_save"; } } @@ -470,8 +480,7 @@ public class PlayerRecord: IJSONsavable<PlayerRecord> public FactOrganizer factState = new(); /// <summary> save game file name </summary> public string name { get; set; } = null; - - public string path { get; set; } + public string path { get; set; } = null; static PlayerRecord(/*static!*/) { @@ -492,7 +501,6 @@ public PlayerRecord(string name) { factState = new FactOrganizer(); } - /// <summary> /// Copies a specified <see cref="PlayerRecord"/> /// </summary> @@ -509,4 +517,13 @@ public PlayerRecord Clone() return ret; } +} + + +public class SolutionApproach: IJSONsavable<SolutionApproach> +{ + public string name { get; set; } = null; + public string path { get; set; } = null; + + //public PlayerRecord } \ No newline at end of file diff --git a/GlobalSuppressions2.cs b/GlobalSuppressions2.cs new file mode 100644 index 0000000000000000000000000000000000000000..496b77e3fcf2119ba29c360ed0c3bf213256f33d --- /dev/null +++ b/GlobalSuppressions2.cs @@ -0,0 +1,9 @@ +// This file is used by Code Analysis to maintain SuppressMessage +// attributes that are applied to this project. +// Project-level suppressions either have no target or are given +// a specific target and scoped to a namespace, type, member, etc. + +using System.Diagnostics.CodeAnalysis; + +[assembly: SuppressMessage("Style", "IDE0034:Simplify 'default' expression", Justification = "Readabilty", Scope = "member", Target = "~M:IJSONsavable`1.load(System.Collections.Generic.List{CommunicationEvents.Directories},System.String,`0@,System.Boolean,System.Boolean,System.Boolean)~System.Boolean")] +[assembly: SuppressMessage("Style", "IDE0034:Simplify 'default' expression", Justification = "<Pending>", Scope = "member", Target = "~M:JSONsavable.ReadFromJsonFile``1(``0@,System.String)~System.Boolean")] diff --git a/UserSettings/EditorUserSettings.asset b/UserSettings/EditorUserSettings.asset index 0896c38ada2fbb2a6d0f262abc13722c16f18fbf..260df1b47fc4fc30ff00cb003d0bc1b6d63ae8ab 100644 --- a/UserSettings/EditorUserSettings.asset +++ b/UserSettings/EditorUserSettings.asset @@ -6,14 +6,20 @@ EditorUserSettings: serializedVersion: 4 m_ConfigSettings: RecentlyUsedSceneGuid-0: - value: 57505505560608585a56557116730644404e4d7b7c7b7562787e4f66e4b1313e + value: 0502505152005e020c0d0e2446275e44144f19287f707e362c7c4b60b2b9353c flags: 0 RecentlyUsedSceneGuid-1: - value: 0502505152005e020c0d0e2446275e44144f19287f707e362c7c4b60b2b9353c + value: 5b5200520604510a5b5b587642270744124e4e7a7e7f2764742f1b61b0e6613a flags: 0 RecentlyUsedSceneGuid-2: + value: 520107035d0c510c080d547215760b4413154d2e7a2c226129281c65e3b63768 + flags: 0 + RecentlyUsedSceneGuid-3: value: 0709560454055c0d0c5e5c2444740b4413154a72792d22627c714963e0b6373d flags: 0 + RecentlyUsedSceneGuid-4: + value: 57505505560608585a56557116730644404e4d7b7c7b7562787e4f66e4b1313e + flags: 0 RecentlyUsedScenePath-0: value: 22424703114646680e0b0227036c721518021d39630928343f162e27e3f22076f7e93ffdfe flags: 0 diff --git a/UserSettings/Layouts/default-2021.dwlt b/UserSettings/Layouts/default-2021.dwlt index 459707aae6551378333e544a37229fd05257cb2c..01d786d322a3f4b42cda74f6ecfcc630d0ca07a5 100644 --- a/UserSettings/Layouts/default-2021.dwlt +++ b/UserSettings/Layouts/default-2021.dwlt @@ -1,30 +1,6 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!114 &1 -MonoBehaviour: - m_ObjectHideFlags: 52 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 12004, guid: 0000000000000000e000000000000000, type: 0} - m_Name: - m_EditorClassIdentifier: - m_PixelRect: - serializedVersion: 2 - x: 2783 - y: 205 - width: 640 - height: 661 - m_ShowMode: 0 - m_Title: Build Settings - m_RootView: {fileID: 4} - m_MinSize: {x: 640, y: 601} - m_MaxSize: {x: 4000, y: 4021} - m_Maximized: 0 ---- !u!114 &2 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -38,67 +14,17 @@ MonoBehaviour: m_EditorClassIdentifier: m_PixelRect: serializedVersion: 2 - x: -1920 + x: 0 y: 43 - width: 1920 - height: 1037 + width: 2560 + height: 1357 m_ShowMode: 4 - m_Title: Hierarchy - m_RootView: {fileID: 9} + m_Title: Project + m_RootView: {fileID: 6} m_MinSize: {x: 875, y: 300} m_MaxSize: {x: 10000, y: 10000} m_Maximized: 1 ---- !u!114 &3 -MonoBehaviour: - m_ObjectHideFlags: 52 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} - m_Name: BuildPlayerWindow - m_EditorClassIdentifier: - m_Children: [] - m_Position: - serializedVersion: 2 - x: 0 - y: 0 - width: 640 - height: 661 - m_MinSize: {x: 640, y: 580} - m_MaxSize: {x: 4000, y: 4000} - m_ActualView: {fileID: 15} - m_Panes: - - {fileID: 15} - m_Selected: 0 - m_LastSelected: 0 ---- !u!114 &4 -MonoBehaviour: - m_ObjectHideFlags: 52 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0} - m_Name: - m_EditorClassIdentifier: - m_Children: - - {fileID: 3} - m_Position: - serializedVersion: 2 - x: 0 - y: 0 - width: 640 - height: 661 - m_MinSize: {x: 640, y: 601} - m_MaxSize: {x: 4000, y: 4021} - vertical: 0 - controlID: 54 ---- !u!114 &5 +--- !u!114 &2 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -111,19 +37,19 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Children: - - {fileID: 12} - - {fileID: 6} + - {fileID: 9} + - {fileID: 3} m_Position: serializedVersion: 2 x: 0 y: 30 - width: 1920 - height: 987 + width: 2560 + height: 1307 m_MinSize: {x: 300, y: 200} m_MaxSize: {x: 24288, y: 16192} vertical: 0 - controlID: 220 ---- !u!114 &6 + controlID: 99 +--- !u!114 &3 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -138,18 +64,18 @@ MonoBehaviour: m_Children: [] m_Position: serializedVersion: 2 - x: 1484 + x: 1979 y: 0 - width: 436 - height: 987 + width: 581 + height: 1307 m_MinSize: {x: 276, y: 71} m_MaxSize: {x: 4001, y: 4021} - m_ActualView: {fileID: 17} + m_ActualView: {fileID: 13} m_Panes: - - {fileID: 17} + - {fileID: 13} m_Selected: 0 m_LastSelected: 0 ---- !u!114 &7 +--- !u!114 &4 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -166,16 +92,16 @@ MonoBehaviour: serializedVersion: 2 x: 0 y: 0 - width: 561 - height: 588 - m_MinSize: {x: 201, y: 221} - m_MaxSize: {x: 4001, y: 4021} - m_ActualView: {fileID: 18} + width: 748 + height: 779 + m_MinSize: {x: 200, y: 200} + m_MaxSize: {x: 4000, y: 4000} + m_ActualView: {fileID: 14} m_Panes: - - {fileID: 18} + - {fileID: 14} m_Selected: 0 m_LastSelected: 0 ---- !u!114 &8 +--- !u!114 &5 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -185,24 +111,24 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 1 m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} - m_Name: ConsoleWindow + m_Name: ProjectBrowser m_EditorClassIdentifier: m_Children: [] m_Position: serializedVersion: 2 x: 0 - y: 588 - width: 1484 - height: 399 - m_MinSize: {x: 101, y: 121} - m_MaxSize: {x: 4001, y: 4021} - m_ActualView: {fileID: 21} + y: 779 + width: 1979 + height: 528 + m_MinSize: {x: 231, y: 271} + m_MaxSize: {x: 10001, y: 10021} + m_ActualView: {fileID: 12} m_Panes: - - {fileID: 16} - - {fileID: 21} - m_Selected: 1 - m_LastSelected: 0 ---- !u!114 &9 + - {fileID: 12} + - {fileID: 17} + m_Selected: 0 + m_LastSelected: 1 +--- !u!114 &6 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -215,22 +141,22 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Children: - - {fileID: 10} - - {fileID: 5} - - {fileID: 11} + - {fileID: 7} + - {fileID: 2} + - {fileID: 8} m_Position: serializedVersion: 2 x: 0 y: 0 - width: 1920 - height: 1037 + width: 2560 + height: 1357 m_MinSize: {x: 875, y: 300} m_MaxSize: {x: 10000, y: 10000} m_UseTopView: 1 m_TopViewHeight: 30 m_UseBottomView: 1 m_BottomViewHeight: 20 ---- !u!114 &10 +--- !u!114 &7 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -247,12 +173,12 @@ MonoBehaviour: serializedVersion: 2 x: 0 y: 0 - width: 1920 + width: 2560 height: 30 m_MinSize: {x: 0, y: 0} m_MaxSize: {x: 0, y: 0} m_LastLoadedLayoutName: ---- !u!114 &11 +--- !u!114 &8 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -268,12 +194,12 @@ MonoBehaviour: m_Position: serializedVersion: 2 x: 0 - y: 1017 - width: 1920 + y: 1337 + width: 2560 height: 20 m_MinSize: {x: 0, y: 0} m_MaxSize: {x: 0, y: 0} ---- !u!114 &12 +--- !u!114 &9 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -286,19 +212,19 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Children: - - {fileID: 13} - - {fileID: 8} + - {fileID: 10} + - {fileID: 5} m_Position: serializedVersion: 2 x: 0 y: 0 - width: 1484 - height: 987 + width: 1979 + height: 1307 m_MinSize: {x: 200, y: 200} m_MaxSize: {x: 16192, y: 16192} vertical: 1 - controlID: 170 ---- !u!114 &13 + controlID: 100 +--- !u!114 &10 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -311,19 +237,19 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Children: - - {fileID: 7} - - {fileID: 14} + - {fileID: 4} + - {fileID: 11} m_Position: serializedVersion: 2 x: 0 y: 0 - width: 1484 - height: 588 + width: 1979 + height: 779 m_MinSize: {x: 200, y: 100} m_MaxSize: {x: 16192, y: 8096} vertical: 0 - controlID: 171 ---- !u!114 &14 + controlID: 77 +--- !u!114 &11 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -333,74 +259,24 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 1 m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} - m_Name: GameView + m_Name: SceneView m_EditorClassIdentifier: m_Children: [] m_Position: serializedVersion: 2 - x: 561 + x: 748 y: 0 - width: 923 - height: 588 - m_MinSize: {x: 200, y: 200} - m_MaxSize: {x: 4000, y: 4000} - m_ActualView: {fileID: 20} + width: 1231 + height: 779 + m_MinSize: {x: 202, y: 221} + m_MaxSize: {x: 4002, y: 4021} + m_ActualView: {fileID: 15} m_Panes: - - {fileID: 19} - - {fileID: 20} - m_Selected: 1 - m_LastSelected: 0 ---- !u!114 &15 -MonoBehaviour: - m_ObjectHideFlags: 52 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 12043, guid: 0000000000000000e000000000000000, type: 0} - m_Name: - m_EditorClassIdentifier: - m_MinSize: {x: 640, y: 580} - m_MaxSize: {x: 4000, y: 4000} - m_TitleContent: - m_Text: Build Settings - m_Image: {fileID: 0} - m_Tooltip: - m_Pos: - serializedVersion: 2 - x: 2783 - y: 205 - width: 640 - height: 640 - m_ViewDataDictionary: {fileID: 0} - m_OverlayCanvas: - m_LastAppliedPresetName: Default - m_SaveData: [] - m_TreeViewState: - scrollPos: {x: 0, y: 0} - m_SelectedIDs: - m_LastClickedID: 0 - m_ExpandedIDs: - m_RenameOverlay: - m_UserAcceptedRename: 0 - m_Name: - m_OriginalName: - m_EditFieldRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 0 - height: 0 - m_UserData: 0 - m_IsWaitingForDelay: 0 - m_IsRenaming: 0 - m_OriginalEventType: 11 - m_IsRenamingFilename: 0 - m_ClientGUIView: {fileID: 0} - m_SearchString: ---- !u!114 &16 + - {fileID: 15} + - {fileID: 16} + m_Selected: 0 + m_LastSelected: 1 +--- !u!114 &12 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -421,10 +297,10 @@ MonoBehaviour: m_Tooltip: m_Pos: serializedVersion: 2 - x: -1920 - y: 661 - width: 1483 - height: 378 + x: -32000 + y: -31191 + width: 1978 + height: 507 m_ViewDataDictionary: {fileID: 0} m_OverlayCanvas: m_LastAppliedPresetName: Default @@ -442,22 +318,22 @@ MonoBehaviour: m_SkipHidden: 0 m_SearchArea: 1 m_Folders: - - Assets/Scripts/UI/NetwMenue + - Assets/Scripts m_Globs: [] m_OriginalText: m_ViewMode: 1 m_StartGridSize: 64 m_LastFolders: - - Assets/Scripts/UI/NetwMenue + - Assets/Scripts m_LastFoldersGridSize: -1 - m_LastProjectPath: C:\Users\o-s-r\Documents\fau\Projekt_KI\OHNELEER\fresh\UFrameIT + m_LastProjectPath: D:\Users\marco\Dokuments\OneDrive\FAU\Informatik\UFrameIT\FrameIT\MaZiFAU m_LockTracker: m_IsLocked: 0 m_FolderTreeState: - scrollPos: {x: 0, y: 202} - m_SelectedIDs: d2ee0000 - m_LastClickedID: 61138 - m_ExpandedIDs: 00000000a67e0000aa7e0000ac7e0000ae7e0000b07e0000b27e0000b47e0000b67e0000b87e0000ba7e0000bc7e0000be7e0000c07e0000c27e0000c47e0000c67e0000c87e0000ca7e0000cc7e0000ce7e0000d07e0000d27e000000ca9a3bffffff7f + scrollPos: {x: 0, y: 0} + m_SelectedIDs: 0e730000 + m_LastClickedID: 29454 + m_ExpandedIDs: 00000000e872000000ca9a3b m_RenameOverlay: m_UserAcceptedRename: 0 m_Name: @@ -485,7 +361,7 @@ MonoBehaviour: scrollPos: {x: 0, y: 0} m_SelectedIDs: m_LastClickedID: 0 - m_ExpandedIDs: 00000000a67e0000a87e0000aa7e0000ac7e0000ae7e0000b07e0000b27e0000b47e0000b67e0000b87e0000ba7e0000bc7e0000be7e0000c07e0000c27e0000c47e0000c67e0000c87e0000ca7e0000cc7e0000ce7e0000d07e0000d27e0000 + m_ExpandedIDs: 00000000e8720000 m_RenameOverlay: m_UserAcceptedRename: 0 m_Name: @@ -510,8 +386,8 @@ MonoBehaviour: m_Icon: {fileID: 0} m_ResourceFile: m_ListAreaState: - m_SelectedInstanceIDs: 1c560d00 - m_LastClickedInstanceID: 874012 + m_SelectedInstanceIDs: + m_LastClickedInstanceID: 0 m_HadKeyboardFocusLastEvent: 1 m_ExpandedInstanceIDs: c6230000 m_RenameOverlay: @@ -529,7 +405,7 @@ MonoBehaviour: m_IsRenaming: 0 m_OriginalEventType: 11 m_IsRenamingFilename: 1 - m_ClientGUIView: {fileID: 0} + m_ClientGUIView: {fileID: 5} m_CreateAssetUtility: m_EndAction: {fileID: 0} m_InstanceID: 0 @@ -541,7 +417,7 @@ MonoBehaviour: m_GridSize: 64 m_SkipHiddenPackages: 0 m_DirectoriesAreaWidth: 207 ---- !u!114 &17 +--- !u!114 &13 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -562,10 +438,10 @@ MonoBehaviour: m_Tooltip: m_Pos: serializedVersion: 2 - x: -436 + x: 1979 y: 73 - width: 435 - height: 966 + width: 580 + height: 1286 m_ViewDataDictionary: {fileID: 0} m_OverlayCanvas: m_LastAppliedPresetName: Default @@ -583,7 +459,7 @@ MonoBehaviour: m_LockTracker: m_IsLocked: 0 m_PreviewWindow: {fileID: 0} ---- !u!114 &18 +--- !u!114 &14 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -604,10 +480,10 @@ MonoBehaviour: m_Tooltip: m_Pos: serializedVersion: 2 - x: -1920 + x: 0 y: 73 - width: 560 - height: 567 + width: 747 + height: 758 m_ViewDataDictionary: {fileID: 0} m_OverlayCanvas: m_LastAppliedPresetName: Default @@ -615,9 +491,9 @@ MonoBehaviour: m_SceneHierarchy: m_TreeViewState: scrollPos: {x: 0, y: 0} - m_SelectedIDs: + m_SelectedIDs: 68160000 m_LastClickedID: 0 - m_ExpandedIDs: 9cfcedffdefcedffde27eefffc6deeff066eeeff06a0eefffaadeeffe4bef6ffdc4ef7ff0e4ff7ff5a4ff7ff664ff7ff2e55f7ff3a55f7ff4455f7ff4e55f7ff5655f7ff6055f7ff8c55f7ff9655f7ff1c56f7ff4e56f7ff20dbfbff62dbfbff6006fcffd64bfcffe04bfcffd07dfcffbe8bfcfface0feffcae1feffcee1feffd4e1feff32e3fefffcf3feff0e14ffff6825ffff326bfffff8fafffffafaffff80630000badd0c00 + m_ExpandedIDs: 0afbffff m_RenameOverlay: m_UserAcceptedRename: 0 m_Name: @@ -633,7 +509,7 @@ MonoBehaviour: m_IsRenaming: 0 m_OriginalEventType: 11 m_IsRenamingFilename: 0 - m_ClientGUIView: {fileID: 7} + m_ClientGUIView: {fileID: 4} m_SearchString: m_ExpandedScenes: [] m_CurrenRootInstanceID: 0 @@ -641,7 +517,7 @@ MonoBehaviour: m_IsLocked: 0 m_CurrentSortingName: TransformSorting m_WindowGUID: 4c969a2b90040154d917609493e03593 ---- !u!114 &19 +--- !u!114 &15 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -662,10 +538,10 @@ MonoBehaviour: m_Tooltip: m_Pos: serializedVersion: 2 - x: -1326 - y: 98 - width: 858 - height: 441 + x: 748 + y: 73 + width: 1229 + height: 758 m_ViewDataDictionary: {fileID: 0} m_OverlayCanvas: m_LastAppliedPresetName: Default @@ -889,9 +765,9 @@ MonoBehaviour: m_PlayAudio: 0 m_AudioPlay: 0 m_Position: - m_Target: {x: 0, y: 0, z: 0} + m_Target: {x: 719.735, y: 501.2356, z: 37.53131} speed: 2 - m_Value: {x: 0, y: 0, z: 0} + m_Value: {x: 719.735, y: 501.2356, z: 37.53131} m_RenderMode: 0 m_CameraMode: drawMode: 0 @@ -938,13 +814,13 @@ MonoBehaviour: m_GridAxis: 1 m_gridOpacity: 0.5 m_Rotation: - m_Target: {x: -0.08717229, y: 0.89959055, z: -0.21045254, w: -0.3726226} + m_Target: {x: 0.0662581, y: -0.0089846505, z: 0.0005970661, w: 0.997763} speed: 2 - m_Value: {x: -0.08717229, y: 0.89959055, z: -0.21045254, w: -0.3726226} + m_Value: {x: 0.06625803, y: -0.008984641, z: 0.00059706543, w: 0.9977619} m_Size: - m_Target: 14.562745 + m_Target: 546.43884 speed: 2 - m_Value: 14.562745 + m_Value: 546.43884 m_Ortho: m_Target: 0 speed: 2 @@ -969,7 +845,7 @@ MonoBehaviour: m_SceneVisActive: 1 m_LastLockedObject: {fileID: 0} m_ViewIsLockedToObject: 0 ---- !u!114 &20 +--- !u!114 &16 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -990,10 +866,10 @@ MonoBehaviour: m_Tooltip: m_Pos: serializedVersion: 2 - x: -1359 + x: 748 y: 73 - width: 921 - height: 567 + width: 1229 + height: 758 m_ViewDataDictionary: {fileID: 0} m_OverlayCanvas: m_LastAppliedPresetName: Default @@ -1028,7 +904,7 @@ MonoBehaviour: m_VAllowExceedBaseRangeMin: 1 m_VAllowExceedBaseRangeMax: 1 m_ScaleWithWindow: 0 - m_HSlider: 1 + m_HSlider: 0 m_VSlider: 0 m_IgnoreScrollWheelUntilClicked: 0 m_EnableMouseInput: 1 @@ -1040,29 +916,29 @@ MonoBehaviour: serializedVersion: 2 x: 0 y: 21 - width: 921 - height: 546 - m_Scale: {x: 0.47968754, y: 0.47968754} - m_Translation: {x: 460.5, y: 273} + width: 1229 + height: 737 + m_Scale: {x: 0.6401042, y: 0.6401042} + m_Translation: {x: 614.5, y: 368.5} m_MarginLeft: 0 m_MarginRight: 0 m_MarginTop: 0 m_MarginBottom: 0 m_LastShownAreaInsideMargins: serializedVersion: 2 - x: -959.99994 - y: -569.1205 - width: 1919.9999 - height: 1138.241 + x: -960 + y: -575.68756 + width: 1920 + height: 1151.3751 m_MinimalGUI: 1 - m_defaultScale: 0.4796875 - m_LastWindowPixelSize: {x: 921, y: 567} + m_defaultScale: 0.6401042 + m_LastWindowPixelSize: {x: 1229, y: 758} m_ClearInEditMode: 1 m_NoCameraWarning: 1 m_LowResolutionForAspectRatios: 01000000000000000000 m_XRRenderMode: 0 m_RenderTexture: {fileID: 0} ---- !u!114 &21 +--- !u!114 &17 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -1083,10 +959,10 @@ MonoBehaviour: m_Tooltip: m_Pos: serializedVersion: 2 - x: -1920 - y: 661 - width: 1483 - height: 378 + x: 0 + y: 852 + width: 1978 + height: 507 m_ViewDataDictionary: {fileID: 0} m_OverlayCanvas: m_LastAppliedPresetName: Default