diff --git a/.idea/.idea.Inter-Face-Off/.idea/.gitignore b/.idea/.idea.Inter-Face-Off/.idea/.gitignore new file mode 100644 index 0000000..cd3d969 --- /dev/null +++ b/.idea/.idea.Inter-Face-Off/.idea/.gitignore @@ -0,0 +1,15 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Rider ignored files +/.idea.Inter-Face-Off.iml +/projectSettingsUpdater.xml +/modules.xml +/contentModel.xml +# Ignored default folder with query files +/queries/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/.idea.Inter-Face-Off/.idea/encodings.xml b/.idea/.idea.Inter-Face-Off/.idea/encodings.xml new file mode 100644 index 0000000..df87cf9 --- /dev/null +++ b/.idea/.idea.Inter-Face-Off/.idea/encodings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/.idea.Inter-Face-Off/.idea/indexLayout.xml b/.idea/.idea.Inter-Face-Off/.idea/indexLayout.xml new file mode 100644 index 0000000..7b08163 --- /dev/null +++ b/.idea/.idea.Inter-Face-Off/.idea/indexLayout.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/.idea.Inter-Face-Off/.idea/vcs.xml b/.idea/.idea.Inter-Face-Off/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/.idea.Inter-Face-Off/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index 89d7244..3d0c0af 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -38,7 +38,6 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.18028305, g: 0.22571313, b: 0.3069213, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: @@ -104,7 +103,7 @@ NavMeshSettings: serializedVersion: 2 m_ObjectHideFlags: 0 m_BuildSettings: - serializedVersion: 2 + serializedVersion: 3 agentTypeID: 0 agentRadius: 0.5 agentHeight: 2 @@ -117,7 +116,7 @@ NavMeshSettings: cellSize: 0.16666667 manualTileSize: 0 tileSize: 256 - accuratePlacement: 0 + buildHeightMesh: 0 maxJobWorkers: 0 preserveTilesOutsideBounds: 0 debug: @@ -160,13 +159,21 @@ Camera: m_Enabled: 1 serializedVersion: 2 m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_BackGroundColor: {r: 0, g: 0, b: 0, a: 1} m_projectionMatrixMode: 1 m_GateFitMode: 2 m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 m_SensorSize: {x: 36, y: 24} m_LensShift: {x: 0, y: 0} - m_FocalLength: 50 m_NormalizedViewPortRect: serializedVersion: 2 x: 0 @@ -200,13 +207,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 330585543} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 1, z: -10} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &330585547 MonoBehaviour: @@ -238,9 +245,20 @@ MonoBehaviour: m_Dithering: 0 m_ClearDepth: 1 m_AllowXRRendering: 1 + m_AllowHDROutput: 1 + m_UseScreenCoordOverride: 0 + m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} + m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} m_RequiresDepthTexture: 0 m_RequiresColorTexture: 0 m_Version: 2 + m_TaaSettings: + m_Quality: 3 + m_FrameInfluence: 0.1 + m_JitterScale: 1 + m_MipBias: 0 + m_VarianceClampScale: 0.9 + m_ContrastAdaptiveSharpening: 0 --- !u!1 &410087039 GameObject: m_ObjectHideFlags: 0 @@ -328,13 +346,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 410087039} + serializedVersion: 2 m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} m_LocalPosition: {x: 0, y: 3, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} --- !u!114 &410087042 MonoBehaviour: @@ -348,14 +366,17 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 1 + m_Version: 3 m_UsePipelineSettings: 1 m_AdditionalLightsShadowResolutionTier: 2 m_LightLayerMask: 1 + m_RenderingLayers: 1 m_CustomShadowLayers: 0 m_ShadowLayerMask: 1 + m_ShadowRenderingLayers: 1 m_LightCookieSize: {x: 1, y: 1} m_LightCookieOffset: {x: 0, y: 0} + m_SoftShadowQuality: 1 --- !u!1 &832575517 GameObject: m_ObjectHideFlags: 0 @@ -397,11 +418,234 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 832575517} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1539476651 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1539476655} + - component: {fileID: 1539476654} + - component: {fileID: 1539476653} + - component: {fileID: 1539476652} + m_Layer: 5 + m_Name: GameCanvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1539476652 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1539476651} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1539476653 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1539476651} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 1920, y: 1080} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0.5 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &1539476654 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1539476651} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 1 + m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1539476655 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1539476651} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &1683319378 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1683319381} + - component: {fileID: 1683319380} + - component: {fileID: 1683319379} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1683319379 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1683319378} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1683319380 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1683319378} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!4 &1683319381 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1683319378} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2038986851 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2038986853} + - component: {fileID: 2038986852} + m_Layer: 0 + m_Name: Spawner + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2038986852 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2038986851} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 83fa400829eb6494796e00cfbb1c5d71, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &2038986853 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2038986851} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 330585546} + - {fileID: 410087041} + - {fileID: 832575519} + - {fileID: 1539476655} + - {fileID: 1683319381} + - {fileID: 2038986853} diff --git a/Assets/Scripts.meta b/Assets/Scripts.meta new file mode 100644 index 0000000..9f3ee38 --- /dev/null +++ b/Assets/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6364d0560189fac4299f772a04c17198 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/BasicWindow.cs b/Assets/Scripts/BasicWindow.cs new file mode 100644 index 0000000..14ce40d --- /dev/null +++ b/Assets/Scripts/BasicWindow.cs @@ -0,0 +1,7 @@ +namespace InterfaceOff +{ + public class BasicWindow : WindowBase + { + + } +} \ No newline at end of file diff --git a/Assets/Scripts/BasicWindow.cs.meta b/Assets/Scripts/BasicWindow.cs.meta new file mode 100644 index 0000000..47afebf --- /dev/null +++ b/Assets/Scripts/BasicWindow.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: eac7797c414842e59b3acc1c0d6a542d +timeCreated: 1768298931 \ No newline at end of file diff --git a/Assets/Scripts/Extensions.meta b/Assets/Scripts/Extensions.meta new file mode 100644 index 0000000..2403b04 --- /dev/null +++ b/Assets/Scripts/Extensions.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 90a599d4c2654a3793b34809ea82ead1 +timeCreated: 1768299034 \ No newline at end of file diff --git a/Assets/Scripts/Extensions/ListExtensions.cs b/Assets/Scripts/Extensions/ListExtensions.cs new file mode 100644 index 0000000..d0329a2 --- /dev/null +++ b/Assets/Scripts/Extensions/ListExtensions.cs @@ -0,0 +1,10 @@ +using System.Collections.Generic; + +public static class ListExtensions +{ + public static T GetRandom(this List list) + { + int index = UnityEngine.Random.Range(0, list.Count); + return list[index]; + } +} diff --git a/Assets/Scripts/Extensions/ListExtensions.cs.meta b/Assets/Scripts/Extensions/ListExtensions.cs.meta new file mode 100644 index 0000000..26cbba9 --- /dev/null +++ b/Assets/Scripts/Extensions/ListExtensions.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: cf13893a58ea446491ffdf8b92ddd426 +timeCreated: 1768299042 \ No newline at end of file diff --git a/Assets/Scripts/NullCheckers.cs b/Assets/Scripts/NullCheckers.cs new file mode 100644 index 0000000..ae04289 --- /dev/null +++ b/Assets/Scripts/NullCheckers.cs @@ -0,0 +1,33 @@ +using System.Runtime.CompilerServices; +using JetBrains.Annotations; +using Unity.VisualScripting; + +namespace InterfaceOff +{ + public class DebugUtils + { + [MethodImpl(MethodImplOptions.AggressiveInlining), AssertionMethod, ContractAnnotation("null => true")] + public static bool IsNull(UnityEngine.Object obj) + { + return obj.IsUnityNull(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining), AssertionMethod, ContractAnnotation("null => true")] + public static bool IsNull(object obj) + { + return obj == null; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining), AssertionMethod, ContractAnnotation("null => false")] + public static bool IsNotNull(UnityEngine.Object obj) + { + return !obj.IsUnityNull(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining), AssertionMethod, ContractAnnotation("null => true")] + public static bool IsNotNull(object obj) + { + return obj != null; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/NullCheckers.cs.meta b/Assets/Scripts/NullCheckers.cs.meta new file mode 100644 index 0000000..22805c7 --- /dev/null +++ b/Assets/Scripts/NullCheckers.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: f00bdf5606894d12a4cb4335afd5bf54 +timeCreated: 1768299617 \ No newline at end of file diff --git a/Assets/Scripts/WindowBase.cs b/Assets/Scripts/WindowBase.cs new file mode 100644 index 0000000..74ad819 --- /dev/null +++ b/Assets/Scripts/WindowBase.cs @@ -0,0 +1,11 @@ +using UnityEngine; + +namespace InterfaceOff +{ + public abstract class WindowBase : MonoBehaviour + { + public void InstantiateWindowBase() + { + } + } +} diff --git a/Assets/Scripts/WindowBase.cs.meta b/Assets/Scripts/WindowBase.cs.meta new file mode 100644 index 0000000..cd08cb9 --- /dev/null +++ b/Assets/Scripts/WindowBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 032b6f3e9e786884085cabb655a4ad31 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/WindowSpawner.cs b/Assets/Scripts/WindowSpawner.cs new file mode 100644 index 0000000..ce60fdb --- /dev/null +++ b/Assets/Scripts/WindowSpawner.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace InterfaceOff +{ + public class WindowSpawner : MonoBehaviour + { + private List WindowTypes { get; } = new(); + + [field: SerializeField] private Canvas GameCanvas { get; set; } + + private void Awake() + { + /* Fetches all window types created */ + Type[] types = typeof(WindowBase).Assembly.GetTypes(); + foreach (Type t in types) + { + if (t.IsSubclassOf(typeof(WindowBase))) + { + WindowTypes.Add(t); + } + } + + /* Logs the amount of types found and errors if there is none */ + Debug.Log($"Found [{WindowTypes.Count}] different window types "); + if (WindowTypes.Count == 0) + { + Debug.LogError("Could not find any window types"); + } + } + + private void Update() + { + if (Input.GetKeyDown(KeyCode.Space)) + { + Type type = WindowTypes.GetRandom(); + GameObject go = new(); + go.transform.SetParent(GameCanvas.transform); + + WindowBase windowBase = go.AddComponent(type) as WindowBase; + if (DebugUtils.IsNull(windowBase)) + { + Debug.LogError("How did this happen"); + return; + } + + windowBase.InstantiateWindowBase(); + } + } + } +} diff --git a/Assets/Scripts/WindowSpawner.cs.meta b/Assets/Scripts/WindowSpawner.cs.meta new file mode 100644 index 0000000..8a293a1 --- /dev/null +++ b/Assets/Scripts/WindowSpawner.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 83fa400829eb6494796e00cfbb1c5d71 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: