private void LocatePlaces()
    {
        if (!Directory.Exists(triviasPath))
        {
            Debug.Log("Cannot locate trivias.");
            return;
        }

        string[] triviaPaths = Directory.GetFiles(triviasPath, "*.asset");

        foreach (string triviaPath in triviaPaths)
        {
            PlaceTrivia trivia = AssetDatabase.LoadAssetAtPath <PlaceTrivia>(triviaPath);

            if (trivia == null)
            {
                Debug.Log("Failed to load " + triviaPath);
                continue;
            }

            if (!LocatePlace(trivia))
            {
                Debug.Log("Failed to locate place for " + trivia.name);
            }
        }
    }
    private bool LocatePlace(PlaceTrivia trivia)
    {
        if (trivia == null)
        {
            return(false);
        }

        string filter = "\"" + trivia.name.Replace(" Trivia", "") + "\" t: Place";

        string[] GUIDResult = AssetDatabase.FindAssets(filter);

        if (GUIDResult == null || GUIDResult.Length == 0)
        {
            Debug.Log("Could not find " + filter);
            return(false);
        }

        string path  = AssetDatabase.GUIDToAssetPath(GUIDResult[0]);
        Place  place = AssetDatabase.LoadAssetAtPath <Place>(path);

        if (place == null)
        {
            Debug.Log("Failed : " + path);
            return(false);
        }

        return(SetTrivia(place, trivia));
    }
        private void CreateBuildingItem(Place building)
        {
            if (building == null || itemPrefab == null || listContainer == null)
            {
                return;
            }

            PlaceTrivia buildingTrivia = building.trivia;

            trivias.Add(new BuildingTrivia(building.displayedName, buildingTrivia));

            GameObject buildingItem = Instantiate(itemPrefab, listContainer) as GameObject;

            buildingItem.name = building.displayedName;

            Text nameText = buildingItem.GetComponent <Text>();

            if (nameText != null)
            {
                nameText.text = building.displayedName;
            }

            Button button = buildingItem.GetComponent <Button>();

            if (button != null)
            {
                button.onClick.AddListener(() => SelectTrivia(buildingItem.transform.GetSiblingIndex()));
            }
        }
    private bool SetTrivia(Place place, PlaceTrivia trivia)
    {
        if (place == null || trivia == null)
        {
            return(false);
        }

        SerializedObject   serializedObject = new SerializedObject(place);
        SerializedProperty triviaProperty   = serializedObject.FindProperty("m_trivia");

        triviaProperty.objectReferenceValue = trivia as Object;
        serializedObject.ApplyModifiedPropertiesWithoutUndo();

        return(true);
    }
 public BuildingTrivia(string name, PlaceTrivia trivia)
 {
     m_name   = name;
     m_trivia = trivia;
 }