Newer
Older
using System.Collections.Generic;
using System;
using static CommunicationEvents;
public static Dictionary<Type, GameObject> prefabDictionary;
public static Dictionary<string, GameObject> displayedFacts = new();
[SerializeField] private GameObject factSpotPrefab;
public Transform factscreenContent;
[Header("FactPrefabs")]
public GameObject prefab_Point;
public GameObject prefab_Distance;
public GameObject prefab_Angle;
public GameObject prefab_Default;
public GameObject prefab_OnLine;
public GameObject prefab_Line;
public GameObject prefab_ParallelLineFact;
public GameObject prefab_RectangleFact;
public GameObject prefab_RadiusFact;
public GameObject prefab_AreaCircle;
public GameObject prefab_ConeVolume;
public GameObject prefab_OrthogonalCircleLine;
public GameObject prefab_TruncatedConeVolume;
public GameObject prefab_RightAngle;
public GameObject prefab_CylinderVolume;
public GameObject prefab_EqualFact;
public GameObject prefab_UnEqualFact;
public GameObject prefab_TestFact;
public GameObject prefab_CircleFact;
public GameObject prefab_OnCircleFact;
public GameObject prefab_AngleCircleLineFact;
//Start is called before the first frame update
prefabDictionary = new Dictionary<Type, GameObject>() {
{typeof(PointFact), prefab_Point},
{typeof(LineFact), prefab_Distance},
{typeof(RayFact), prefab_Line},
{typeof(AngleFact), prefab_Angle},
{typeof(OnLineFact), prefab_OnLine},
{typeof(ParallelLineFact), prefab_ParallelLineFact},
{typeof(CircleFact), prefab_CircleFact},
{typeof(OnCircleFact), prefab_OnCircleFact},
{typeof(AngleCircleLineFact), prefab_AngleCircleLineFact},
{typeof(RadiusFact), prefab_RadiusFact},
{typeof(AreaCircleFact), prefab_AreaCircle},
{typeof(ConeVolumeFact), prefab_ConeVolume},
{typeof(OrthogonalCircleLineFact), prefab_OrthogonalCircleLine },
{typeof(TruncatedConeVolumeFact), prefab_TruncatedConeVolume },
{typeof(RightAngleFact), prefab_RightAngle },
{typeof(CylinderVolumeFact), prefab_CylinderVolume},
{typeof(EqualCirclesFact), prefab_EqualFact },
{typeof(UnEqualCirclesFact), prefab_UnEqualFact },
{typeof(TestFact), prefab_TestFact },
AddFactEvent.AddListener(AddFact);
RemoveFactEvent.AddListener(RemoveFact);
AnimateExistingFactEvent.AddListener(AnimateFact);
public void AddFact(Fact fact) {
var display = CreateDisplay(transform, fact);
display.transform.localPosition = Vector3.zero;
displayedFacts.Add(fact.Id, display);
public void RemoveFact(Fact fact)
{
// destroy factSpot (parent of displayed fact) and the fact display with it
Destroy(displayedFacts[fact.Id].transform.parent);
Marco Zimmer
committed
displayedFacts.Remove(fact.Id);
public void AnimateFact(Fact fact) {
Marco Zimmer
committed
var factIcon = displayedFacts[fact.Id];
factIcon.GetComponentInChildren<ImageHintAnimation>().AnimationTrigger();
private GameObject CreateDisplay(Transform transform, Fact fact)
var spot = Instantiate(factSpotPrefab, factscreenContent);
return fact.instantiateDisplay(prefabDictionary[fact.GetType()], spot.transform);