From e592ceeb65088e55d67ac531827c3470fd54920b Mon Sep 17 00:00:00 2001
From: "bocska.karina" <bocska.karina@hallgato.ppke.hu>
Date: Sun, 27 Oct 2024 12:01:21 +0100
Subject: [PATCH] quad editing, deleting

---
 Assets/Icons/remove.png                       | Bin 0 -> 13015 bytes
 Assets/Icons/remove.png.meta                  | 140 ++++++
 Assets/Material 1.mat                         |   4 +-
 Assets/Prefabs/BlockSelect.prefab             |  46 +-
 Assets/Prefabs/FittedQuad.prefab              | 327 ++++++++++++++
 Assets/Prefabs/FittedQuad.prefab.meta         |   7 +
 Assets/Prefabs/VertexPoint.prefab             |  23 +-
 .../XRI Default Input Actions.inputactions    |  15 +-
 Assets/Scenes/SampleScene.unity               | 421 ++++++++++++++++++
 Assets/Scrips/Components/Block/BlockRotate.cs |  14 +-
 Assets/Scrips/Components/Quad.meta            |   8 +
 Assets/Scrips/Components/Quad/FittedQuad.cs   |  73 +++
 .../Scrips/Components/Quad/FittedQuad.cs.meta |  11 +
 Assets/Scrips/Components/Quad/VertexPoint.cs  |  40 ++
 .../Components/Quad/VertexPoint.cs.meta       |  11 +
 .../Components/Selection/BlockSelect.cs       |  18 +-
 Assets/Scrips/Contexts/EditState.cs           |   5 +-
 .../Scrips/Controllers/MainMenuController.cs  |  12 -
 .../Scrips/Controllers/ProgramController.cs   |  34 ++
 .../Controllers/SelectPointsController.cs     | 165 +++----
 Assets/Scrips/Utils/Save.cs                   |   5 +
 .../SampleScene.scenetemplate                 |  12 +-
 .../Prefabs/UI/List Item Button.prefab        |  27 +-
 .../Prefabs/UI/Spatial Panel Scroll.prefab    |  10 +-
 24 files changed, 1248 insertions(+), 180 deletions(-)
 create mode 100644 Assets/Icons/remove.png
 create mode 100644 Assets/Icons/remove.png.meta
 create mode 100644 Assets/Prefabs/FittedQuad.prefab
 create mode 100644 Assets/Prefabs/FittedQuad.prefab.meta
 create mode 100644 Assets/Scrips/Components/Quad.meta
 create mode 100644 Assets/Scrips/Components/Quad/FittedQuad.cs
 create mode 100644 Assets/Scrips/Components/Quad/FittedQuad.cs.meta
 create mode 100644 Assets/Scrips/Components/Quad/VertexPoint.cs
 create mode 100644 Assets/Scrips/Components/Quad/VertexPoint.cs.meta

diff --git a/Assets/Icons/remove.png b/Assets/Icons/remove.png
new file mode 100644
index 0000000000000000000000000000000000000000..47344fb7a5f5404ac503e6406478f6d45dc3b368
GIT binary patch
literal 13015
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
Qfq{X+)78&qol`;+0PEJms{jB1

literal 0
HcmV?d00001

diff --git a/Assets/Icons/remove.png.meta b/Assets/Icons/remove.png.meta
new file mode 100644
index 0000000..a09435d
--- /dev/null
+++ b/Assets/Icons/remove.png.meta
@@ -0,0 +1,140 @@
+fileFormatVersion: 2
+guid: 1f7e5f686df183d4ca1c96949b4e83c1
+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: 0
+  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: 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: Android
+    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/Assets/Material 1.mat b/Assets/Material 1.mat
index 536c372..1e020ed 100644
--- a/Assets/Material 1.mat	
+++ b/Assets/Material 1.mat	
@@ -15,7 +15,7 @@ Material:
   m_InvalidKeywords: []
   m_LightmapFlags: 4
   m_EnableInstancingVariants: 0
-  m_DoubleSidedGI: 0
+  m_DoubleSidedGI: 1
   m_CustomRenderQueue: -1
   stringTagMap:
     RenderType: Opaque
@@ -89,7 +89,7 @@ Material:
     - _BumpScale: 1
     - _ClearCoatMask: 0
     - _ClearCoatSmoothness: 0
-    - _Cull: 2
+    - _Cull: 0
     - _Cutoff: 0.5
     - _DetailAlbedoMapScale: 1
     - _DetailNormalMapScale: 1
diff --git a/Assets/Prefabs/BlockSelect.prefab b/Assets/Prefabs/BlockSelect.prefab
index cd12e9e..f668993 100644
--- a/Assets/Prefabs/BlockSelect.prefab
+++ b/Assets/Prefabs/BlockSelect.prefab
@@ -14,8 +14,8 @@ GameObject:
   - component: {fileID: 1779685088826987312}
   - component: {fileID: 3268846158774871891}
   - component: {fileID: -4358216392600172306}
-  - component: {fileID: 7216982225745790517}
   - component: {fileID: -5980889118735951575}
+  - component: {fileID: -2647738392038745357}
   m_Layer: 0
   m_Name: BlockSelect
   m_TagString: surface
@@ -140,7 +140,20 @@ MonoBehaviour:
   RotateAnchorPrefab: {fileID: 2874721107243629612, guid: 12accfaeb3e281a48acb41e0100ee76d, type: 3}
   inputTransform: {fileID: 0}
   activateRotationEvent: {fileID: 4987378303488695193, guid: c348712bda248c246b8c49b3db54643f, type: 3}
---- !u!114 &7216982225745790517
+--- !u!114 &-5980889118735951575
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8126816444565180231}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 2f2c9d2fbf2ef104992bb5e55dae6b42, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  selectPointsController: {fileID: 0}
+--- !u!114 &-2647738392038745357
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
@@ -164,7 +177,7 @@ MonoBehaviour:
   m_FocusMode: 1
   m_CustomReticle: {fileID: 0}
   m_AllowGazeInteraction: 0
-  m_AllowGazeSelect: 0
+  m_AllowGazeSelect: 1
   m_OverrideGazeTimeToSelect: 0
   m_GazeTimeToSelect: 0.5
   m_OverrideTimeToAutoDeselectGaze: 0
@@ -190,7 +203,19 @@ MonoBehaviour:
       m_Calls: []
   m_SelectEntered:
     m_PersistentCalls:
-      m_Calls: []
+      m_Calls:
+      - m_Target: {fileID: -5980889118735951575}
+        m_TargetAssemblyTypeName: BlockSelect, Assembly-CSharp
+        m_MethodName: DeleteSelection
+        m_Mode: 1
+        m_Arguments:
+          m_ObjectArgument: {fileID: 0}
+          m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+          m_IntArgument: 0
+          m_FloatArgument: 0
+          m_StringArgument: 
+          m_BoolArgument: 0
+        m_CallState: 2
   m_SelectExited:
     m_PersistentCalls:
       m_Calls: []
@@ -242,16 +267,3 @@ MonoBehaviour:
   m_OnDeactivate:
     m_PersistentCalls:
       m_Calls: []
---- !u!114 &-5980889118735951575
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 8126816444565180231}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 2f2c9d2fbf2ef104992bb5e55dae6b42, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  selectPointsController: {fileID: 0}
diff --git a/Assets/Prefabs/FittedQuad.prefab b/Assets/Prefabs/FittedQuad.prefab
new file mode 100644
index 0000000..7ffb451
--- /dev/null
+++ b/Assets/Prefabs/FittedQuad.prefab
@@ -0,0 +1,327 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &2123888734268900958
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7415406206536596469}
+  - component: {fileID: 6085268248900285533}
+  - component: {fileID: 1362285220292941322}
+  - component: {fileID: 7157457943888117503}
+  - component: {fileID: 2186370549273694175}
+  - component: {fileID: -2410014600031643114}
+  - component: {fileID: 7780733699600987831}
+  - component: {fileID: -4630001669494647888}
+  m_Layer: 0
+  m_Name: FittedQuad
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &7415406206536596469
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2123888734268900958}
+  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!33 &6085268248900285533
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2123888734268900958}
+  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &1362285220292941322
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2123888734268900958}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_StaticShadowCaster: 0
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 2100000, guid: f7d23c7a57a992c4282494782cba5215, 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_AdditionalVertexStreams: {fileID: 0}
+--- !u!64 &7157457943888117503
+MeshCollider:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2123888734268900958}
+  m_Material: {fileID: 0}
+  m_IncludeLayers:
+    serializedVersion: 2
+    m_Bits: 0
+  m_ExcludeLayers:
+    serializedVersion: 2
+    m_Bits: 0
+  m_LayerOverridePriority: 0
+  m_IsTrigger: 0
+  m_ProvidesContacts: 0
+  m_Enabled: 1
+  serializedVersion: 5
+  m_Convex: 0
+  m_CookingOptions: 30
+  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!54 &2186370549273694175
+Rigidbody:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2123888734268900958}
+  serializedVersion: 4
+  m_Mass: 1
+  m_Drag: 0
+  m_AngularDrag: 0.05
+  m_CenterOfMass: {x: 0, y: 0, z: 0}
+  m_InertiaTensor: {x: 1, y: 1, z: 1}
+  m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_IncludeLayers:
+    serializedVersion: 2
+    m_Bits: 0
+  m_ExcludeLayers:
+    serializedVersion: 2
+    m_Bits: 0
+  m_ImplicitCom: 1
+  m_ImplicitTensor: 1
+  m_UseGravity: 0
+  m_IsKinematic: 1
+  m_Interpolate: 0
+  m_Constraints: 0
+  m_CollisionDetection: 0
+--- !u!114 &-2410014600031643114
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2123888734268900958}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0ad34abafad169848a38072baa96cdb2, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_InteractionManager: {fileID: 0}
+  m_Colliders: []
+  m_InteractionLayerMask:
+    serializedVersion: 2
+    m_Bits: 4294967295
+  m_InteractionLayers:
+    m_Bits: 1
+  m_DistanceCalculationMode: 1
+  m_SelectMode: 0
+  m_FocusMode: 1
+  m_CustomReticle: {fileID: 0}
+  m_AllowGazeInteraction: 1
+  m_AllowGazeSelect: 1
+  m_OverrideGazeTimeToSelect: 0
+  m_GazeTimeToSelect: 0.5
+  m_OverrideTimeToAutoDeselectGaze: 0
+  m_TimeToAutoDeselectGaze: 3
+  m_AllowGazeAssistance: 0
+  m_FirstHoverEntered:
+    m_PersistentCalls:
+      m_Calls: []
+  m_LastHoverExited:
+    m_PersistentCalls:
+      m_Calls: []
+  m_HoverEntered:
+    m_PersistentCalls:
+      m_Calls: []
+  m_HoverExited:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FirstSelectEntered:
+    m_PersistentCalls:
+      m_Calls: []
+  m_LastSelectExited:
+    m_PersistentCalls:
+      m_Calls: []
+  m_SelectEntered:
+    m_PersistentCalls:
+      m_Calls: []
+  m_SelectExited:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FirstFocusEntered:
+    m_PersistentCalls:
+      m_Calls: []
+  m_LastFocusExited:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FocusEntered:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FocusExited:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Activated:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Deactivated:
+    m_PersistentCalls:
+      m_Calls: []
+  m_StartingHoverFilters: []
+  m_StartingSelectFilters: []
+  m_StartingInteractionStrengthFilters: []
+  m_OnFirstHoverEntered:
+    m_PersistentCalls:
+      m_Calls: []
+  m_OnLastHoverExited:
+    m_PersistentCalls:
+      m_Calls: []
+  m_OnHoverEntered:
+    m_PersistentCalls:
+      m_Calls: []
+  m_OnHoverExited:
+    m_PersistentCalls:
+      m_Calls: []
+  m_OnSelectEntered:
+    m_PersistentCalls:
+      m_Calls: []
+  m_OnSelectExited:
+    m_PersistentCalls:
+      m_Calls: []
+  m_OnSelectCanceled:
+    m_PersistentCalls:
+      m_Calls: []
+  m_OnActivate:
+    m_PersistentCalls:
+      m_Calls: []
+  m_OnDeactivate:
+    m_PersistentCalls:
+      m_Calls: []
+  m_AttachTransform: {fileID: 0}
+  m_SecondaryAttachTransform: {fileID: 0}
+  m_UseDynamicAttach: 0
+  m_MatchAttachPosition: 1
+  m_MatchAttachRotation: 1
+  m_SnapToColliderVolume: 1
+  m_ReinitializeDynamicAttachEverySingleGrab: 1
+  m_AttachEaseInTime: 0.15
+  m_MovementType: 2
+  m_VelocityDamping: 1
+  m_VelocityScale: 1
+  m_AngularVelocityDamping: 1
+  m_AngularVelocityScale: 1
+  m_TrackPosition: 1
+  m_SmoothPosition: 0
+  m_SmoothPositionAmount: 8
+  m_TightenPosition: 0.1
+  m_TrackRotation: 0
+  m_SmoothRotation: 0
+  m_SmoothRotationAmount: 8
+  m_TightenRotation: 0.1
+  m_TrackScale: 0
+  m_SmoothScale: 0
+  m_SmoothScaleAmount: 8
+  m_TightenScale: 0.1
+  m_ThrowOnDetach: 0
+  m_ThrowSmoothingDuration: 0.25
+  m_ThrowSmoothingCurve:
+    serializedVersion: 2
+    m_Curve:
+    - serializedVersion: 3
+      time: 1
+      value: 1
+      inSlope: 0
+      outSlope: 0
+      tangentMode: 0
+      weightedMode: 0
+      inWeight: 0
+      outWeight: 0
+    m_PreInfinity: 2
+    m_PostInfinity: 2
+    m_RotationOrder: 4
+  m_ThrowVelocityScale: 1.5
+  m_ThrowAngularVelocityScale: 1
+  m_ForceGravityOnDetach: 0
+  m_RetainTransformParent: 1
+  m_AttachPointCompatibilityMode: 0
+  m_StartingSingleGrabTransformers: []
+  m_StartingMultipleGrabTransformers: []
+  m_AddDefaultGrabTransformers: 0
+--- !u!114 &7780733699600987831
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2123888734268900958}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: d0a1302d0d134fa8a2a5b3bf4aec3c20, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_PermittedDisplacementAxes: 3
+  m_ConstrainedAxisDisplacementMode: 0
+  m_TwoHandedRotationMode: 1
+  m_AllowOneHandedScaling: 1
+  m_AllowTwoHandedScaling: 0
+  m_OneHandedScaleSpeed: 0.5
+  m_ThresholdMoveRatioForScale: 0.05
+  m_ClampScaling: 1
+  m_MinimumScaleRatio: 0.25
+  m_MaximumScaleRatio: 2
+  m_ScaleMultiplier: 0.25
+--- !u!114 &-4630001669494647888
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2123888734268900958}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 20838c10ccf6e2746824ba579c0e1e09, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  vertexPointPrefab: {fileID: 8138111287210361984, guid: 5d21b49507ba4104f983122e372d6595, type: 3}
diff --git a/Assets/Prefabs/FittedQuad.prefab.meta b/Assets/Prefabs/FittedQuad.prefab.meta
new file mode 100644
index 0000000..4e8647a
--- /dev/null
+++ b/Assets/Prefabs/FittedQuad.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: acca7dbb0ace2e64c84057ecdceb3e15
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Prefabs/VertexPoint.prefab b/Assets/Prefabs/VertexPoint.prefab
index ac93c22..2780af8 100644
--- a/Assets/Prefabs/VertexPoint.prefab
+++ b/Assets/Prefabs/VertexPoint.prefab
@@ -15,7 +15,7 @@ GameObject:
   - component: {fileID: 492798701434058740}
   - component: {fileID: 4136171038367357647}
   - component: {fileID: 1183694293685742046}
-  - component: {fileID: -2749897353397705518}
+  - component: {fileID: 5808971997871397969}
   m_Layer: 0
   m_Name: VertexPoint
   m_TagString: Untagged
@@ -33,7 +33,7 @@ Transform:
   serializedVersion: 2
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
   m_LocalPosition: {x: 0, y: 1.016, z: 3.35}
-  m_LocalScale: {x: 0.02, y: 0.02, z: 0.02}
+  m_LocalScale: {x: 0.03, y: 0.03, z: 0.03}
   m_ConstrainProportionsScale: 1
   m_Children: []
   m_Father: {fileID: 0}
@@ -255,15 +255,15 @@ MonoBehaviour:
   m_SmoothPosition: 0
   m_SmoothPositionAmount: 8
   m_TightenPosition: 0.1
-  m_TrackRotation: 1
+  m_TrackRotation: 0
   m_SmoothRotation: 0
   m_SmoothRotationAmount: 8
   m_TightenRotation: 0.1
-  m_TrackScale: 1
+  m_TrackScale: 0
   m_SmoothScale: 0
   m_SmoothScaleAmount: 8
   m_TightenScale: 0.1
-  m_ThrowOnDetach: 1
+  m_ThrowOnDetach: 0
   m_ThrowSmoothingDuration: 0.25
   m_ThrowSmoothingCurve:
     serializedVersion: 2
@@ -300,18 +300,18 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: d0a1302d0d134fa8a2a5b3bf4aec3c20, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  m_PermittedDisplacementAxes: -1
-  m_ConstrainedAxisDisplacementMode: 1
+  m_PermittedDisplacementAxes: 3
+  m_ConstrainedAxisDisplacementMode: 0
   m_TwoHandedRotationMode: 1
-  m_AllowOneHandedScaling: 1
+  m_AllowOneHandedScaling: 0
   m_AllowTwoHandedScaling: 0
   m_OneHandedScaleSpeed: 0.5
   m_ThresholdMoveRatioForScale: 0.05
-  m_ClampScaling: 1
+  m_ClampScaling: 0
   m_MinimumScaleRatio: 0.25
   m_MaximumScaleRatio: 2
   m_ScaleMultiplier: 0.25
---- !u!114 &-2749897353397705518
+--- !u!114 &5808971997871397969
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
@@ -320,7 +320,6 @@ MonoBehaviour:
   m_GameObject: {fileID: 8138111287210361984}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 98b85445213936746822c3b05e91cac9, type: 3}
+  m_Script: {fileID: 11500000, guid: 7b4454cab98497f4b851b9f82db76cc5, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  parentBlockDeform: {fileID: 0}
diff --git a/Assets/Samples/XR Interaction Toolkit/2.4.3/Starter Assets/XRI Default Input Actions.inputactions b/Assets/Samples/XR Interaction Toolkit/2.4.3/Starter Assets/XRI Default Input Actions.inputactions
index 8efdc9b..0b96552 100644
--- a/Assets/Samples/XR Interaction Toolkit/2.4.3/Starter Assets/XRI Default Input Actions.inputactions	
+++ b/Assets/Samples/XR Interaction Toolkit/2.4.3/Starter Assets/XRI Default Input Actions.inputactions	
@@ -703,7 +703,7 @@
                     "initialStateCheck": true
                 },
                 {
-                    "name": "save",
+                    "name": "Fit plane",
                     "type": "Button",
                     "id": "0031af44-5ced-4637-b320-dd79ef962b71",
                     "expectedControlType": "Button",
@@ -881,7 +881,18 @@
                     "interactions": "",
                     "processors": "",
                     "groups": "",
-                    "action": "save",
+                    "action": "Fit plane",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "bde33330-5b67-481b-874a-35bf06a2a347",
+                    "path": "<XRController>{LeftHand}/{PrimaryButton}",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Generic XR Controller",
+                    "action": "Fit plane",
                     "isComposite": false,
                     "isPartOfComposite": false
                 },
diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity
index 1a459de..b9b3e57 100644
--- a/Assets/Scenes/SampleScene.unity
+++ b/Assets/Scenes/SampleScene.unity
@@ -1940,6 +1940,7 @@ MonoBehaviour:
   - {fileID: 21300000, guid: 4782d855ca5a1534fb4e4c26dde1613d, type: 3}
   - {fileID: 21300000, guid: 0e952cbc137866843ab0f0aaac310dba, type: 3}
   - {fileID: 21300000, guid: 17e123028362b864f8cffc152bb19615, type: 3}
+  - {fileID: 21300000, guid: 1f7e5f686df183d4ca1c96949b4e83c1, type: 3}
 --- !u!1 &143237140
 GameObject:
   m_ObjectHideFlags: 0
@@ -3900,6 +3901,12 @@ PrefabInstance:
     - targetCorrespondingSourceObject: {fileID: 1035790433963668018, guid: 085ce58b196caa446a8545c9dd388793, type: 3}
       insertIndex: -1
       addedObject: {fileID: 1146522988}
+    - targetCorrespondingSourceObject: {fileID: 1035790433963668018, guid: 085ce58b196caa446a8545c9dd388793, type: 3}
+      insertIndex: -1
+      addedObject: {fileID: 1855450724}
+    - targetCorrespondingSourceObject: {fileID: 1035790433963668018, guid: 085ce58b196caa446a8545c9dd388793, type: 3}
+      insertIndex: -1
+      addedObject: {fileID: 1338359539}
     - targetCorrespondingSourceObject: {fileID: 1035790433963668018, guid: 085ce58b196caa446a8545c9dd388793, type: 3}
       insertIndex: -1
       addedObject: {fileID: 301465756}
@@ -5766,6 +5773,8 @@ MonoBehaviour:
   pointClouds:
   - {fileID: 1565662007}
   selectPointsEventAction: {fileID: -1827717145013635445, guid: c348712bda248c246b8c49b3db54643f, type: 3}
+  spawnPrefab: {fileID: 2123888734268900958, guid: acca7dbb0ace2e64c84057ecdceb3e15, type: 3}
+  maxNumberOfPoints: 300
 --- !u!1001 &427008753
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -16115,6 +16124,212 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 1326031627}
   m_CullTransparentMesh: 1
+--- !u!1001 &1338359538
+PrefabInstance:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_Modification:
+    serializedVersion: 3
+    m_TransformParent: {fileID: 449044966}
+    m_Modifications:
+    - target: {fileID: 169305219790147484, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_Enabled
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 1248386867110803025, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_AnchorMax.x
+      value: 0.5
+      objectReference: {fileID: 0}
+    - target: {fileID: 1248386867110803025, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_AnchorMin.x
+      value: 0.5
+      objectReference: {fileID: 0}
+    - target: {fileID: 1248386867110803025, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_SizeDelta.x
+      value: 220
+      objectReference: {fileID: 0}
+    - target: {fileID: 1248386867110803025, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_AnchoredPosition.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431699, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_Name
+      value: Export List Item Button (2)
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_Pivot.x
+      value: 0.5
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_Pivot.y
+      value: 0.5
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_RootOrder
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_AnchorMax.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_AnchorMax.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_AnchorMin.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_AnchorMin.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_SizeDelta.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_SizeDelta.y
+      value: 60
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_LocalPosition.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_LocalPosition.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_LocalPosition.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_LocalRotation.w
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_LocalRotation.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_LocalRotation.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_LocalRotation.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_AnchoredPosition.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_AnchoredPosition.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259952709508, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_IsActive
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 3199508834110206841, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_text
+      value: Clear Selection
+      objectReference: {fileID: 0}
+    - target: {fileID: 3199508834110206841, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_fontSize
+      value: 16
+      objectReference: {fileID: 0}
+    - target: {fileID: 3199508834110206841, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_enableAutoSizing
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 5443163050158697355, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_Enabled
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 6150670977401591343, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_AnchorMax.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 6150670977401591343, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_AnchorMin.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 6150670977401591343, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_SizeDelta.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 6150670977401591343, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_AnchoredPosition.x
+      value: 130.732
+      objectReference: {fileID: 0}
+    - target: {fileID: 6150670977401591343, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_AnchoredPosition.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 7753147258609537286, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 7753147258609537286, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 7753147258609537286, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
+      value: 
+      objectReference: {fileID: 426651924}
+    - target: {fileID: 7753147258609537286, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState
+      value: 2
+      objectReference: {fileID: 0}
+    - target: {fileID: 7753147258609537286, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName
+      value: ClearSelection
+      objectReference: {fileID: 0}
+    - target: {fileID: 7753147258609537286, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName
+      value: SelectPointsController, Assembly-CSharp
+      objectReference: {fileID: 0}
+    - target: {fileID: 7753147258609537286, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName
+      value: UnityEngine.Object, UnityEngine
+      objectReference: {fileID: 0}
+    - target: {fileID: 8488948026688725845, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_Enabled
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 8781133472592516893, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_PokeFillMaxSizeX
+      value: 235
+      objectReference: {fileID: 0}
+    - target: {fileID: 8781133472592516893, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_PokeFillMaxSizeY
+      value: 60
+      objectReference: {fileID: 0}
+    m_RemovedComponents: []
+    m_RemovedGameObjects: []
+    m_AddedGameObjects: []
+    m_AddedComponents: []
+  m_SourcePrefab: {fileID: 100100000, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+--- !u!224 &1338359539 stripped
+RectTransform:
+  m_CorrespondingSourceObject: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+  m_PrefabInstance: {fileID: 1338359538}
+  m_PrefabAsset: {fileID: 0}
 --- !u!1 &1341980719
 GameObject:
   m_ObjectHideFlags: 0
@@ -21802,6 +22017,212 @@ PrefabInstance:
       addedObject: {fileID: 1385002796}
     m_AddedComponents: []
   m_SourcePrefab: {fileID: 100100000, guid: 65eb6b98091a5734ba9d9ca871cef69a, type: 3}
+--- !u!1001 &1855450723
+PrefabInstance:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_Modification:
+    serializedVersion: 3
+    m_TransformParent: {fileID: 449044966}
+    m_Modifications:
+    - target: {fileID: 169305219790147484, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_Enabled
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 1248386867110803025, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_AnchorMax.x
+      value: 0.5
+      objectReference: {fileID: 0}
+    - target: {fileID: 1248386867110803025, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_AnchorMin.x
+      value: 0.5
+      objectReference: {fileID: 0}
+    - target: {fileID: 1248386867110803025, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_SizeDelta.x
+      value: 220
+      objectReference: {fileID: 0}
+    - target: {fileID: 1248386867110803025, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_AnchoredPosition.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431699, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_Name
+      value: Export List Item Button (1)
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_Pivot.x
+      value: 0.5
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_Pivot.y
+      value: 0.5
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_RootOrder
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_AnchorMax.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_AnchorMax.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_AnchorMin.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_AnchorMin.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_SizeDelta.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_SizeDelta.y
+      value: 60
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_LocalPosition.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_LocalPosition.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_LocalPosition.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_LocalRotation.w
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_LocalRotation.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_LocalRotation.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_LocalRotation.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_AnchoredPosition.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_AnchoredPosition.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2397425259952709508, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_IsActive
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 3199508834110206841, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_text
+      value: Export Mesh
+      objectReference: {fileID: 0}
+    - target: {fileID: 3199508834110206841, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_fontSize
+      value: 16
+      objectReference: {fileID: 0}
+    - target: {fileID: 3199508834110206841, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_enableAutoSizing
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 5443163050158697355, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_Enabled
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 6150670977401591343, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_AnchorMax.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 6150670977401591343, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_AnchorMin.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 6150670977401591343, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_SizeDelta.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 6150670977401591343, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_AnchoredPosition.x
+      value: 130.732
+      objectReference: {fileID: 0}
+    - target: {fileID: 6150670977401591343, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_AnchoredPosition.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 7753147258609537286, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 7753147258609537286, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 7753147258609537286, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
+      value: 
+      objectReference: {fileID: 426651922}
+    - target: {fileID: 7753147258609537286, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState
+      value: 2
+      objectReference: {fileID: 0}
+    - target: {fileID: 7753147258609537286, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName
+      value: LoadProgram
+      objectReference: {fileID: 0}
+    - target: {fileID: 7753147258609537286, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName
+      value: ProgramController, Assembly-CSharp
+      objectReference: {fileID: 0}
+    - target: {fileID: 7753147258609537286, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName
+      value: UnityEngine.Object, UnityEngine
+      objectReference: {fileID: 0}
+    - target: {fileID: 8488948026688725845, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_Enabled
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 8781133472592516893, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_PokeFillMaxSizeX
+      value: 235
+      objectReference: {fileID: 0}
+    - target: {fileID: 8781133472592516893, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+      propertyPath: m_PokeFillMaxSizeY
+      value: 60
+      objectReference: {fileID: 0}
+    m_RemovedComponents: []
+    m_RemovedGameObjects: []
+    m_AddedGameObjects: []
+    m_AddedComponents: []
+  m_SourcePrefab: {fileID: 100100000, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+--- !u!224 &1855450724 stripped
+RectTransform:
+  m_CorrespondingSourceObject: {fileID: 2397425259038431700, guid: fa5ef3b56cfeb4f4ba855cdf2610a578, type: 3}
+  m_PrefabInstance: {fileID: 1855450723}
+  m_PrefabAsset: {fileID: 0}
 --- !u!4 &1859349198 stripped
 Transform:
   m_CorrespondingSourceObject: {fileID: 7785151267686525226, guid: 048249d9a15aa3c459399751e860bde7, type: 3}
diff --git a/Assets/Scrips/Components/Block/BlockRotate.cs b/Assets/Scrips/Components/Block/BlockRotate.cs
index 35455b5..6853fb4 100644
--- a/Assets/Scrips/Components/Block/BlockRotate.cs
+++ b/Assets/Scrips/Components/Block/BlockRotate.cs
@@ -36,8 +36,6 @@ public class BlockRotate : MonoBehaviour
                 _rotateAnchor.transform.position = inputTransform.position + inputTransform.forward * 0.5f;
             }
         }
-
-        if (mode == EditState.EditType.Deform) _rotateAnchor.SetActive(false);
     }
 
     public void HandleRotateAnchor()
@@ -86,18 +84,18 @@ public class BlockRotate : MonoBehaviour
         }
     }
 
-    private void FixedUpdate()
-    {
-        EditState.EditType mode = EditState.Instance.ActiveEditState;
-        _rotateAnchor.SetActive(mode == EditState.EditType.Rotate);
-    }
-
     // Start is called before the first frame update
     void Start()
     {
         _rotateAnchor = Instantiate(RotateAnchorPrefab, this.transform.position, Quaternion.identity);
         _rotateAnchor.GetComponent<RotateAnchor>().Initialize(this);
         _rotateAnchor.SetActive(false);
+        EditState.Instance.RegisterListener(EditStateHandler);
     }
 
+    private void EditStateHandler()
+    {
+        EditState.EditType mode = EditState.Instance.ActiveEditState;
+        _rotateAnchor.SetActive(mode == EditState.EditType.Rotate);
+    }
 }
diff --git a/Assets/Scrips/Components/Quad.meta b/Assets/Scrips/Components/Quad.meta
new file mode 100644
index 0000000..a8a133e
--- /dev/null
+++ b/Assets/Scrips/Components/Quad.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 08edbe1de8e72754a823b9681e1bc68e
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scrips/Components/Quad/FittedQuad.cs b/Assets/Scrips/Components/Quad/FittedQuad.cs
new file mode 100644
index 0000000..42c9fb5
--- /dev/null
+++ b/Assets/Scrips/Components/Quad/FittedQuad.cs
@@ -0,0 +1,73 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.XR.Interaction.Toolkit;
+
+public class FittedQuad : MonoBehaviour
+{
+    public GameObject vertexPointPrefab;
+    private Mesh _mesh;
+    private readonly GameObject[] _vertexAnchors = new GameObject[4];
+
+    private void Awake()
+    {
+        _mesh = this.GetComponent<MeshFilter>().mesh;
+    }
+
+    private void Start()
+    {
+        InitAnchors();
+        EditState.Instance.RegisterListener(EditStateHandler);
+    }
+
+    private void EditStateHandler()
+    {
+        EditState.EditType mode = EditState.Instance.ActiveEditState;
+        foreach (GameObject anchor in _vertexAnchors)
+        {
+            anchor.SetActive(mode == EditState.EditType.Deform);
+        }
+
+        this.GetComponent<XRGrabInteractable>().enabled = mode == EditState.EditType.Deform;
+    }
+
+    private void InitAnchors()
+    {
+        Vector3[] vertices = _mesh.vertices;
+        for (int i = 0; i < vertices.Length; i++)
+        {
+            Vector3 vertex = vertices[i];
+            GameObject anchor = Instantiate(vertexPointPrefab, this.transform.position, Quaternion.identity);
+            anchor.transform.parent = this.transform;
+            anchor.transform.localPosition = vertex;
+            anchor.transform.LookAt(anchor.transform.position + this.transform.forward);
+            _vertexAnchors[i] = anchor;
+            anchor.GetComponent<VertexPoint>().SetParentQuad(this);
+        }
+    }
+
+    public void UpdateVertices()
+    {
+        Vector3[] vertices = _mesh.vertices;
+        for (int i = 0; i < vertices.Length; i++)
+        {
+            vertices[i] = _vertexAnchors[i].transform.localPosition;
+        }
+
+        _mesh.vertices = vertices;
+        _mesh.RecalculateBounds();
+        MeshCollider collider = GetComponent<MeshCollider>();
+        collider.sharedMesh = _mesh;
+    }
+
+    public void SetAnchors(Vector3[] positions)
+    {
+        for (int i = 0; i < positions.Length; i++)
+        {
+            _vertexAnchors[i].transform.localPosition = positions[i];
+        }
+
+        UpdateVertices();
+    }
+}
diff --git a/Assets/Scrips/Components/Quad/FittedQuad.cs.meta b/Assets/Scrips/Components/Quad/FittedQuad.cs.meta
new file mode 100644
index 0000000..2f0dc10
--- /dev/null
+++ b/Assets/Scrips/Components/Quad/FittedQuad.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 20838c10ccf6e2746824ba579c0e1e09
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scrips/Components/Quad/VertexPoint.cs b/Assets/Scrips/Components/Quad/VertexPoint.cs
new file mode 100644
index 0000000..74b0bf1
--- /dev/null
+++ b/Assets/Scrips/Components/Quad/VertexPoint.cs
@@ -0,0 +1,40 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.XR.Interaction.Toolkit;
+
+public class VertexPoint : MonoBehaviour
+{
+    private FittedQuad _parentQuad;
+    private XRGrabInteractable grabInteractable;
+    private bool _isSelected = false;
+
+    public void SetParentQuad(FittedQuad quad)
+    {
+        this._parentQuad = quad;
+    }
+
+    private void Awake()
+    {
+        grabInteractable = GetComponent<XRGrabInteractable>();
+        grabInteractable.selectExited.AddListener(HandleSelectExit);
+        grabInteractable.selectEntered.AddListener(HandleSelectEntered);
+    }
+
+    private void HandleSelectEntered(SelectEnterEventArgs arg0)
+    {
+        _isSelected = true;
+    }
+
+    private void HandleSelectExit(SelectExitEventArgs arg0)
+    {
+        _isSelected = false;
+        _parentQuad.UpdateVertices();
+    }
+
+    private void FixedUpdate()
+    {
+        if (_isSelected) _parentQuad.UpdateVertices();
+    }
+}
diff --git a/Assets/Scrips/Components/Quad/VertexPoint.cs.meta b/Assets/Scrips/Components/Quad/VertexPoint.cs.meta
new file mode 100644
index 0000000..658e57c
--- /dev/null
+++ b/Assets/Scrips/Components/Quad/VertexPoint.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7b4454cab98497f4b851b9f82db76cc5
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scrips/Components/Selection/BlockSelect.cs b/Assets/Scrips/Components/Selection/BlockSelect.cs
index de4de7c..18330a6 100644
--- a/Assets/Scrips/Components/Selection/BlockSelect.cs
+++ b/Assets/Scrips/Components/Selection/BlockSelect.cs
@@ -1,23 +1,29 @@
+using System;
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
+using UnityEngine.XR.Interaction.Toolkit;
 
 public class BlockSelect : MonoBehaviour
 {
     public SelectPointsController selectPointsController;
 
-    // Start is called before the first frame update
-    void Start()
-    {
+    private XRSimpleInteractable _xrSimpleInteractable;
 
+    private void Awake()
+    {
+        _xrSimpleInteractable = this.GetComponent<XRSimpleInteractable>();
     }
 
-    // Update is called once per frame
-    void Update()
+    public void DeleteSelection()
     {
-
+        if (EditState.Instance.ActiveEditState == EditState.EditType.Delete)
+        {
+            selectPointsController.RemoveSelection(this.gameObject);
+        }
     }
 
+
     private void OnDestroy()
     {
         selectPointsController.RemoveSelection(this.gameObject);
diff --git a/Assets/Scrips/Contexts/EditState.cs b/Assets/Scrips/Contexts/EditState.cs
index 0b30b9c..05caf7c 100644
--- a/Assets/Scrips/Contexts/EditState.cs
+++ b/Assets/Scrips/Contexts/EditState.cs
@@ -16,11 +16,12 @@ public class EditState : MonoBehaviour
     {
         Deform = 0,
         Rotate = 1,
-        Select = 2
+        Select = 2,
+        Delete = 3
     }
 
     public EditType ActiveEditState { get; private set; }
-    private EditType[] _stateWheel = { EditType.Deform, EditType.Rotate, EditType.Select };
+    private EditType[] _stateWheel = { EditType.Deform, EditType.Rotate, EditType.Select, EditType.Delete };
     private int _stateIndex = 0;
 
     private void SwitchState(InputAction.CallbackContext context)
diff --git a/Assets/Scrips/Controllers/MainMenuController.cs b/Assets/Scrips/Controllers/MainMenuController.cs
index 942729c..9224b11 100644
--- a/Assets/Scrips/Controllers/MainMenuController.cs
+++ b/Assets/Scrips/Controllers/MainMenuController.cs
@@ -35,18 +35,6 @@ public class MainMenuController : MonoBehaviour
         }
     }
 
-    // Start is called before the first frame update
-    void Start()
-    {
-
-    }
-
-    // Update is called once per frame
-    void Update()
-    {
-
-    }
-
     private void FixedUpdate()
     {
         if (!_menuActive) return;
diff --git a/Assets/Scrips/Controllers/ProgramController.cs b/Assets/Scrips/Controllers/ProgramController.cs
index bab8b50..90e800e 100644
--- a/Assets/Scrips/Controllers/ProgramController.cs
+++ b/Assets/Scrips/Controllers/ProgramController.cs
@@ -10,6 +10,7 @@ using UnityEngine.InputSystem;
 public class ProgramController : MonoBehaviour
 {
     private SpawnBlockEvent spawnBlockEvent;
+    private SelectPointsController selectPointsController;
     public Transform UserTransform;
 
     // public InputActionReference saveEventAction;
@@ -19,6 +20,7 @@ public class ProgramController : MonoBehaviour
     private InputLoader _inputLoad;
 
     private readonly List<GameObject> _spawnedBlocks = new();
+    private readonly List<GameObject> _spawnedQuads = new();
 
     private string _savePath;
     private SurrogateSelector _surrogateSelector;
@@ -27,6 +29,7 @@ public class ProgramController : MonoBehaviour
     private void Awake()
     {
         spawnBlockEvent = this.GetComponent<SpawnBlockEvent>();
+        selectPointsController = this.GetComponent<SelectPointsController>();
 
         this._savePath = Application.persistentDataPath + "/program.save";
         // _inputSave = new(saveEventAction, SaveProgram);
@@ -44,6 +47,11 @@ public class ProgramController : MonoBehaviour
         _spawnedBlocks.Add(block);
     }
 
+    public void RegisterQuad(GameObject quad)
+    {
+        _spawnedQuads.Add(quad);
+    }
+
     private Save CreateSave()
     {
         Save save = new();
@@ -73,6 +81,21 @@ public class ProgramController : MonoBehaviour
             save.BlockAnchors.Add(anchorsData);
         }
 
+        foreach (GameObject quad in _spawnedQuads)
+        {
+            Vector3[] quadVertices = quad.GetComponent<MeshFilter>().mesh.vertices;
+            Vector3[] quadData = new Vector3[2 + quadVertices.Length];
+            quadData[0] = quad.transform.position;
+            quadData[1] = -quad.transform.forward;
+
+            for (int i = 0; i < quadVertices.Length; i++)
+            {
+                quadData[i + 2] = quadVertices[i];
+            }
+
+            save.Quads.Add(quadData);
+        }
+
         return save;
     }
 
@@ -98,6 +121,15 @@ public class ProgramController : MonoBehaviour
                 _spawnedBlocks.Clear();
             }
 
+            if (_spawnedQuads.Count > 0)
+            {
+                foreach (GameObject quad in _spawnedQuads)
+                {
+                    Destroy(quad);
+                }
+                _spawnedQuads.Clear();
+            }
+
             FileStream fs = File.Open(this._savePath, FileMode.Open);
 
             Save save = (Save)_binaryFormatter.Deserialize(fs);
@@ -106,6 +138,8 @@ public class ProgramController : MonoBehaviour
             UserTransform.position = save.UserTransform[0];
             UserTransform.eulerAngles = save.UserTransform[1];
             spawnBlockEvent.LoadBlocks(save.Blocks, save.BlockAnchors);
+
+
         }
     }
 
diff --git a/Assets/Scrips/Controllers/SelectPointsController.cs b/Assets/Scrips/Controllers/SelectPointsController.cs
index 49d5876..2ad5cec 100644
--- a/Assets/Scrips/Controllers/SelectPointsController.cs
+++ b/Assets/Scrips/Controllers/SelectPointsController.cs
@@ -6,7 +6,6 @@ using UnityEngine.InputSystem;
 using MathNet.Numerics.LinearAlgebra.Factorization;
 using MathNet.Numerics.LinearAlgebra;
 using Unity.Mathematics;
-using Unity.VisualScripting;
 
 public class SelectPointsController : MonoBehaviour
 {
@@ -15,52 +14,31 @@ public class SelectPointsController : MonoBehaviour
     public InputActionReference selectPointsEventAction;
     private InputLoader _inputSelectPoints;
 
+    public GameObject spawnPrefab;
+    public int maxNumberOfPoints = 3000;
+
     private List<GameObject> _blockSelections;
 
     private List<Vector3> _debugPoints;
 
     private List<Vector3> _recalculatedPoints;
 
+    private ProgramController _programController;
+
     private void Awake()
     {
         _inputSelectPoints = new(selectPointsEventAction, SelectPointsHandler);
         _blockSelections = new();
         _debugPoints = new();
+        _programController = this.GetComponent<ProgramController>();
     }
 
     private void SelectPointsHandler(InputAction.CallbackContext context)
     {
-        // double epsilon = 1E-6;
         List<Vector3> selectedPoints = new();
         Transform cloudTransform = pointClouds[0].transform;
-        // Mesh pointCloudMesh = pointClouds[0].GetComponent<MeshFilter>().mesh;
-        // Vector3[] cloudVertices = pointCloudMesh.vertices;
-        // Vector3[] cloudNormals = pointCloudMesh.normals;
-        // Vector3 cloudNormal = cloudNormals[0];
-        // List<Vector3> normalsPerFace = new()
-        // {
-        //     cloudNormals[0] * pointCloudMesh.vertices[0].magnitude
-        // };
         for (int i = 0; i < _recalculatedPoints.Count; i++)
         {
-            // Vector3 pt = cloudVertices[i];
-            // if (Vector3.Distance(cloudNormals[i], cloudNormal) < epsilon)
-            // {
-            //     normalsPerFace.Add(cloudNormals[i] * pt.magnitude);
-            // }
-            // else
-            // {
-            //     Vector3 normalAverage = normalsPerFace[0];
-            //     if (normalsPerFace.Count > 1)
-            //     {
-            //         for (int j = 1; j < normalsPerFace.Count; j++)
-            //         {
-            //             normalAverage += normalsPerFace[j];
-            //         }
-
-            //         normalAverage /= normalsPerFace.Count;
-            //     }
-
             foreach (GameObject blockSelection in _blockSelections)
             {
                 MeshCollider collider = blockSelection.GetComponent<MeshCollider>();
@@ -70,79 +48,40 @@ public class SelectPointsController : MonoBehaviour
                     selectedPoints.Add(ptGlobal);
                 }
             }
-
-            // cloudNormal = cloudNormals[i];
-            // normalsPerFace.Clear();
-            // normalsPerFace.Add(cloudNormals[i] * pt.magnitude);
-            // }
-
         }
         CalculatePlane(selectedPoints);
-        // CalculatePlaneByAvg(selectedPoints);
-        Debug.Log("selection");
-    }
-
-    private void CalculatePlaneByAvg(List<Vector3> points)
-    {
-        int bucketSize = (int)math.floor(points.Count / 3);
-        Vector3 avg1 = points[0];
-        Vector3 avg2 = points[bucketSize];
-        Vector3 avg3 = points[2 * bucketSize];
-
-        for (int i = 1; i < bucketSize; i++)
-        {
-            avg1 += points[i];
-            avg2 += points[i + bucketSize];
-            avg3 += points[i + 2 * bucketSize];
-        }
-
-        avg1 /= bucketSize;
-        avg2 /= bucketSize;
-        avg3 /= bucketSize;
-
-        Plane plane = new(avg1, avg2, avg3);
-        Debug.Log(plane);
-
-        _debugPoints.Clear();
-        for (int i = 0; i < 200; i++)
-        {
-            Vector3 randomPoint = new(UnityEngine.Random.Range(-8f, 8f), UnityEngine.Random.Range(-8f, 8f), UnityEngine.Random.Range(-8f, 8f));
-            _debugPoints.Add(ProjectPointOntoPlane(plane, randomPoint));
-        }
-    }
-
-    private void testSvd()
-    {
-        Matrix<float> G = Matrix<float>.Build.Dense(4, 4);
-        Vector<float> point = Vector<float>.Build.Dense(new float[] { 2.3f, 3.35f, 6.1f, 1 });
-        G.SetRow(0, point);
-        point = Vector<float>.Build.Dense(new float[] { 4.3f, 3.4f, 2.9f, 1 });
-        G.SetRow(1, point);
-        point = Vector<float>.Build.Dense(new float[] { 8.3f, 3.45f, 3.12f, 1 });
-        G.SetRow(2, point);
-        point = Vector<float>.Build.Dense(new float[] { 2.3f, 3.3f, 4.05f, 1 });
-        G.SetRow(3, point);
-
-        Svd<float> svd = G.Svd(true);
-        Matrix<float> vt = svd.VT;
-        Vector<float> planeEq = vt.Row(3);
-        Debug.Log(planeEq);
     }
 
     private void CalculatePlane(List<Vector3> points)
     {
-        // testSvd();
-
         if (points.Count < 3)
         {
             Debug.Log("not enough points to calculate plane");
             return;
         }
 
+        if (points.Count > maxNumberOfPoints)
+        {
+            double dropChance = maxNumberOfPoints / (double)points.Count;
+            System.Random rnd = new();
+            List<Vector3> newPoints = new();
+            foreach (Vector3 v in points)
+            {
+                if (rnd.NextDouble() < dropChance)
+                {
+                    newPoints.Add(v);
+                }
+
+                if (newPoints.Count >= maxNumberOfPoints) break;
+            }
+            points = newPoints;
+        }
+
         Matrix<float> G = Matrix<float>.Build.Dense(points.Count, 4);
         for (int i = 0; i < points.Count; i++)
         {
-            Vector3 pt = points[i].normalized;
+            // Vector3 pt = points[i].normalized;
+            Vector3 pt = points[i];
             Vector<float> point = Vector<float>.Build.Dense(new float[] { pt.x, pt.y, pt.z, 1 });
             G.SetRow(i, point);
         }
@@ -167,6 +106,33 @@ public class SelectPointsController : MonoBehaviour
             Vector3 randomPoint = new(UnityEngine.Random.Range(-8f, 8f), UnityEngine.Random.Range(-8f, 8f), UnityEngine.Random.Range(-8f, 8f));
             _debugPoints.Add(ProjectPointOntoPlane(plane, randomPoint));
         }
+
+        Vector<float> colAvg = G.ColumnSums();
+        colAvg /= G.RowCount;
+        Vector3 pointAvg = new(colAvg[0], colAvg[1], colAvg[2]);
+        SpawnPlane(ProjectPointOntoPlane(plane, pointAvg), planeNormal);
+    }
+
+    public GameObject SpawnPlane(Vector3 pos, Vector3 normal)
+    {
+        GameObject spawnedObject = Instantiate(spawnPrefab, pos, Quaternion.identity);
+        spawnedObject.transform.parent = this.transform;
+        spawnedObject.transform.LookAt(spawnedObject.transform.position - normal);
+
+        _programController.RegisterQuad(spawnedObject);
+        return spawnedObject;
+    }
+
+    public void LoadPlanes(List<Vector3[]> planes)
+    {
+        foreach (Vector3[] data in planes)
+        {
+            GameObject spawnedObject = SpawnPlane(data[0], data[1]);
+            Vector3[] vertexData = new Vector3[data.Length - 2];
+            Array.Copy(data, 2, vertexData, 0, data.Length - 2);
+
+            spawnedObject.GetComponent<FittedQuad>().SetAnchors(vertexData);
+        }
     }
 
     private Vector3 ProjectPointOntoPlane(Plane plane, Vector3 point)
@@ -193,16 +159,35 @@ public class SelectPointsController : MonoBehaviour
 
     public void ClearSelection()
     {
+        foreach (GameObject selection in _blockSelections)
+        {
+            Destroy(selection);
+        }
         _blockSelections.Clear();
     }
 
     public void RemoveSelection(GameObject selection)
     {
         _blockSelections.Remove(selection);
+        Destroy(selection);
     }
 
     // Start is called before the first frame update
     void Start()
+    {
+        CalculateRealPoints();
+        EditState.Instance.RegisterListener(EditChangeHandler);
+    }
+
+    private void EditChangeHandler()
+    {
+        // if (EditState.Instance.ActiveEditState != EditState.EditType.Select)
+        // {
+        //     ClearSelection();
+        // }
+    }
+
+    private void CalculateRealPoints()
     {
         _recalculatedPoints = new();
 
@@ -216,7 +201,7 @@ public class SelectPointsController : MonoBehaviour
         {
             cloudNormals[0] * pointCloudMesh.vertices[0].magnitude
         };
-        for (int i = 1; i < pointCloudMesh.vertices.Length; i++)
+        for (int i = 1; i < cloudVertices.Length; i++)
         {
             Vector3 pt = cloudVertices[i];
             float distance = Vector3.Distance(cloudNormals[i], cloudNormal);
@@ -246,10 +231,4 @@ public class SelectPointsController : MonoBehaviour
 
         }
     }
-
-    // Update is called once per frame
-    void Update()
-    {
-
-    }
 }
diff --git a/Assets/Scrips/Utils/Save.cs b/Assets/Scrips/Utils/Save.cs
index 2809367..f91762c 100644
--- a/Assets/Scrips/Utils/Save.cs
+++ b/Assets/Scrips/Utils/Save.cs
@@ -5,7 +5,12 @@ using UnityEngine;
 [System.Serializable]
 public class Save
 {
+    // [position, rotation]
     public Vector3[] UserTransform = new Vector3[2];
+    // [position, rotation, vertices...]
     public List<Vector3[]> Blocks = new();
+    // [local position]
     public List<Vector3[]> BlockAnchors = new();
+    // [position, normal, vertices...]
+    public List<Vector3[]> Quads = new();
 }
diff --git a/Assets/Settings/Project Configuration/SampleScene.scenetemplate b/Assets/Settings/Project Configuration/SampleScene.scenetemplate
index c5491cd..707e8a0 100644
--- a/Assets/Settings/Project Configuration/SampleScene.scenetemplate	
+++ b/Assets/Settings/Project Configuration/SampleScene.scenetemplate	
@@ -138,10 +138,12 @@ MonoBehaviour:
     instantiationMode: 0
   - dependency: {fileID: 8300000, guid: d14b106713a74b448bcab90869f1706e, type: 3}
     instantiationMode: 1
-  - dependency: {fileID: 2800000, guid: 976e28fd05dde91429107e5f857f3c89, type: 3}
+  - dependency: {fileID: 2123888734268900958, guid: acca7dbb0ace2e64c84057ecdceb3e15, type: 3}
     instantiationMode: 0
   - dependency: {fileID: 6275872155353212687, guid: 8b983c20181b75e489cd0b88a44c68f8, type: 3}
     instantiationMode: 0
+  - dependency: {fileID: 2800000, guid: 976e28fd05dde91429107e5f857f3c89, type: 3}
+    instantiationMode: 0
   - dependency: {fileID: 7313654230448209575, guid: 895f6f3c2d334633b5800312285058d2, type: 3}
     instantiationMode: 0
   - dependency: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
@@ -288,6 +290,8 @@ MonoBehaviour:
     instantiationMode: 0
   - dependency: {fileID: 4125421792874400280, guid: 27024f5809f4a4347b9cd7f26a1bdf93, type: 3}
     instantiationMode: 0
+  - dependency: {fileID: 2100000, guid: c07dd69158c788946aa2d944960f264d, type: 2}
+    instantiationMode: 0
   - dependency: {fileID: 2800000, guid: a89d91b09ecb0164ab9d892915bfa299, type: 3}
     instantiationMode: 0
   - dependency: {fileID: 2179057468902719980, guid: f47ad6ac315a3ea428b59e2cac6f2a2e, type: 3}
@@ -316,6 +320,8 @@ MonoBehaviour:
     instantiationMode: 0
   - dependency: {fileID: 2800000, guid: 65d31ca9600c4654e886aa7bab36e94b, type: 3}
     instantiationMode: 0
+  - dependency: {fileID: 8138111287210361984, guid: 5d21b49507ba4104f983122e372d6595, type: 3}
+    instantiationMode: 0
   - dependency: {fileID: 2100000, guid: f5cd77343d6ca1949b1d2d7511848832, type: 2}
     instantiationMode: 0
   - dependency: {fileID: 2100000, guid: 456e2158124c0aa40bf9eceb850dfdb4, type: 2}
@@ -326,10 +332,12 @@ MonoBehaviour:
     instantiationMode: 0
   - dependency: {fileID: 2100000, guid: 08d0ccc4a501e6645be0c3ee36d0cd20, type: 2}
     instantiationMode: 0
-  - dependency: {fileID: 2800000, guid: 9d65b1540bd55dc4ab02643e09524306, type: 3}
+  - dependency: {fileID: 2800000, guid: 1f7e5f686df183d4ca1c96949b4e83c1, type: 3}
     instantiationMode: 0
   - dependency: {fileID: 8134302614855669005, guid: c4a645c929982ea41a52b5037ee7d94d, type: 3}
     instantiationMode: 0
+  - dependency: {fileID: 2800000, guid: 9d65b1540bd55dc4ab02643e09524306, type: 3}
+    instantiationMode: 0
   - dependency: {fileID: 2800000, guid: de0113b98aad70a419960e61a7d8d6ef, type: 3}
     instantiationMode: 0
   - dependency: {fileID: 2800000, guid: 89c4d70ec8a71624f9f1ea880312974b, type: 3}
diff --git a/Assets/VRTemplateAssets/Prefabs/UI/List Item Button.prefab b/Assets/VRTemplateAssets/Prefabs/UI/List Item Button.prefab
index 8bd1f69..8b27e6c 100644
--- a/Assets/VRTemplateAssets/Prefabs/UI/List Item Button.prefab	
+++ b/Assets/VRTemplateAssets/Prefabs/UI/List Item Button.prefab	
@@ -31,7 +31,6 @@ RectTransform:
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 5251477148904607974}
-  m_RootOrder: 1
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 1, y: 1}
@@ -69,8 +68,7 @@ MonoBehaviour:
   m_text: Text Button
   m_isRightToLeft: 0
   m_fontAsset: {fileID: 11400000, guid: fbb7c6a04be6d8341934b839f24b42e1, type: 2}
-  m_sharedMaterial: {fileID: 4687939059374929122, guid: fbb7c6a04be6d8341934b839f24b42e1,
-    type: 2}
+  m_sharedMaterial: {fileID: 4687939059374929122, guid: fbb7c6a04be6d8341934b839f24b42e1, type: 2}
   m_fontSharedMaterials: []
   m_fontMaterial: {fileID: 0}
   m_fontMaterials: []
@@ -168,7 +166,6 @@ RectTransform:
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 5251477148904607974}
-  m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0.5, y: 0.5}
   m_AnchorMax: {x: 0.5, y: 0.5}
@@ -258,7 +255,6 @@ RectTransform:
   - {fileID: 2397425259952709509}
   - {fileID: 1248386867110803025}
   m_Father: {fileID: 0}
-  m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 1}
   m_AnchorMax: {x: 0, y: 1}
@@ -304,7 +300,6 @@ RectTransform:
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 2397425259038431700}
-  m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0.5}
   m_AnchorMax: {x: 0.3333, y: 0.5}
@@ -342,8 +337,7 @@ MonoBehaviour:
   m_text: Button
   m_isRightToLeft: 0
   m_fontAsset: {fileID: 11400000, guid: f675742eaf9c20a4f909d78ee7a14fed, type: 2}
-  m_sharedMaterial: {fileID: 4687939059374929122, guid: f675742eaf9c20a4f909d78ee7a14fed,
-    type: 2}
+  m_sharedMaterial: {fileID: 4687939059374929122, guid: f675742eaf9c20a4f909d78ee7a14fed, type: 2}
   m_fontSharedMaterials: []
   m_fontMaterial: {fileID: 0}
   m_fontMaterials: []
@@ -446,7 +440,6 @@ RectTransform:
   - {fileID: 6239908032003856518}
   - {fileID: 5251477148904607974}
   m_Father: {fileID: 2397425259038431700}
-  m_RootOrder: 1
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0.333, y: 0.5}
   m_AnchorMax: {x: 1, y: 0.5}
@@ -482,10 +475,10 @@ MonoBehaviour:
     m_SelectOnRight: {fileID: 0}
   m_Transition: 1
   m_Colors:
-    m_NormalColor: {r: 0.18039216, g: 0.18039216, b: 0.18039216, a: 1}
-    m_HighlightedColor: {r: 0.13333334, g: 0.13333334, b: 0.13333334, a: 1}
-    m_PressedColor: {r: 0.38431373, g: 0.38431373, b: 0.38431373, a: 1}
-    m_SelectedColor: {r: 0.1254902, g: 0.5882353, b: 0.9529412, a: 1}
+    m_NormalColor: {r: 0.13330276, g: 0.09607513, b: 0.16037738, a: 1}
+    m_HighlightedColor: {r: 0.101517335, g: 0.06167676, b: 0.13207549, a: 1}
+    m_PressedColor: {r: 0.4995645, g: 0.33641866, b: 0.5283019, a: 1}
+    m_SelectedColor: {r: 0.595938, g: 0.368325, b: 0.8396226, a: 1}
     m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
     m_ColorMultiplier: 1
     m_FadeDuration: 0.1
@@ -623,8 +616,7 @@ MonoBehaviour:
           m_MethodName: PlayOneShot
           m_Mode: 2
           m_Arguments:
-            m_ObjectArgument: {fileID: 8300000, guid: b319a2e4ff8f5d840b82d8635b645d22,
-              type: 3}
+            m_ObjectArgument: {fileID: 8300000, guid: b319a2e4ff8f5d840b82d8635b645d22, type: 3}
             m_ObjectArgumentAssemblyTypeName: UnityEngine.AudioClip, UnityEngine
             m_IntArgument: 0
             m_FloatArgument: 0
@@ -640,8 +632,7 @@ MonoBehaviour:
           m_MethodName: PlayOneShot
           m_Mode: 2
           m_Arguments:
-            m_ObjectArgument: {fileID: 8300000, guid: d14b106713a74b448bcab90869f1706e,
-              type: 3}
+            m_ObjectArgument: {fileID: 8300000, guid: d14b106713a74b448bcab90869f1706e, type: 3}
             m_ObjectArgumentAssemblyTypeName: UnityEngine.AudioClip, UnityEngine
             m_IntArgument: 0
             m_FloatArgument: 0
@@ -725,7 +716,6 @@ RectTransform:
   - {fileID: 3052109201295664413}
   - {fileID: 4505963342823614472}
   m_Father: {fileID: 1248386867110803025}
-  m_RootOrder: 1
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 1, y: 1}
@@ -814,7 +804,6 @@ RectTransform:
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 1248386867110803025}
-  m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 1, y: 1}
diff --git a/Assets/VRTemplateAssets/Prefabs/UI/Spatial Panel Scroll.prefab b/Assets/VRTemplateAssets/Prefabs/UI/Spatial Panel Scroll.prefab
index 2709113..f872697 100644
--- a/Assets/VRTemplateAssets/Prefabs/UI/Spatial Panel Scroll.prefab	
+++ b/Assets/VRTemplateAssets/Prefabs/UI/Spatial Panel Scroll.prefab	
@@ -112,7 +112,7 @@ MonoBehaviour:
   m_Name: 
   m_EditorClassIdentifier: 
   m_Material: {fileID: 0}
-  m_Color: {r: 0, g: 0.6, b: 1, a: 1}
+  m_Color: {r: 0.589921, g: 0, b: 1, a: 1}
   m_RaycastTarget: 0
   m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
   m_Maskable: 1
@@ -678,7 +678,7 @@ MonoBehaviour:
   m_Name: 
   m_EditorClassIdentifier: 
   m_Material: {fileID: 0}
-  m_Color: {r: 0, g: 0, b: 0, a: 0.9019608}
+  m_Color: {r: 0.038697746, g: 0.017132428, b: 0.066037714, a: 0.9019608}
   m_RaycastTarget: 1
   m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
   m_Maskable: 1
@@ -911,8 +911,8 @@ MonoBehaviour:
   m_TargetGraphic: {fileID: 6065537971879471885}
   m_HandleRect: {fileID: 6233600418098557749}
   m_Direction: 0
-  m_Value: 1
-  m_Size: 0.99999994
+  m_Value: 0
+  m_Size: 1
   m_NumberOfSteps: 0
   m_OnValueChanged:
     m_PersistentCalls:
@@ -1007,7 +1007,7 @@ MonoBehaviour:
   m_FallbackScreenDPI: 96
   m_DefaultSpriteDPI: 96
   m_DynamicPixelsPerUnit: 1
-  m_PresetInfoIsWorld: 1
+  m_PresetInfoIsWorld: 0
 --- !u!114 &3181781652842806179
 MonoBehaviour:
   m_ObjectHideFlags: 0
-- 
GitLab