From abaecb53bee24e77322f6d1fbe7055291cdc5c7b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tobias=20Sch=C3=B6ner?= <tobias.stonehead@gmail.com>
Date: Thu, 12 Jan 2023 23:33:47 +0100
Subject: [PATCH] feat: facts can now be marked as favorite

Facts can be marked as favorite on middle mouse button click.
Favorised facts are indicaded by a yellow star in the top right corner.
Other fact displays will be updated accordingly and newly spawned fact displays will show the favorite star correctly.
---
 Assets/Images/Star.png                        |   3 +
 Assets/Images/Star.png.meta                   | 122 ++++++++++++++++++
 .../Prefabs/UI/Facts/FavoriteStar.prefab      |  78 +++++++++++
 .../Prefabs/UI/Facts/FavoriteStar.prefab.meta |   7 +
 .../UI/Icons/FactIcons/DisplayAngle.prefab    |  16 +++
 .../FactIcons/DisplayAngleCircleLine.prefab   |  16 +++
 .../Icons/FactIcons/DisplayAreaCircle.prefab  |  16 +++
 .../UI/Icons/FactIcons/DisplayCircle.prefab   |  16 +++
 .../Icons/FactIcons/DisplayConeVolume.prefab  |  16 +++
 .../FactIcons/DisplayCylinderVolume.prefab    |  16 +++
 .../UI/Icons/FactIcons/DisplayDistance.prefab |  16 +++
 .../FactIcons/DisplayEqualCircles.prefab      |  16 +++
 .../UI/Icons/FactIcons/DisplayLine.prefab     |  16 +++
 .../UI/Icons/FactIcons/DisplayOnCircle.prefab |  16 +++
 .../UI/Icons/FactIcons/DisplayOnLine.prefab   |  16 +++
 .../DisplayOrthogonalCircleLine.prefab        |  16 +++
 .../FactIcons/DisplayParallelLine.prefab      |  16 +++
 .../UI/Icons/FactIcons/DisplayPoint.prefab    |  16 +++
 .../UI/Icons/FactIcons/DisplayRadius.prefab   |  16 +++
 .../FactIcons/DisplayRectangleFact.prefab     |  16 +++
 .../Icons/FactIcons/DisplayRightAngle.prefab  |  16 +++
 .../UI/Icons/FactIcons/DisplayTestFact.prefab |  16 +++
 .../DisplayTruncatedConeVolume.prefab         |  16 +++
 .../FactIcons/DisplayUnequalCircles.prefab    |  16 +++
 .../UI/FactExplorer/FactFavorisation.cs       |  84 ++++++++++++
 .../UI/FactExplorer/FactFavorisation.cs.meta  |  13 ++
 26 files changed, 627 insertions(+)
 create mode 100644 Assets/Images/Star.png
 create mode 100644 Assets/Images/Star.png.meta
 create mode 100644 Assets/Resources/Prefabs/UI/Facts/FavoriteStar.prefab
 create mode 100644 Assets/Resources/Prefabs/UI/Facts/FavoriteStar.prefab.meta
 create mode 100644 Assets/Scripts/UI/FactExplorer/FactFavorisation.cs
 create mode 100644 Assets/Scripts/UI/FactExplorer/FactFavorisation.cs.meta

diff --git a/Assets/Images/Star.png b/Assets/Images/Star.png
new file mode 100644
index 00000000..b06e2097
--- /dev/null
+++ b/Assets/Images/Star.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:57a99e41bec29fa8b0546fd92d9776f2672c23c627ff6b221f4cb505e3f160a0
+size 2468
diff --git a/Assets/Images/Star.png.meta b/Assets/Images/Star.png.meta
new file mode 100644
index 00000000..8a57dbaa
--- /dev/null
+++ b/Assets/Images/Star.png.meta
@@ -0,0 +1,122 @@
+fileFormatVersion: 2
+guid: 01aa7de3d8ed63949bbf69e3b492abfa
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 11
+  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
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  ignoreMasterTextureLimit: 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: 128
+  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
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 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
+    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
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    nameFileIdTable: {}
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Resources/Prefabs/UI/Facts/FavoriteStar.prefab b/Assets/Resources/Prefabs/UI/Facts/FavoriteStar.prefab
new file mode 100644
index 00000000..4e60f759
--- /dev/null
+++ b/Assets/Resources/Prefabs/UI/Facts/FavoriteStar.prefab
@@ -0,0 +1,78 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &2810062559722195091
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1682989479718840691}
+  - component: {fileID: 7513145796292958282}
+  - component: {fileID: 8269486105486065185}
+  m_Layer: 0
+  m_Name: FavoriteStar
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &1682989479718840691
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2810062559722195091}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 1, y: 1}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 10, y: 10}
+  m_SizeDelta: {x: 30, y: 30}
+  m_Pivot: {x: 1, y: 1}
+--- !u!222 &7513145796292958282
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2810062559722195091}
+  m_CullTransparentMesh: 1
+--- !u!114 &8269486105486065185
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2810062559722195091}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0.98039216, g: 0.8608746, b: 0, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 21300000, guid: 01aa7de3d8ed63949bbf69e3b492abfa, type: 3}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
diff --git a/Assets/Resources/Prefabs/UI/Facts/FavoriteStar.prefab.meta b/Assets/Resources/Prefabs/UI/Facts/FavoriteStar.prefab.meta
new file mode 100644
index 00000000..91edf0b0
--- /dev/null
+++ b/Assets/Resources/Prefabs/UI/Facts/FavoriteStar.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 0b34469213856774980670de85a7d4a0
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayAngle.prefab b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayAngle.prefab
index 0d415369..e96d0eac 100644
--- a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayAngle.prefab
+++ b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayAngle.prefab
@@ -421,6 +421,7 @@ GameObject:
   - component: {fileID: 114522817932931646}
   - component: {fileID: 3011926265969909947}
   - component: {fileID: 3573135846559875297}
+  - component: {fileID: -6877371120973083636}
   m_Layer: 5
   m_Name: DisplayAngle
   m_TagString: Untagged
@@ -553,3 +554,18 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   factExplorerPrefab: {fileID: 5592893003942163674, guid: ff7415df1aac19c41a7855516a108a8a,
     type: 3}
+--- !u!114 &-6877371120973083636
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6643637775379894484}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 88f8f222eb0a4a246908bde097a8726e, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  isFavourite: 0
+  favoriteDisplayPrefab: {fileID: 2810062559722195091, guid: 0b34469213856774980670de85a7d4a0,
+    type: 3}
diff --git a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayAngleCircleLine.prefab b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayAngleCircleLine.prefab
index b93d84db..3e06c02a 100644
--- a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayAngleCircleLine.prefab
+++ b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayAngleCircleLine.prefab
@@ -151,6 +151,7 @@ GameObject:
   - component: {fileID: 7571158064837864710}
   - component: {fileID: 5437783688132341522}
   - component: {fileID: 7217286308176857857}
+  - component: {fileID: -1727938665847958892}
   m_Layer: 5
   m_Name: DisplayAngleCircleLine
   m_TagString: Untagged
@@ -282,6 +283,21 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   factExplorerPrefab: {fileID: 5592893003942163674, guid: ff7415df1aac19c41a7855516a108a8a,
     type: 3}
+--- !u!114 &-1727938665847958892
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4902928549420802332}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 88f8f222eb0a4a246908bde097a8726e, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  isFavourite: 0
+  favoriteDisplayPrefab: {fileID: 2810062559722195091, guid: 0b34469213856774980670de85a7d4a0,
+    type: 3}
 --- !u!1 &7854085605173747270
 GameObject:
   m_ObjectHideFlags: 0
diff --git a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayAreaCircle.prefab b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayAreaCircle.prefab
index e6a40983..786ac03b 100644
--- a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayAreaCircle.prefab
+++ b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayAreaCircle.prefab
@@ -151,6 +151,7 @@ GameObject:
   - component: {fileID: 6928182635216917115}
   - component: {fileID: 6811931286641226162}
   - component: {fileID: 4444078412922319222}
+  - component: {fileID: 3337022138894200663}
   m_Layer: 5
   m_Name: DisplayAreaCircle
   m_TagString: Untagged
@@ -281,3 +282,18 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   factExplorerPrefab: {fileID: 5592893003942163674, guid: ff7415df1aac19c41a7855516a108a8a,
     type: 3}
+--- !u!114 &3337022138894200663
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7016901710118546043}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 88f8f222eb0a4a246908bde097a8726e, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  isFavourite: 0
+  favoriteDisplayPrefab: {fileID: 2810062559722195091, guid: 0b34469213856774980670de85a7d4a0,
+    type: 3}
diff --git a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayCircle.prefab b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayCircle.prefab
index 942f86f8..06f6962d 100644
--- a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayCircle.prefab
+++ b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayCircle.prefab
@@ -151,6 +151,7 @@ GameObject:
   - component: {fileID: 3896398116007953758}
   - component: {fileID: 1602337205070616824}
   - component: {fileID: -8545268462245846538}
+  - component: {fileID: 9193188298529412557}
   m_Layer: 5
   m_Name: DisplayCircle
   m_TagString: Untagged
@@ -281,3 +282,18 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   factExplorerPrefab: {fileID: 5592893003942163674, guid: ff7415df1aac19c41a7855516a108a8a,
     type: 3}
+--- !u!114 &9193188298529412557
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6636443472981757786}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 88f8f222eb0a4a246908bde097a8726e, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  isFavourite: 0
+  favoriteDisplayPrefab: {fileID: 2810062559722195091, guid: 0b34469213856774980670de85a7d4a0,
+    type: 3}
diff --git a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayConeVolume.prefab b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayConeVolume.prefab
index 5689d1ac..6badc337 100644
--- a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayConeVolume.prefab
+++ b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayConeVolume.prefab
@@ -151,6 +151,7 @@ GameObject:
   - component: {fileID: 4263320076605886561}
   - component: {fileID: 2650353447837694094}
   - component: {fileID: -1328819392998620038}
+  - component: {fileID: -6663813448318375771}
   m_Layer: 5
   m_Name: DisplayConeVolume
   m_TagString: Untagged
@@ -281,3 +282,18 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   factExplorerPrefab: {fileID: 5592893003942163674, guid: ff7415df1aac19c41a7855516a108a8a,
     type: 3}
+--- !u!114 &-6663813448318375771
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2523593828849809055}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 88f8f222eb0a4a246908bde097a8726e, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  isFavourite: 0
+  favoriteDisplayPrefab: {fileID: 2810062559722195091, guid: 0b34469213856774980670de85a7d4a0,
+    type: 3}
diff --git a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayCylinderVolume.prefab b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayCylinderVolume.prefab
index 864c2e31..5c52bc9c 100644
--- a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayCylinderVolume.prefab
+++ b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayCylinderVolume.prefab
@@ -151,6 +151,7 @@ GameObject:
   - component: {fileID: -7338472263132780475}
   - component: {fileID: 2130710490396271644}
   - component: {fileID: 8056345640559627384}
+  - component: {fileID: 4871256835944773533}
   m_Layer: 5
   m_Name: DisplayCylinderVolume
   m_TagString: Untagged
@@ -281,3 +282,18 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   factExplorerPrefab: {fileID: 5592893003942163674, guid: ff7415df1aac19c41a7855516a108a8a,
     type: 3}
+--- !u!114 &4871256835944773533
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5287418535931939099}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 88f8f222eb0a4a246908bde097a8726e, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  isFavourite: 0
+  favoriteDisplayPrefab: {fileID: 2810062559722195091, guid: 0b34469213856774980670de85a7d4a0,
+    type: 3}
diff --git a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayDistance.prefab b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayDistance.prefab
index fb98003f..770ef544 100644
--- a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayDistance.prefab
+++ b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayDistance.prefab
@@ -16,6 +16,7 @@ GameObject:
   - component: {fileID: 2785940634305866798}
   - component: {fileID: 114476148939060428}
   - component: {fileID: 6775995842619458444}
+  - component: {fileID: 6595881491766313357}
   m_Layer: 5
   m_Name: DisplayDistance
   m_TagString: Untagged
@@ -147,6 +148,21 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   factExplorerPrefab: {fileID: 5592893003942163674, guid: ff7415df1aac19c41a7855516a108a8a,
     type: 3}
+--- !u!114 &6595881491766313357
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4221381813544557775}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 88f8f222eb0a4a246908bde097a8726e, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  isFavourite: 0
+  favoriteDisplayPrefab: {fileID: 2810062559722195091, guid: 0b34469213856774980670de85a7d4a0,
+    type: 3}
 --- !u!1 &6379254425133528592
 GameObject:
   m_ObjectHideFlags: 0
diff --git a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayEqualCircles.prefab b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayEqualCircles.prefab
index 2cb730c6..ecd96e00 100644
--- a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayEqualCircles.prefab
+++ b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayEqualCircles.prefab
@@ -286,6 +286,7 @@ GameObject:
   - component: {fileID: 6805943141472748426}
   - component: {fileID: 4430445033801091530}
   - component: {fileID: -8548468547709009186}
+  - component: {fileID: -6007190389148885436}
   m_Layer: 5
   m_Name: DisplayEqualCircles
   m_TagString: Untagged
@@ -417,3 +418,18 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   factExplorerPrefab: {fileID: 5592893003942163674, guid: ff7415df1aac19c41a7855516a108a8a,
     type: 3}
+--- !u!114 &-6007190389148885436
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7523305359074541435}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 88f8f222eb0a4a246908bde097a8726e, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  isFavourite: 0
+  favoriteDisplayPrefab: {fileID: 2810062559722195091, guid: 0b34469213856774980670de85a7d4a0,
+    type: 3}
diff --git a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayLine.prefab b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayLine.prefab
index 080cb239..5afe4d41 100644
--- a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayLine.prefab
+++ b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayLine.prefab
@@ -151,6 +151,7 @@ GameObject:
   - component: {fileID: 3914868910838030883}
   - component: {fileID: 7215917396402112958}
   - component: {fileID: 7981125183230312854}
+  - component: {fileID: -4205691289957159684}
   m_Layer: 5
   m_Name: DisplayLine
   m_TagString: Untagged
@@ -281,3 +282,18 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   factExplorerPrefab: {fileID: 5592893003942163674, guid: ff7415df1aac19c41a7855516a108a8a,
     type: 3}
+--- !u!114 &-4205691289957159684
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7510387096843212865}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 88f8f222eb0a4a246908bde097a8726e, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  isFavourite: 0
+  favoriteDisplayPrefab: {fileID: 2810062559722195091, guid: 0b34469213856774980670de85a7d4a0,
+    type: 3}
diff --git a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayOnCircle.prefab b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayOnCircle.prefab
index 52a30343..f4498193 100644
--- a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayOnCircle.prefab
+++ b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayOnCircle.prefab
@@ -16,6 +16,7 @@ GameObject:
   - component: {fileID: 6441113378387087702}
   - component: {fileID: 9073127243885313005}
   - component: {fileID: -5954085419867829670}
+  - component: {fileID: 5980699288881757793}
   m_Layer: 5
   m_Name: DisplayOnCircle
   m_TagString: Untagged
@@ -147,6 +148,21 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   factExplorerPrefab: {fileID: 5592893003942163674, guid: ff7415df1aac19c41a7855516a108a8a,
     type: 3}
+--- !u!114 &5980699288881757793
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2115817999818309900}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 88f8f222eb0a4a246908bde097a8726e, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  isFavourite: 0
+  favoriteDisplayPrefab: {fileID: 2810062559722195091, guid: 0b34469213856774980670de85a7d4a0,
+    type: 3}
 --- !u!1 &5265014618439724607
 GameObject:
   m_ObjectHideFlags: 0
diff --git a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayOnLine.prefab b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayOnLine.prefab
index 555b8b19..d716e01f 100644
--- a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayOnLine.prefab
+++ b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayOnLine.prefab
@@ -286,6 +286,7 @@ GameObject:
   - component: {fileID: 979255380955983068}
   - component: {fileID: 6910630412647778113}
   - component: {fileID: -4875952770271437981}
+  - component: {fileID: 3281836877418813895}
   m_Layer: 5
   m_Name: DisplayOnLine
   m_TagString: Untagged
@@ -417,3 +418,18 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   factExplorerPrefab: {fileID: 5592893003942163674, guid: ff7415df1aac19c41a7855516a108a8a,
     type: 3}
+--- !u!114 &3281836877418813895
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6050914136827205310}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 88f8f222eb0a4a246908bde097a8726e, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  isFavourite: 0
+  favoriteDisplayPrefab: {fileID: 2810062559722195091, guid: 0b34469213856774980670de85a7d4a0,
+    type: 3}
diff --git a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayOrthogonalCircleLine.prefab b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayOrthogonalCircleLine.prefab
index dccfcd05..249206c5 100644
--- a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayOrthogonalCircleLine.prefab
+++ b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayOrthogonalCircleLine.prefab
@@ -286,6 +286,7 @@ GameObject:
   - component: {fileID: 8593937097866258120}
   - component: {fileID: 930378118197085978}
   - component: {fileID: -4766878545130701298}
+  - component: {fileID: 4466550412761522739}
   m_Layer: 5
   m_Name: DisplayOrthogonalCircleLine
   m_TagString: Untagged
@@ -417,3 +418,18 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   factExplorerPrefab: {fileID: 5592893003942163674, guid: ff7415df1aac19c41a7855516a108a8a,
     type: 3}
+--- !u!114 &4466550412761522739
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8554350198830106250}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 88f8f222eb0a4a246908bde097a8726e, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  isFavourite: 0
+  favoriteDisplayPrefab: {fileID: 2810062559722195091, guid: 0b34469213856774980670de85a7d4a0,
+    type: 3}
diff --git a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayParallelLine.prefab b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayParallelLine.prefab
index 3f39a325..d8f691b1 100644
--- a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayParallelLine.prefab
+++ b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayParallelLine.prefab
@@ -151,6 +151,7 @@ GameObject:
   - component: {fileID: 3914868910838030883}
   - component: {fileID: 7215917396402112958}
   - component: {fileID: 41121149337675280}
+  - component: {fileID: -8573552533908309515}
   m_Layer: 5
   m_Name: DisplayParallelLine
   m_TagString: Untagged
@@ -282,6 +283,21 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   factExplorerPrefab: {fileID: 5592893003942163674, guid: ff7415df1aac19c41a7855516a108a8a,
     type: 3}
+--- !u!114 &-8573552533908309515
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7510387096843212865}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 88f8f222eb0a4a246908bde097a8726e, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  isFavourite: 0
+  favoriteDisplayPrefab: {fileID: 2810062559722195091, guid: 0b34469213856774980670de85a7d4a0,
+    type: 3}
 --- !u!1 &7693994637337906468
 GameObject:
   m_ObjectHideFlags: 0
diff --git a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayPoint.prefab b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayPoint.prefab
index 5b4cba7a..313f668d 100644
--- a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayPoint.prefab
+++ b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayPoint.prefab
@@ -16,6 +16,7 @@ GameObject:
   - component: {fileID: 114132791164475416}
   - component: {fileID: 114984628052382182}
   - component: {fileID: -6287292158833946431}
+  - component: {fileID: -7957010930568868188}
   m_Layer: 5
   m_Name: DisplayPoint
   m_TagString: Untagged
@@ -146,6 +147,21 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   factExplorerPrefab: {fileID: 5592893003942163674, guid: ff7415df1aac19c41a7855516a108a8a,
     type: 3}
+--- !u!114 &-7957010930568868188
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 858001163752551619}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 88f8f222eb0a4a246908bde097a8726e, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  isFavourite: 0
+  favoriteDisplayPrefab: {fileID: 2810062559722195091, guid: 0b34469213856774980670de85a7d4a0,
+    type: 3}
 --- !u!1 &858001164857725565
 GameObject:
   m_ObjectHideFlags: 0
diff --git a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayRadius.prefab b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayRadius.prefab
index 696cb1da..8e432917 100644
--- a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayRadius.prefab
+++ b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayRadius.prefab
@@ -16,6 +16,7 @@ GameObject:
   - component: {fileID: 173279308733449335}
   - component: {fileID: 3955180868949107883}
   - component: {fileID: -497146227597533108}
+  - component: {fileID: -2247250977338064909}
   m_Layer: 5
   m_Name: DisplayRadius
   m_TagString: Untagged
@@ -146,6 +147,21 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   factExplorerPrefab: {fileID: 5592893003942163674, guid: ff7415df1aac19c41a7855516a108a8a,
     type: 3}
+--- !u!114 &-2247250977338064909
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2513701074329712390}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 88f8f222eb0a4a246908bde097a8726e, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  isFavourite: 0
+  favoriteDisplayPrefab: {fileID: 2810062559722195091, guid: 0b34469213856774980670de85a7d4a0,
+    type: 3}
 --- !u!1 &8185219527703794732
 GameObject:
   m_ObjectHideFlags: 0
