From cfdc0ba3f8f489d0431165535d5ae610e22d50e7 Mon Sep 17 00:00:00 2001 From: MaZiFAU <63099053+MaZiFAU@users.noreply.github.com> Date: Sat, 10 Jun 2023 14:24:19 +0200 Subject: [PATCH] OMDoc to C# dynamic function builder 0.1 --- .../Prefabs/UI/Ingame/FrameITUI_mobile.prefab | 1 + .../InteractionEngine/CommunicationEvents.cs | 1 + .../InteractionEngine/TBD/RigidbodyFact.cs | 41 +++ .../TBD/RigidbodyFact.cs.meta | 11 + Assets/Scripts/InventoryStuff/Scroll.cs | 47 ++- Assets/Scripts/JSONManager.cs | 328 +++++++++++++++--- Assets/Scripts/UI/HideUI_mobile.cs | 5 +- ProjectSettings/TimelineSettings.asset | 1 + UserSettings/EditorUserSettings.asset | 12 +- 9 files changed, 369 insertions(+), 78 deletions(-) create mode 100644 Assets/Scripts/InteractionEngine/TBD/RigidbodyFact.cs create mode 100644 Assets/Scripts/InteractionEngine/TBD/RigidbodyFact.cs.meta diff --git a/Assets/Resources/Prefabs/UI/Ingame/FrameITUI_mobile.prefab b/Assets/Resources/Prefabs/UI/Ingame/FrameITUI_mobile.prefab index f854ea39..dd7e4766 100644 --- a/Assets/Resources/Prefabs/UI/Ingame/FrameITUI_mobile.prefab +++ b/Assets/Resources/Prefabs/UI/Ingame/FrameITUI_mobile.prefab @@ -1894,6 +1894,7 @@ MonoBehaviour: modreset: mod+reset modsave: mod+save modload: mod+load + modfire: Fire1 toolMode_keyBind: ToolmMenue MathMode_keyBind: MathMenue cancel_keyBind: Cancel diff --git a/Assets/Scripts/InteractionEngine/CommunicationEvents.cs b/Assets/Scripts/InteractionEngine/CommunicationEvents.cs index 8716fbf4..bea5db7b 100644 --- a/Assets/Scripts/InteractionEngine/CommunicationEvents.cs +++ b/Assets/Scripts/InteractionEngine/CommunicationEvents.cs @@ -8,6 +8,7 @@ public static class CommunicationEvents { public static UnityEvent<RaycastHit[]> TriggerEvent = new(); + public static UnityEvent<RaycastHit[]> TriggerModFireEvent = new(); //TODO check if this needs further adjustments // public class HitEvent : UnityEvent<RaycastHit[]> { } diff --git a/Assets/Scripts/InteractionEngine/TBD/RigidbodyFact.cs b/Assets/Scripts/InteractionEngine/TBD/RigidbodyFact.cs new file mode 100644 index 00000000..45126aeb --- /dev/null +++ b/Assets/Scripts/InteractionEngine/TBD/RigidbodyFact.cs @@ -0,0 +1,41 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +[RequireComponent(typeof(Rigidbody))] +public class RigidbodyFact : MonoBehaviour +{ + Rigidbody ribot; + private bool isOriginal = true; + + void Awake() + { + ribot = gameObject.GetComponent<Rigidbody>(); + } + + private void CloneAndSend(RaycastHit[] _) + { + if (!isOriginal) return; + + GameObject clone = GameObject.Instantiate(gameObject, transform.parent); + var clRbF = clone.GetComponent<RigidbodyFact>(); + clRbF.isOriginal = false; + clRbF.RandomMovement(null); + } + + private void RandomMovement(RaycastHit[] _) + { + gameObject.GetComponent<SphereCollider>().enabled = true; + ribot.isKinematic = false; + ribot.AddForce( + Random.rotationUniform * Vector3.up, + ForceMode.VelocityChange + ); + } + + void OnEnable() + => CommunicationEvents.TriggerModFireEvent.AddListener(CloneAndSend); + + void OnDisable() + => CommunicationEvents.TriggerModFireEvent.RemoveListener(CloneAndSend); +} diff --git a/Assets/Scripts/InteractionEngine/TBD/RigidbodyFact.cs.meta b/Assets/Scripts/InteractionEngine/TBD/RigidbodyFact.cs.meta new file mode 100644 index 00000000..d52dc526 --- /dev/null +++ b/Assets/Scripts/InteractionEngine/TBD/RigidbodyFact.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 04a4ac0a27312d04787dc2494b7aa690 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/InventoryStuff/Scroll.cs b/Assets/Scripts/InventoryStuff/Scroll.cs index 4b351ebd..adf8ce77 100644 --- a/Assets/Scripts/InventoryStuff/Scroll.cs +++ b/Assets/Scripts/InventoryStuff/Scroll.cs @@ -65,24 +65,23 @@ public class ScrollSymbolFact : ScrollFact public override String getType() { - if (this.tp is OMS oMS) - return oMS.uri; - else if (this.tp is OMA oMA) - return ((OMS)((OMA) oMA.arguments[0]).applicant).uri; - else - return null; + return tp switch + { + OMS oMS => oMS.uri, + OMA oMA => ((oMA.arguments[0] as OMA).applicant as OMS).uri, + _ => null + }; } public override String getApplicant() { //Debug.Log(" Check " + this.tp is OMS + " and " + this.tp is OMA + " and " + this.tp is OMSTR + " or " + this.tp is OMF); // return ((OMS)((OMA)((OMA)this.tp).arguments[0]).arguments[0]).uri; - if (this.df is OMA && ((OMA)this.df).applicant is OMS) - return ((OMS)((OMA)this.df).applicant).uri; - - - return null ;// ((OMS)((OMA)((OMA)this.df).arguments[0]).applicant).uri; - + return df switch + { + OMA oMA when oMA.applicant is OMS oMS => oMS.uri, + _ => null // ((OMS)((OMA)((OMA)this.df).arguments[0]).applicant).uri; + }; } } @@ -98,17 +97,20 @@ public class ScrollValueFact : ScrollFact public override String getType() { - if (this.lhs is OMA & (((OMA)this.lhs).applicant is OMS)) - return ((OMS)((OMA)this.lhs).applicant).uri; - else - return null; + return lhs switch + { + OMA oMA when oMA.applicant is OMS oMS => oMS.uri, + _ => null + }; } public override String getApplicant() { // TODO Test this - if (this.lhs is OMA & (((OMA)this.lhs).applicant is OMS)) - return ((OMS)((OMA)this.lhs).applicant).uri; - return null; + return lhs switch + { + OMA oMA when oMA.applicant is OMS oMS => oMS.uri, + _ => null + }; } } @@ -142,9 +144,4 @@ public class ScrollApplicationCheckingError public MMTTerm fact; } -} - - - - - +} \ No newline at end of file diff --git a/Assets/Scripts/JSONManager.cs b/Assets/Scripts/JSONManager.cs index 1d9b3f3c..3565766f 100644 --- a/Assets/Scripts/JSONManager.cs +++ b/Assets/Scripts/JSONManager.cs @@ -1,58 +1,249 @@ using System.Collections.Generic; using Newtonsoft.Json; using JsonSubTypes; - - - +using System.Linq.Expressions; +using System.Reflection; +using UnityEngine.UIElements; +using System; +using static UnityEngine.Windows.Speech.PhraseRecognitionSystem; +using System.Linq; public static class JSONManager { - public static class MMTURIs { - public const string Point = "http://mathhub.info/MitM/core/geometry?3DGeometry?point"; - public const string Tuple = "http://gl.mathhub.info/MMT/LFX/Sigma?Symbols?Tuple"; - public const string LineType = "http://mathhub.info/MitM/core/geometry?Geometry/Common?line_type"; - public const string LineOf = "http://mathhub.info/MitM/core/geometry?Geometry/Common?lineOf"; - - public const string OnLine = "http://mathhub.info/MitM/core/geometry?Geometry/Common?onLine"; - public const string Ded = "http://mathhub.info/MitM/Foundation?Logic?ded"; - public const string Eq = "http://mathhub.info/MitM/Foundation?Logic?eq"; - public const string Metric = "http://mathhub.info/MitM/core/geometry?Geometry/Common?metric"; - public const string Angle = "http://mathhub.info/MitM/core/geometry?Geometry/Common?angle_between"; - public const string Sketch = "http://mathhub.info/MitM/Foundation?InformalProofs?proofsketch"; - public const string RealLit = "http://mathhub.info/MitM/Foundation?RealLiterals?real_lit"; - - public const string ParallelLine = "http://mathhub.info/MitM/core/geometry?Geometry/Common?parallelLine"; - // public string RectangleFact = "http://mathhub.info/FrameIT/frameworld?FrameITRectangles?rectangleType"; - // public string RectangleFactmk = "http://mathhub.info/FrameIT/frameworld?FrameITRectangles?mkRectangle"; - - public const string CircleType3d = "http://mathhub.info/FrameIT/frameworld?FrameITCircle?circleType3D"; - public const string MkCircle3d = "http://mathhub.info/FrameIT/frameworld?FrameITCircle?circle3D"; - public const string TriangleMiddlePoint = "http://mathhub.info/FrameIT/frameworld?FrameITTriangles?triangleMidPointWrapper"; - public const string RadiusCircleMetric = "http://mathhub.info/FrameIT/frameworld?FrameITCircle?circleRadius"; - - public const string AreaCircle = "http://mathhub.info/FrameIT/frameworld?FrameITCircle?areaCircle"; - public const string VolumeCone = "http://mathhub.info/FrameIT/frameworld?FrameITCone?volumeCone"; - public const string ConeOfCircleApex = "http://mathhub.info/FrameIT/frameworld?FrameITCone?circleConeOf"; - - public const string ParametrizedPlane = "http://mathhub.info/MitM/core/geometry?Planes?ParametrizedPlane"; - public const string pointNormalPlane = "http://mathhub.info/MitM/core/geometry?Planes?pointNormalPlane"; - public const string OnCircle = "http://mathhub.info/FrameIT/frameworld?FrameITCircle?pointOnCircle"; - public const string AnglePlaneLine = "http://mathhub.info/FrameIT/frameworld?FrameITCircle?angleCircleLine"; - public const string OrthoCircleLine = "http://mathhub.info/FrameIT/frameworld?FrameITCircle?orthogonalCircleLine"; - - public const string TruncatedVolumeCone = "http://mathhub.info/FrameIT/frameworld?FrameITCone?truncatedConeVolume"; - public const string CylinderVolume = "http://mathhub.info/FrameIT/frameworld?FrameITCylinder?cylinderVolume"; - public const string EqualityCircles = "http://mathhub.info/FrameIT/frameworld?FrameITCircle?equalityCircles"; - public const string UnEqualityCircles = "http://mathhub.info/FrameIT/frameworld?FrameITCircle?unequalityCircles"; - - public const string ParallelCircles = "http://mathhub.info/FrameIT/frameworld?FrameITCone?parallelCircles"; - public const string RightAngle = "http://mathhub.info/FrameIT/frameworld?FrameITBasics?rightAngle"; - - public const string TestType = "http://mathhub.info/FrameIT/frameworld?FrameITCircle?xcircleType3D"; + public static readonly string Point = "http://mathhub.info/MitM/core/geometry?3DGeometry?point"; + public static readonly string Tuple = "http://gl.mathhub.info/MMT/LFX/Sigma?Symbols?Tuple"; + public static readonly string LineType = "http://mathhub.info/MitM/core/geometry?Geometry/Common?line_type"; + public static readonly string LineOf = "http://mathhub.info/MitM/core/geometry?Geometry/Common?lineOf"; + + public static readonly string OnLine = "http://mathhub.info/MitM/core/geometry?Geometry/Common?onLine"; + public static readonly string Ded = "http://mathhub.info/MitM/Foundation?Logic?ded"; + public static readonly string Eq = "http://mathhub.info/MitM/Foundation?Logic?eq"; + public static readonly string Metric = "http://mathhub.info/MitM/core/geometry?Geometry/Common?metric"; + public static readonly string Angle = "http://mathhub.info/MitM/core/geometry?Geometry/Common?angle_between"; + public static readonly string Sketch = "http://mathhub.info/MitM/Foundation?InformalProofs?proofsketch"; + public static readonly string RealLit = "http://mathhub.info/MitM/Foundation?RealLiterals?real_lit"; + + public static readonly string ParallelLine = "http://mathhub.info/MitM/core/geometry?Geometry/Common?parallelLine"; + //public static readonly string RectangleFact = "http://mathhub.info/FrameIT/frameworld?FrameITRectangles?rectangleType"; + //public static readonly string RectangleFactmk = "http://mathhub.info/FrameIT/frameworld?FrameITRectangles?mkRectangle"; + + public static readonly string CircleType3d = "http://mathhub.info/FrameIT/frameworld?FrameITCircle?circleType3D"; + public static readonly string MkCircle3d = "http://mathhub.info/FrameIT/frameworld?FrameITCircle?circle3D"; + public static readonly string TriangleMiddlePoint = "http://mathhub.info/FrameIT/frameworld?FrameITTriangles?triangleMidPointWrapper"; + public static readonly string RadiusCircleMetric = "http://mathhub.info/FrameIT/frameworld?FrameITCircle?circleRadius"; + + public static readonly string AreaCircle = "http://mathhub.info/FrameIT/frameworld?FrameITCircle?areaCircle"; + public static readonly string VolumeCone = "http://mathhub.info/FrameIT/frameworld?FrameITCone?volumeCone"; + public static readonly string ConeOfCircleApex = "http://mathhub.info/FrameIT/frameworld?FrameITCone?circleConeOf"; + + public static readonly string ParametrizedPlane = "http://mathhub.info/MitM/core/geometry?Planes?ParametrizedPlane"; + public static readonly string pointNormalPlane = "http://mathhub.info/MitM/core/geometry?Planes?pointNormalPlane"; + public static readonly string OnCircle = "http://mathhub.info/FrameIT/frameworld?FrameITCircle?pointOnCircle"; + public static readonly string AnglePlaneLine = "http://mathhub.info/FrameIT/frameworld?FrameITCircle?angleCircleLine"; + public static readonly string OrthoCircleLine = "http://mathhub.info/FrameIT/frameworld?FrameITCircle?orthogonalCircleLine"; + + public static readonly string TruncatedVolumeCone = "http://mathhub.info/FrameIT/frameworld?FrameITCone?truncatedConeVolume"; + public static readonly string CylinderVolume = "http://mathhub.info/FrameIT/frameworld?FrameITCylinder?cylinderVolume"; + public static readonly string EqualityCircles = "http://mathhub.info/FrameIT/frameworld?FrameITCircle?equalityCircles"; + public static readonly string UnEqualityCircles = "http://mathhub.info/FrameIT/frameworld?FrameITCircle?unequalityCircles"; + + public static readonly string ParallelCircles = "http://mathhub.info/FrameIT/frameworld?FrameITCone?parallelCircles"; + public static readonly string RightAngle = "http://mathhub.info/FrameIT/frameworld?FrameITBasics?rightAngle"; + + public static readonly string TestType = "http://mathhub.info/FrameIT/frameworld?FrameITCircle?xcircleType3D"; + } + + + public static class MMTtoLambdaExpression<T> + { + private static LambdaExpression @default = Expression.Lambda(Expression.Default(typeof(T)), null); + // TODO: Populate Dictionaries + #region ExpressionDictionaries + + private static Dictionary<string, Func<LambdaExpression>> MMTtoLambdaMaker = new() + { + { "sin", + MakeSin}, + { "cos", + MakeCos}, + }; + + private static Dictionary<string, ExpressionType> MMTtoBinaryExpressionType = new() + { + { "Add", + ExpressionType.Add}, + { "AddAssign", + ExpressionType.AddAssign}, + { "AddAssignChecked", + ExpressionType.AddAssignChecked}, + { "AddChecked", + ExpressionType.AddChecked}, + { "And", + ExpressionType.And}, + { "AndAlso", + ExpressionType.AndAlso}, + { "AndAssign", + ExpressionType.AndAssign}, + { "Assign", + ExpressionType.Assign}, + { "Divide", + ExpressionType.Divide}, + { "DivideAssign", + ExpressionType.DivideAssign}, + { "Equal", + ExpressionType.Equal}, + { "ExclusiveOr", + ExpressionType.ExclusiveOr}, + { "ExclusiveOrAssign", + ExpressionType.ExclusiveOrAssign}, + { "GreaterThan", + ExpressionType.GreaterThan}, + { "GreaterThanOrEqual", + ExpressionType.GreaterThanOrEqual}, + { "LeftShift", + ExpressionType.LeftShift}, + { "LeftShiftAssign", + ExpressionType.LeftShiftAssign}, + { "LessThan", + ExpressionType.LessThan}, + { "LessThanOrEqual", + ExpressionType.LessThanOrEqual}, + { "Modulo", + ExpressionType.Modulo}, + { "ModuloAssign", + ExpressionType.ModuloAssign}, + { "Multiply", + ExpressionType.Multiply}, + { "MultiplyAssign", + ExpressionType.MultiplyAssign}, + { "MultiplyAssignChecked", + ExpressionType.MultiplyAssignChecked}, + { "MultiplyChecked", + ExpressionType.MultiplyChecked}, + { "NotEqual", + ExpressionType.NotEqual}, + { "Or", + ExpressionType.Or}, + { "OrAssign", + ExpressionType.OrAssign}, + { "OrElse", + ExpressionType.OrElse}, + { "Power", + ExpressionType.Power}, + { "PowerAssign", + ExpressionType.PowerAssign}, + { "RightShift", + ExpressionType.RightShift}, + { "RightShiftAssign", + ExpressionType.RightShiftAssign}, + { "Subtract", + ExpressionType.Subtract}, + { "SubtractAssign", + ExpressionType.SubtractAssign}, + { "SubtractAssignChecked", + ExpressionType.SubtractAssignChecked}, + { "SubtractChecked", + ExpressionType.SubtractChecked}, + }; + + private static Dictionary<string, ExpressionType> MMTtoUnaryExpressionType = new() + { + //{ "Constant", // Not Unary + // ExpressionType.Constant}, + { "Decrement", + ExpressionType.Decrement}, + { "Increment", + ExpressionType.Increment}, + { "Negate", + ExpressionType.Negate}, + { "NegateChecked", + ExpressionType.NegateChecked}, + { "Not", + ExpressionType.Not}, + { "OnesComplement", + ExpressionType.OnesComplement}, + { "PostDecrementAssign", + ExpressionType.PostDecrementAssign}, + { "PostIncrementAssign", + ExpressionType.PostIncrementAssign}, + { "PreDecrementAssign", + ExpressionType.PreDecrementAssign}, + { "PreIncrementAssign", + ExpressionType.PreIncrementAssign}, + { "UnaryPlus", + ExpressionType.UnaryPlus}, + }; + + #endregion ExpressionDictionaries + + public static LambdaExpression MakeLambdaExpression(string URI) + { + if (MMTtoUnaryExpressionType.TryGetValue(URI, out var unnary_type)) + { + ParameterExpression[] args = new ParameterExpression[] { + Expression.Parameter(typeof(T)) + }; + return Expression.Lambda(Expression.MakeUnary(unnary_type, args[0], typeof(T)), args); + } + else if (MMTtoBinaryExpressionType.TryGetValue(URI, out var binary_type)) + { + ParameterExpression[] args = new ParameterExpression[] { + Expression.Parameter(typeof(T)), + Expression.Parameter(typeof(T)) + }; + return Expression.Lambda(Expression.MakeBinary(binary_type, args[0], args[1]), args); + } + else if (MMTtoLambdaMaker.TryGetValue(URI, out var lamda_maker)) + { + return lamda_maker(); + } + + throw new NotImplementedException("Could not map URI: \"" + URI + "\""); + } + + private static Expression<Func<T, T>> ParseFuncTUUT<U>(Func<U,U> func) + => (T x) => + (T) Convert.ChangeType( + func( + (U) Convert.ChangeType( + x, + typeof(U) + ) + ), + typeof(T) + ); + + private static LambdaExpression ExpresionFuncToLambda(Expression func, uint nTargs) + { + ParameterExpression[] args = new ParameterExpression[nTargs]; + for (int i = 0; i < nTargs; i++) + args[i] = Expression.Parameter(typeof(T)); + + return Expression.Lambda(Expression.Invoke(func, args), args); + } + //TODO? more general/generics + private static LambdaExpression ParseFuncTUUTToLambda<U>(Func<U, U> func) + => ExpresionFuncToLambda(ParseFuncTUUT<U>(func), 1); + + private static LambdaExpression MakeSin() + => default(T) switch // TODO? cleaner switch + { + float => ParseFuncTUUTToLambda<float>(MathF.Sin), + double => ParseFuncTUUTToLambda<double>(Math.Sin), + _ => throw new NotImplementedException("Sinus for " + typeof(T)) + }; + + private static LambdaExpression MakeCos() + => default(T) switch + { + float => ParseFuncTUUTToLambda<float>(MathF.Cos), + double => ParseFuncTUUTToLambda<double>(Math.Cos), + _ => throw new NotImplementedException("Sinus for " + typeof(T)) + }; } @@ -70,6 +261,9 @@ public URI(string uri) public class MMTTerm { string kind; + + virtual public LambdaExpression GetLambdaExpression() + => Expression.Lambda(Expression.Empty(), null); } public class OMA : MMTTerm @@ -77,13 +271,44 @@ public class OMA : MMTTerm public MMTTerm applicant; public List<MMTTerm> arguments; public string kind = "OMA"; + public OMA(MMTTerm applicant, List<MMTTerm> arguments) { this.applicant = applicant; this.arguments = arguments; } - + override public LambdaExpression GetLambdaExpression() + { + // local variable for each arguments + ParameterExpression[] line_variable = new ParameterExpression[arguments.Count]; + + // expression of computing arguments and assigning to corresponding variable + Expression[] line_expression = new Expression[arguments.Count + 1]; + + // unbound parameters a.k.a. all params of arguments + List<ParameterExpression> father_param = new(); + + for (int i = 0; i < arguments.Count; i++) + { + LambdaExpression + child_lambda = arguments[i].GetLambdaExpression(); + List<ParameterExpression> + child_params = child_lambda.Parameters.ToList(); + + line_variable[i] = Expression.Variable(child_lambda.ReturnType); + line_expression[i] = Expression.Assign(line_variable[i], Expression.Invoke(child_lambda, child_params)); + + foreach (ParameterExpression arg in child_params) + father_param.Add(arg); + } + + // invoke applicant with computed arguments + line_expression[arguments.Count] = Expression.Invoke(applicant.GetLambdaExpression(), line_variable); + + // compile all this into LambdaExpression + return Expression.Lambda(Expression.Block(line_variable, line_expression), father_param); + } } public class OMS : MMTTerm @@ -95,6 +320,9 @@ public OMS(string uri) { this.uri = uri; } + + override public LambdaExpression GetLambdaExpression() + => MMTtoLambdaExpression<float>.MakeLambdaExpression(uri); } public class OMSTR : MMTTerm @@ -107,6 +335,9 @@ public OMSTR(string s) { this.s = s; } + + override public LambdaExpression GetLambdaExpression() + => Expression.Lambda(Expression.Constant(s, typeof(string)), null); } public class OMF : MMTTerm @@ -119,11 +350,15 @@ public OMF(float f) { this.f = f; } + + override public LambdaExpression GetLambdaExpression() + => Expression.Lambda(Expression.Constant(f, typeof(float)), null); } public class MMTDeclaration { public string label; + public static MMTDeclaration FromJson(string json) { MMTDeclaration mmtDecl = JsonConvert.DeserializeObject<MMTDeclaration>(json); @@ -132,6 +367,7 @@ public static MMTDeclaration FromJson(string json) return mmtDecl; } + public static string ToJson(MMTDeclaration mmtDecl) { if (mmtDecl.label == null) diff --git a/Assets/Scripts/UI/HideUI_mobile.cs b/Assets/Scripts/UI/HideUI_mobile.cs index 80217448..c48c2dfd 100644 --- a/Assets/Scripts/UI/HideUI_mobile.cs +++ b/Assets/Scripts/UI/HideUI_mobile.cs @@ -19,7 +19,8 @@ public string modredo, modreset, modsave, - modload; + modload, + modfire; public string toolMode_keyBind; public string MathMode_keyBind; @@ -620,6 +621,8 @@ void Update2() StageStatic.stage.factState.softreset(); else if (Input.GetButtonDown(modsave)) StageStatic.stage.push_record(); + else if (Input.GetButtonDown(modfire)) + TriggerModFireEvent.Invoke(null); else if (Input.GetButtonDown(modload)) { StageStatic.stage.factState.hardreset(); diff --git a/ProjectSettings/TimelineSettings.asset b/ProjectSettings/TimelineSettings.asset index b4fbdb09..cfaebd7a 100644 --- a/ProjectSettings/TimelineSettings.asset +++ b/ProjectSettings/TimelineSettings.asset @@ -13,3 +13,4 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: assetDefaultFramerate: 60 + m_DefaultFrameRate: 60 diff --git a/UserSettings/EditorUserSettings.asset b/UserSettings/EditorUserSettings.asset index 2e49119c..cef1bf6e 100644 --- a/UserSettings/EditorUserSettings.asset +++ b/UserSettings/EditorUserSettings.asset @@ -6,22 +6,22 @@ EditorUserSettings: serializedVersion: 4 m_ConfigSettings: RecentlyUsedSceneGuid-0: - value: 5b5200520604510a5b5b587642270744124e4e7a7e7f2764742f1b61b0e6613a + value: 0702005254070d5d5d5a5d7145210f444116487c282d7f357e7a1e66b6b0313a flags: 0 RecentlyUsedSceneGuid-1: - value: 0702005254070d5d5d5a5d7145210f444116487c282d7f357e7a1e66b6b0313a + value: 5b01035553515d0e0b0f5b7415725d444e4f1d2b2e782332757f4863e4e6673c flags: 0 RecentlyUsedSceneGuid-2: - value: 5b01035553515d0e0b0f5b7415725d444e4f1d2b2e782332757f4863e4e6673c + value: 0502505152005e020c0d0e2446275e44144f19287f707e362c7c4b60b2b9353c flags: 0 RecentlyUsedSceneGuid-3: - value: 0709560454055c0d0c5e5c2444740b4413154a72792d22627c714963e0b6373d + value: 5b5200520604510a5b5b587642270744124e4e7a7e7f2764742f1b61b0e6613a flags: 0 RecentlyUsedSceneGuid-4: - value: 0502505152005e020c0d0e2446275e44144f19287f707e362c7c4b60b2b9353c + value: 57505505560608585a56557116730644404e4d7b7c7b7562787e4f66e4b1313e flags: 0 RecentlyUsedSceneGuid-5: - value: 57505505560608585a56557116730644404e4d7b7c7b7562787e4f66e4b1313e + value: 0709560454055c0d0c5e5c2444740b4413154a72792d22627c714963e0b6373d flags: 0 RecentlyUsedScenePath-0: value: 22424703114646680e0b0227036c681f041b1c39631c3435281e1221eee47a2decee22f0 -- GitLab