/// <summary>
        /// Spawned the prefab.
        /// </summary>
        /// <param name="image">The ar tracked image itself.</param>
        /// <param name="state">The state of the image.</param>
        public void UpdatePrefab(ARTrackedImage image, RuntimeRiddleClueState state)
        {
            if (state == RuntimeRiddleClueState.STATE_REMOVED)
            {
                if (this._preScannedObject != null)
                {
                    GameObject.Destroy(this._preScannedObject.gameObject);
                    this._preScannedObject = null;
                }
                return;
            }

            if (this.RiddleFound)
            {
                if (this._preScannedObject == null)
                {
                    // tODO: Spawn a prefab for after the scan
                    GameObject prefab        = this._gameClue.ReferenceImageData.Prefab.gameObject;
                    GameObject spawnedObject = GameObject.Instantiate(prefab);
                    this._preScannedObject = spawnedObject.GetComponent <RiddleScannedComponent>();
                    this._preScannedObject.ParentRiddle = this;
                }
                GameObject _gameObject = this._preScannedObject.gameObject;
                _gameObject.transform.position = image.transform.position;
                _gameObject.transform.rotation = image.transform.rotation;
                return;
            }

            if (this._preScannedObject == null)
            {
                GameObject prefab        = this._gameClue.ReferenceImageData.Prefab.gameObject;
                GameObject spawnedObject = GameObject.Instantiate(prefab);
                this._preScannedObject = spawnedObject.GetComponent <RiddleScannedComponent>();
                this._preScannedObject.ParentRiddle = this;
            }
            GameObject gameObject = this._preScannedObject.gameObject;

            gameObject.transform.position = image.transform.position;
            gameObject.transform.rotation = image.transform.rotation;
        }
        public static RiddleReferenceImage CreateImage(string imageName, Texture2D texture, RiddleScannedComponent prefab)
        {
            RiddleReferenceImage referenceImage = new RiddleReferenceImage();

            referenceImage.imageName    = imageName;
            referenceImage.textureImage = texture;
            referenceImage.prefab       = prefab;
            return(referenceImage);
        }
 public RuntimeRiddle(RuntimeRiddleManager runtimeRiddleManager, GameRiddle clue)
 {
     this._gameClue             = clue;
     this._preScannedObject     = null;
     this._runtimeRiddleManager = runtimeRiddleManager;
 }
        /// <summary>
        /// Creates a new game riddle based off of these parameters.
        /// </summary>
        /// <param name="riddleTitle">The riddle title.</param>
        /// <param name="riddleDescription">The riddle description</param>
        /// <param name="texture">The texture.</param>
        /// <param name="prefab">The prefab.</param>
        /// <returns>The game riddle output.</returns>
        public static GameRiddle Create(string riddleTitle, string riddleDescription, Texture2D texture, RiddleScannedComponent prefab)
        {
            GameRiddle newRiddle = GameRiddle.CreateInstance <GameRiddle>();

            if (newRiddle != null)
            {
                Debug.Log(riddleTitle);
                string localizedName = "";
                RiddleReferenceData referenceData = RiddleReferenceData.GenerateReferenceData(
                    riddleTitle, riddleDescription);
                newRiddle.clueData = referenceData;

                RiddleReferenceImage imageData = RiddleReferenceImage.CreateImage(
                    localizedName, texture, prefab);
                newRiddle.referenceImageData = imageData;
                newRiddle.clueLocalizedName  = localizedName;
                newRiddle.name = localizedName;
            }
            return(newRiddle);
        }