diff --git a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayRectangleFact.prefab b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayRectangleFact.prefab
index 56605d31..99368671 100644
--- a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayRectangleFact.prefab
+++ b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayRectangleFact.prefab
@@ -556,6 +556,7 @@ GameObject:
   - component: {fileID: 2163234623969663275}
   - component: {fileID: 4558040300745642744}
   - component: {fileID: -1221418573146676442}
+  - component: {fileID: -4240360816424112390}
   m_Layer: 5
   m_Name: DisplayRectangleFact
   m_TagString: Untagged
@@ -689,3 +690,18 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   factExplorerPrefab: {fileID: 5592893003942163674, guid: ff7415df1aac19c41a7855516a108a8a,
     type: 3}
+--- !u!114 &-4240360816424112390
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8156936215466465834}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 88f8f222eb0a4a246908bde097a8726e, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  isFavourite: 0
+  favoriteDisplayPrefab: {fileID: 2810062559722195091, guid: 0b34469213856774980670de85a7d4a0,
+    type: 3}
diff --git a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayRightAngle.prefab b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayRightAngle.prefab
index 9a78be85..ee4bf010 100644
--- a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayRightAngle.prefab
+++ b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayRightAngle.prefab
@@ -151,6 +151,7 @@ GameObject:
   - component: {fileID: 3794236076833855767}
   - component: {fileID: 8661743446683420805}
   - component: {fileID: 4176151758276728228}
+  - component: {fileID: 493413251982980403}
   m_Layer: 5
   m_Name: DisplayRightAngle
   m_TagString: Untagged
@@ -283,6 +284,21 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   factExplorerPrefab: {fileID: 5592893003942163674, guid: ff7415df1aac19c41a7855516a108a8a,
     type: 3}
+--- !u!114 &493413251982980403
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3080888058940174091}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 88f8f222eb0a4a246908bde097a8726e, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  isFavourite: 0
+  favoriteDisplayPrefab: {fileID: 2810062559722195091, guid: 0b34469213856774980670de85a7d4a0,
+    type: 3}
 --- !u!1 &7613847065484003782
 GameObject:
   m_ObjectHideFlags: 0
diff --git a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayTestFact.prefab b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayTestFact.prefab
index 4b7af4ab..996ad404 100644
--- a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayTestFact.prefab
+++ b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayTestFact.prefab
@@ -16,6 +16,7 @@ GameObject:
   - component: {fileID: 2785454548719711828}
   - component: {fileID: 1224931104090066081}
   - component: {fileID: 7299521122061085080}
+  - component: {fileID: -7305694658926121836}
   m_Layer: 5
   m_Name: DisplayTestFact
   m_TagString: Untagged
@@ -145,3 +146,18 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   factExplorerPrefab: {fileID: 5592893003942163674, guid: ff7415df1aac19c41a7855516a108a8a,
     type: 3}
+--- !u!114 &-7305694658926121836
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2846439484187545958}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 88f8f222eb0a4a246908bde097a8726e, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  isFavourite: 0
+  favoriteDisplayPrefab: {fileID: 2810062559722195091, guid: 0b34469213856774980670de85a7d4a0,
+    type: 3}
diff --git a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayTruncatedConeVolume.prefab b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayTruncatedConeVolume.prefab
index 3f8ae469..369fc8b4 100644
--- a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayTruncatedConeVolume.prefab
+++ b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayTruncatedConeVolume.prefab
@@ -16,6 +16,7 @@ GameObject:
   - component: {fileID: 6431159876548220859}
   - component: {fileID: 4468595272332714251}
   - component: {fileID: 3888340986020047728}
+  - component: {fileID: 4076898894668230875}
   m_Layer: 5
   m_Name: DisplayTruncatedConeVolume
   m_TagString: Untagged
@@ -146,6 +147,21 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   factExplorerPrefab: {fileID: 5592893003942163674, guid: ff7415df1aac19c41a7855516a108a8a,
     type: 3}
+--- !u!114 &4076898894668230875
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4123133807278660472}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 88f8f222eb0a4a246908bde097a8726e, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  isFavourite: 0
+  favoriteDisplayPrefab: {fileID: 2810062559722195091, guid: 0b34469213856774980670de85a7d4a0,
+    type: 3}
 --- !u!1 &6234169056530260467
 GameObject:
   m_ObjectHideFlags: 0
