From e7b56ebf9d25978b3aac4a0631d4083fdb2441d1 Mon Sep 17 00:00:00 2001 From: dereelatwit <54997325+dereelatwit@users.noreply.github.com> Date: Mon, 24 Jul 2023 21:33:01 -0400 Subject: [PATCH] Implemented mouse to line drawing --- Pathfinding Visualizer/Assets/Materials.meta | 8 + .../Assets/Materials/line material.mat | 91 +++++ .../Assets/Materials/line material.mat.meta | 8 + .../Assets/PathfindingVisualizer.unity | 334 ++++++++++++++++++ .../Assets/PathfindingVisualizer.unity.meta | 7 + Pathfinding Visualizer/Assets/Prefab.meta | 8 + .../Assets/Prefab/Line.prefab | 180 ++++++++++ .../Assets/Prefab/Line.prefab.meta | 7 + .../Assets/Prefab/ball.prefab | 182 ++++++++++ .../Assets/Prefab/ball.prefab.meta | 7 + Pathfinding Visualizer/Assets/Scripts.meta | 8 + .../Assets/Scripts/DrawLine.cs | 61 ++++ .../Assets/Scripts/DrawLine.cs.meta | 11 + Pathfinding Visualizer/Assets/Sprites.meta | 8 + .../Assets/Sprites/BlackBall.png | Bin 0 -> 38824 bytes .../Assets/Sprites/BlackBall.png.meta | 140 ++++++++ .../SceneTemplateSettings.json | 121 +++++++ Pathfinding Visualizer/UpgradeLog.htm | 273 ++++++++++++++ 18 files changed, 1454 insertions(+) create mode 100644 Pathfinding Visualizer/Assets/Materials.meta create mode 100644 Pathfinding Visualizer/Assets/Materials/line material.mat create mode 100644 Pathfinding Visualizer/Assets/Materials/line material.mat.meta create mode 100644 Pathfinding Visualizer/Assets/PathfindingVisualizer.unity create mode 100644 Pathfinding Visualizer/Assets/PathfindingVisualizer.unity.meta create mode 100644 Pathfinding Visualizer/Assets/Prefab.meta create mode 100644 Pathfinding Visualizer/Assets/Prefab/Line.prefab create mode 100644 Pathfinding Visualizer/Assets/Prefab/Line.prefab.meta create mode 100644 Pathfinding Visualizer/Assets/Prefab/ball.prefab create mode 100644 Pathfinding Visualizer/Assets/Prefab/ball.prefab.meta create mode 100644 Pathfinding Visualizer/Assets/Scripts.meta create mode 100644 Pathfinding Visualizer/Assets/Scripts/DrawLine.cs create mode 100644 Pathfinding Visualizer/Assets/Scripts/DrawLine.cs.meta create mode 100644 Pathfinding Visualizer/Assets/Sprites.meta create mode 100644 Pathfinding Visualizer/Assets/Sprites/BlackBall.png create mode 100644 Pathfinding Visualizer/Assets/Sprites/BlackBall.png.meta create mode 100644 Pathfinding Visualizer/ProjectSettings/SceneTemplateSettings.json create mode 100644 Pathfinding Visualizer/UpgradeLog.htm diff --git a/Pathfinding Visualizer/Assets/Materials.meta b/Pathfinding Visualizer/Assets/Materials.meta new file mode 100644 index 0000000..2dfd3bb --- /dev/null +++ b/Pathfinding Visualizer/Assets/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 320813ea13ab74a46819366b446958a8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Pathfinding Visualizer/Assets/Materials/line material.mat b/Pathfinding Visualizer/Assets/Materials/line material.mat new file mode 100644 index 0000000..9c08549 --- /dev/null +++ b/Pathfinding Visualizer/Assets/Materials/line material.mat @@ -0,0 +1,91 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: line material + m_Shader: {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AlphaTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - PixelSnap: 0 + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _EnableExternalAlpha: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 0, g: 0, b: 0, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _Flip: {r: 1, g: 1, b: 1, a: 1} + - _RendererColor: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] diff --git a/Pathfinding Visualizer/Assets/Materials/line material.mat.meta b/Pathfinding Visualizer/Assets/Materials/line material.mat.meta new file mode 100644 index 0000000..36ac367 --- /dev/null +++ b/Pathfinding Visualizer/Assets/Materials/line material.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e8fde32c5f3a2c34e869114de421cc0f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Pathfinding Visualizer/Assets/PathfindingVisualizer.unity b/Pathfinding Visualizer/Assets/PathfindingVisualizer.unity new file mode 100644 index 0000000..d392323 --- /dev/null +++ b/Pathfinding Visualizer/Assets/PathfindingVisualizer.unity @@ -0,0 +1,334 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &321607182 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 321607185} + - component: {fileID: 321607184} + - component: {fileID: 321607183} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &321607183 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 321607182} + m_Enabled: 1 +--- !u!20 &321607184 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 321607182} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.8207547, g: 0.81745696, b: 0.73867923, a: 0} + 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_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &321607185 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 321607182} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -10} + 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 &1199475520 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1199475522} + - component: {fileID: 1199475521} + m_Layer: 0 + m_Name: GameController + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1199475521 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199475520} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c528828d28cb9a640b6504b8a7d14007, type: 3} + m_Name: + m_EditorClassIdentifier: + linePrefab: {fileID: 1214196043586269541, guid: 33ba44fa0d51d0145833e6081355d573, type: 3} + currentLine: {fileID: 0} + lineRenderer: {fileID: 0} + edgeCollider: {fileID: 0} + fingerPositions: [] +--- !u!4 &1199475522 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199475520} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.16611671, y: -0.24832045, z: -0.030928416} + 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!1001 &8582628730879868561 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 3549094815214484807, guid: d29e32c2c0179234097b97c2b9c39219, type: 3} + propertyPath: m_LocalPosition.x + value: -8 + objectReference: {fileID: 0} + - target: {fileID: 3549094815214484807, guid: d29e32c2c0179234097b97c2b9c39219, type: 3} + propertyPath: m_LocalPosition.y + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 3549094815214484807, guid: d29e32c2c0179234097b97c2b9c39219, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3549094815214484807, guid: d29e32c2c0179234097b97c2b9c39219, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3549094815214484807, guid: d29e32c2c0179234097b97c2b9c39219, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3549094815214484807, guid: d29e32c2c0179234097b97c2b9c39219, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3549094815214484807, guid: d29e32c2c0179234097b97c2b9c39219, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3549094815214484807, guid: d29e32c2c0179234097b97c2b9c39219, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3549094815214484807, guid: d29e32c2c0179234097b97c2b9c39219, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3549094815214484807, guid: d29e32c2c0179234097b97c2b9c39219, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7501534341019111358, guid: d29e32c2c0179234097b97c2b9c39219, type: 3} + propertyPath: m_Name + value: ball + objectReference: {fileID: 0} + - target: {fileID: 7715363580978826334, guid: d29e32c2c0179234097b97c2b9c39219, type: 3} + propertyPath: m_BodyType + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d29e32c2c0179234097b97c2b9c39219, type: 3} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 321607185} + - {fileID: 8582628730879868561} + - {fileID: 1199475522} diff --git a/Pathfinding Visualizer/Assets/PathfindingVisualizer.unity.meta b/Pathfinding Visualizer/Assets/PathfindingVisualizer.unity.meta new file mode 100644 index 0000000..45959f5 --- /dev/null +++ b/Pathfinding Visualizer/Assets/PathfindingVisualizer.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e10788931ba8c914ca6c4f47b145e45c +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Pathfinding Visualizer/Assets/Prefab.meta b/Pathfinding Visualizer/Assets/Prefab.meta new file mode 100644 index 0000000..a61e5d1 --- /dev/null +++ b/Pathfinding Visualizer/Assets/Prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d7d90429cb403dd4ab3046d659be20d4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Pathfinding Visualizer/Assets/Prefab/Line.prefab b/Pathfinding Visualizer/Assets/Prefab/Line.prefab new file mode 100644 index 0000000..5a77cc2 --- /dev/null +++ b/Pathfinding Visualizer/Assets/Prefab/Line.prefab @@ -0,0 +1,180 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1214196043586269541 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5115950667141000441} + - component: {fileID: 3298817988995980492} + - component: {fileID: 2279066987798762300} + m_Layer: 0 + m_Name: Line + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5115950667141000441 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1214196043586269541} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.16611671, y: -0.24832045, z: -0.030928416} + 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!120 &3298817988995980492 +LineRenderer: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1214196043586269541} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 0 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: e8fde32c5f3a2c34e869114de421cc0f, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Positions: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + m_Parameters: + serializedVersion: 3 + widthMultiplier: 0.15 + widthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + numCornerVertices: 0 + numCapVertices: 5 + alignment: 0 + textureMode: 0 + textureScale: {x: 1, y: 1} + shadowBias: 0.5 + generateLightingData: 0 + m_MaskInteraction: 0 + m_UseWorldSpace: 1 + m_Loop: 0 + m_ApplyActiveColorSpace: 1 +--- !u!68 &2279066987798762300 +EdgeCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1214196043586269541} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_EdgeRadius: 0 + m_Points: + - {x: -0.24111676, y: 0.24832045} + - {x: 4.908883, y: 0.24832045} + m_AdjacentStartPoint: {x: 0, y: 0} + m_AdjacentEndPoint: {x: 0, y: 0} + m_UseAdjacentStartPoint: 0 + m_UseAdjacentEndPoint: 0 diff --git a/Pathfinding Visualizer/Assets/Prefab/Line.prefab.meta b/Pathfinding Visualizer/Assets/Prefab/Line.prefab.meta new file mode 100644 index 0000000..dd43131 --- /dev/null +++ b/Pathfinding Visualizer/Assets/Prefab/Line.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 33ba44fa0d51d0145833e6081355d573 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Pathfinding Visualizer/Assets/Prefab/ball.prefab b/Pathfinding Visualizer/Assets/Prefab/ball.prefab new file mode 100644 index 0000000..b0fad2a --- /dev/null +++ b/Pathfinding Visualizer/Assets/Prefab/ball.prefab @@ -0,0 +1,182 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &6297269827036105755 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4893684886695845241} + - component: {fileID: 5872931879226639178} + m_Layer: 0 + m_Name: Circle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4893684886695845241 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6297269827036105755} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3549094815214484807} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &5872931879226639178 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6297269827036105755} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 21300000, guid: c70603c4daa04514fbaddf981e3c3e16, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!1 &7501534341019111358 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3549094815214484807} + - component: {fileID: 7715363580978826334} + - component: {fileID: 6203117872342792802} + m_Layer: 0 + m_Name: ball + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3549094815214484807 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7501534341019111358} + 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: + - {fileID: 4893684886695845241} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!50 &7715363580978826334 +Rigidbody2D: + serializedVersion: 4 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7501534341019111358} + m_BodyType: 2 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 0 + m_Mass: 1 + m_LinearDrag: 0 + m_AngularDrag: 0.05 + m_GravityScale: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_Interpolate: 0 + m_SleepingMode: 1 + m_CollisionDetection: 0 + m_Constraints: 0 +--- !u!58 &6203117872342792802 +CircleCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7501534341019111358} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + serializedVersion: 2 + m_Radius: 0.25 diff --git a/Pathfinding Visualizer/Assets/Prefab/ball.prefab.meta b/Pathfinding Visualizer/Assets/Prefab/ball.prefab.meta new file mode 100644 index 0000000..a16c4a1 --- /dev/null +++ b/Pathfinding Visualizer/Assets/Prefab/ball.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d29e32c2c0179234097b97c2b9c39219 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Pathfinding Visualizer/Assets/Scripts.meta b/Pathfinding Visualizer/Assets/Scripts.meta new file mode 100644 index 0000000..c4bab4b --- /dev/null +++ b/Pathfinding Visualizer/Assets/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: db3db36814a4b164da3d3132af4c42c4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Pathfinding Visualizer/Assets/Scripts/DrawLine.cs b/Pathfinding Visualizer/Assets/Scripts/DrawLine.cs new file mode 100644 index 0000000..e3b2e47 --- /dev/null +++ b/Pathfinding Visualizer/Assets/Scripts/DrawLine.cs @@ -0,0 +1,61 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class DrawLine : MonoBehaviour +{ + + public GameObject linePrefab; + public GameObject currentLine; + + public LineRenderer lineRenderer; + public EdgeCollider2D edgeCollider; + public List fingerPositions; + + + + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + if (Input.GetMouseButtonDown(0)) + { + CreateLine(); + } + + if (Input.GetMouseButton(0)) + { + Vector2 tempFingerPos = Camera.main.ScreenToWorldPoint(Input.mousePosition); + if (Vector2.Distance(tempFingerPos, fingerPositions[fingerPositions.Count - 1]) > .1f) + { + UpdateLine(tempFingerPos); + } + } + } + + void CreateLine() + { + currentLine = Instantiate(linePrefab, Vector3.zero, Quaternion.identity); + lineRenderer = currentLine.GetComponent(); + edgeCollider = currentLine.GetComponent(); + fingerPositions.Clear(); + fingerPositions.Add(Camera.main.ScreenToWorldPoint(Input.mousePosition)); + fingerPositions.Add(Camera.main.ScreenToWorldPoint(Input.mousePosition)); + lineRenderer.SetPosition(0, fingerPositions[0]); + lineRenderer.SetPosition(1, fingerPositions[1]); + edgeCollider.points = fingerPositions.ToArray(); + + } + void UpdateLine(Vector2 newFingerPos) + { + fingerPositions.Add(newFingerPos); + lineRenderer.positionCount++; + lineRenderer.SetPosition(lineRenderer.positionCount - 1, newFingerPos); + edgeCollider.points = fingerPositions.ToArray(); + } +} diff --git a/Pathfinding Visualizer/Assets/Scripts/DrawLine.cs.meta b/Pathfinding Visualizer/Assets/Scripts/DrawLine.cs.meta new file mode 100644 index 0000000..7a8befc --- /dev/null +++ b/Pathfinding Visualizer/Assets/Scripts/DrawLine.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c528828d28cb9a640b6504b8a7d14007 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Pathfinding Visualizer/Assets/Sprites.meta b/Pathfinding Visualizer/Assets/Sprites.meta new file mode 100644 index 0000000..5821762 --- /dev/null +++ b/Pathfinding Visualizer/Assets/Sprites.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ec410d3eee5644448aac21bc1b554afa +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Pathfinding Visualizer/Assets/Sprites/BlackBall.png b/Pathfinding Visualizer/Assets/Sprites/BlackBall.png new file mode 100644 index 0000000000000000000000000000000000000000..20a54a20fda1186cfce1a592034a400eed641995 GIT binary patch literal 38824 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 literal 0 HcmV?d00001 diff --git a/Pathfinding Visualizer/Assets/Sprites/BlackBall.png.meta b/Pathfinding Visualizer/Assets/Sprites/BlackBall.png.meta new file mode 100644 index 0000000..e300467 --- /dev/null +++ b/Pathfinding Visualizer/Assets/Sprites/BlackBall.png.meta @@ -0,0 +1,140 @@ +fileFormatVersion: 2 +guid: c70603c4daa04514fbaddf981e3c3e16 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Pathfinding Visualizer/ProjectSettings/SceneTemplateSettings.json b/Pathfinding Visualizer/ProjectSettings/SceneTemplateSettings.json new file mode 100644 index 0000000..5e97f83 --- /dev/null +++ b/Pathfinding Visualizer/ProjectSettings/SceneTemplateSettings.json @@ -0,0 +1,121 @@ +{ + "templatePinStates": [], + "dependencyTypeInfos": [ + { + "userAdded": false, + "type": "UnityEngine.AnimationClip", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.Animations.AnimatorController", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.AnimatorOverrideController", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.Audio.AudioMixerController", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.ComputeShader", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.Cubemap", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.GameObject", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.LightingDataAsset", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.LightingSettings", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Material", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.MonoScript", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.PhysicMaterial", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.PhysicsMaterial2D", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.PostProcessing.PostProcessResources", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.VolumeProfile", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.SceneAsset", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.Shader", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.ShaderVariantCollection", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.Texture", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Texture2D", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Timeline.TimelineAsset", + "defaultInstantiationMode": 0 + } + ], + "defaultDependencyTypeInfo": { + "userAdded": false, + "type": "", + "defaultInstantiationMode": 1 + }, + "newSceneOverride": 0 +} \ No newline at end of file diff --git a/Pathfinding Visualizer/UpgradeLog.htm b/Pathfinding Visualizer/UpgradeLog.htm new file mode 100644 index 0000000..a1d1936 --- /dev/null +++ b/Pathfinding Visualizer/UpgradeLog.htm @@ -0,0 +1,273 @@ + + + + Migration Report +

+ Migration Report -

\ No newline at end of file