diff --git a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayUnequalCircles.prefab b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayUnequalCircles.prefab
index 63e3d0d5..9ddddce9 100644
--- a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayUnequalCircles.prefab
+++ b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayUnequalCircles.prefab
@@ -151,6 +151,7 @@ GameObject:
   - component: {fileID: 4056140006323214235}
   - component: {fileID: -6417425987847613228}
   - component: {fileID: -6842305447839815895}
+  - component: {fileID: 638044177452029688}
   m_Layer: 5
   m_Name: DisplayUnequalCircles
   m_TagString: Untagged
@@ -282,6 +283,21 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   factExplorerPrefab: {fileID: 5592893003942163674, guid: ff7415df1aac19c41a7855516a108a8a,
     type: 3}
+--- !u!114 &638044177452029688
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5769925203401971992}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 88f8f222eb0a4a246908bde097a8726e, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  isFavourite: 0
+  favoriteDisplayPrefab: {fileID: 2810062559722195091, guid: 0b34469213856774980670de85a7d4a0,
+    type: 3}
 --- !u!1 &5984757243279669606
 GameObject:
   m_ObjectHideFlags: 0
diff --git a/Assets/Scripts/UI/FactExplorer/FactFavorisation.cs b/Assets/Scripts/UI/FactExplorer/FactFavorisation.cs
new file mode 100644
index 00000000..3de65219
--- /dev/null
+++ b/Assets/Scripts/UI/FactExplorer/FactFavorisation.cs
@@ -0,0 +1,84 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.Events;
+using UnityEngine.EventSystems;
+
+[RequireComponent(typeof(FactWrapper))]
+public class FactFavorisation : MonoBehaviour, IPointerClickHandler
+{
+    #region InspectorVariables
+    [Header("Prefabs")]
+    [SerializeField] private GameObject favoriteDisplayPrefab;
+    #endregion InspectorVariables
+
+    #region Static Variables
+    private static readonly UnityEvent<Fact, bool> ChangeFavoriteEvent = new();
+    private static readonly List<Fact> favorites = new();
+    #endregion Static Variables
+
+    #region Variables
+    private GameObject favoriteDisplay;
+    private Fact fact;
+    #endregion Variables
+
+    #region Properties
+    private bool isFavorite = false;
+    public bool IsFavorite
+    {
+        get { return isFavorite; }
+        set { ChangeFavoriteEvent.Invoke(fact, value); }
+    }
+    #endregion Properties
+
+    #region UnityMethods
+    public void OnPointerClick(PointerEventData eventData)
+    {
+        // TODO: add support for other input systems
+        if (eventData.button == PointerEventData.InputButton.Middle)
+        {
+            // write to property to invoke event
+            IsFavorite = !IsFavorite;
+
+            // update favorites list
+            if (isFavorite)
+                favorites.Add(fact);
+            else
+                favorites.Remove(fact);
+        }
+    }
+
+    private void Start()
+    {
+        fact = transform.GetComponent<FactWrapper>().fact;
+        ChangeFavoriteEvent.AddListener(OnFavoriteChange);
+
+        // check if fact is currenty a favorite
+        if (favorites.Contains(fact))
+        {
+            isFavorite = true;
+            UpdateDisplay();
+        }  
+    }
+    #endregion UnityMethods
+
+    #region Implementation
+    private void OnFavoriteChange(Fact changedFact, bool isFavourite)
+    {
+        if (fact == changedFact)
+        {
+            this.isFavorite = isFavourite;
+            UpdateDisplay();
+        }
+    }
+
+    private void UpdateDisplay()
+    {
+        if (!isFavorite)
+            Destroy(favoriteDisplay);
+        else
+            if (!favoriteDisplay)
+                favoriteDisplay = Instantiate(favoriteDisplayPrefab, transform);
+    }
+    #endregion Implementation
+}
diff --git a/Assets/Scripts/UI/FactExplorer/FactFavorisation.cs.meta b/Assets/Scripts/UI/FactExplorer/FactFavorisation.cs.meta
new file mode 100644
index 00000000..a0d2b6f5
--- /dev/null
+++ b/Assets/Scripts/UI/FactExplorer/FactFavorisation.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 88f8f222eb0a4a246908bde097a8726e
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences:
+  - favoriteDisplayPrefab: {fileID: 2810062559722195091, guid: 0b34469213856774980670de85a7d4a0,
+      type: 3}
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
-- 
GitLab