/// <summary>
        /// Validate parameters, initialize renderers, and listen to events
        /// </summary>
        void Awake()
        {
            _persistentBehavior = GetComponent <MLPersistentBehavior>();
            _persistentBehavior.OnStatusUpdate += HandleStatusUpdate;

            if (_nameText == null)
            {
                Debug.LogError("Error: ContentBindingStatusText._nameText is not set, disabling script");
                enabled = false;
                return;
            }

            if (_highlightEffect == null)
            {
                Debug.LogError("Error: ContentBindingStatusText._highlightEffect is not set, disabling script");
                enabled = false;
                return;
            }
            _highlightEffect.SetActive(false);

            if (_lineToPCF == null)
            {
                Debug.LogError("Error: ContentBindingStatusText._lineToPCF is not set, disabling script");
                enabled = false;
                return;
            }
            _lineToPCF.positionCount = 2;
            _lineToPCF.enabled       = false;

            _renderers = GetComponentsInChildren <Renderer>();
            EnableRenderers(false);

            _collider         = GetComponent <Collider>();
            _collider.enabled = false;
        }
Пример #2
0
        /// <summary>
        /// Reads all stored game object ids.
        /// </summary>
        void ReadAllStoredObjects()
        {
            List <MLContentBinding> allBindings = MLPersistentStore.AllBindings;

            foreach (MLContentBinding binding in allBindings)
            {
                GameObject gameObj;
                if (binding.GameObject.transform.name.Contains("Rack"))
                {
                    gameObj = binding.GameObject;
                }
                else
                {
                    gameObj      = Instantiate(_content, Vector3.zero, Quaternion.identity);
                    gameObj.name = binding.ObjectId;
                }

                MLPersistentBehavior persistentBehavior = gameObj.GetComponent <MLPersistentBehavior>();
                _pointBehaviors.Add(persistentBehavior);
                AddContentListeners(persistentBehavior);

                if (binding.GameObject.transform.name.Contains("Rack1") || binding.GameObject.transform.name.Contains("Rack3"))
                {
                    GameObject.Find("DebugText").GetComponent <Text>().text += binding.GameObject.transform.name.Substring(4) + ": ";
                    GameObject.Find("DebugText").GetComponent <Text>().text += binding.GameObject.transform.position;
                    GameObject.Find(binding.GameObject.transform.name).transform.position = binding.GameObject.transform.position;
                    GameObject.Find(binding.GameObject.transform.name).transform.rotation = binding.GameObject.transform.rotation;
                }
            }
        }
Пример #3
0
        /// <summary>
        /// Add listeners to content events
        /// </summary>
        /// <param name="persistentBehavior">Dynamic Content</param>
        void AddContentListeners(MLPersistentBehavior persistentBehavior)
        {
            persistentBehavior.OnStatusUpdate += HandleContentStatusUpdate;

            PersistentBall contentBehavior = persistentBehavior.GetComponent <PersistentBall>();

            contentBehavior.OnContentDestroy += RemoveContent;
        }
Пример #4
0
        void CreateContentFromExisting(GameObject go)
        {
            MLPersistentBehavior persistentBehavior = go.GetComponent <MLPersistentBehavior>();

            persistentBehavior.UniqueId = Guid.NewGuid().ToString();
            _pointBehaviors.Add(persistentBehavior);
            AddContentListeners(persistentBehavior);
        }
Пример #5
0
        /// <summary>
        /// Remove listeners from content events
        /// </summary>
        /// <param name="persistentBehavior">Dynamic Content</param>
        void RemoveContentListeners(MLPersistentBehavior persistentBehavior)
        {
            // it is safe to unsubscribe to events even if we're not originally subscribing to them
            persistentBehavior.OnStatusUpdate -= HandleContentStatusUpdate;

            PersistentBall contentBehavior = persistentBehavior.GetComponent <PersistentBall>();

            contentBehavior.OnContentDestroy -= RemoveContent;
        }
Пример #6
0
        /// <summary>
        /// Instantiates a new object with MLPersistentBehavior. The MLPersistentBehavior is
        /// responsible for restoring and saving itself.
        /// </summary>
        void CreateContent(Vector3 position, Quaternion rotation)
        {
            GameObject           gameObj            = Instantiate(_content, position, rotation);
            MLPersistentBehavior persistentBehavior = gameObj.GetComponent <MLPersistentBehavior>();

            persistentBehavior.UniqueId = Guid.NewGuid().ToString();
            _pointBehaviors.Add(persistentBehavior);
            AddContentListeners(persistentBehavior);
        }
Пример #7
0
        /// <summary>
        /// Removes the points and destroys its binding to prevent future restoration
        /// </summary>
        /// <param name="gameObj">Game Object to be removed</param>
        void RemoveContent(GameObject gameObj)
        {
            MLPersistentBehavior persistentBehavior = gameObj.GetComponent <MLPersistentBehavior>();

            RemoveContentListeners(persistentBehavior);
            _pointBehaviors.Remove(persistentBehavior);
            persistentBehavior.DestroyBinding();
            Instantiate(_destroyedContentEffect, persistentBehavior.transform.position, Quaternion.identity);

            Destroy(persistentBehavior.gameObject);
        }
Пример #8
0
        /// <summary>
        /// Reads all stored game object ids.
        /// </summary>
        void ReadAllStoredObjects()
        {
            List <MLContentBinding> allBindings = MLPersistentStore.AllBindings;

            foreach (MLContentBinding binding in allBindings)
            {
                GameObject           gameObj            = Instantiate(_content, Vector3.zero, Quaternion.identity);
                MLPersistentBehavior persistentBehavior = gameObj.GetComponent <MLPersistentBehavior>();
                persistentBehavior.UniqueId = binding.ObjectId;
                _pointBehaviors.Add(persistentBehavior);
                AddContentListeners(persistentBehavior);
            }
        }
Пример #9
0
    void InstantiatePersistentPrefab(string id)
    {
        GameObject           gameObj            = Instantiate(PersistentCoordinatesPrefab, Vector3.zero, Quaternion.identity);
        MLPersistentBehavior persistentBehavior = gameObj.GetComponent <MLPersistentBehavior>();

        persistentBehavior.UniqueId = id;
        PointBehaviors.Add(persistentBehavior);
        PcfRegistry pcfRegistry = new PcfRegistry
        {
            Behavior = persistentBehavior,
            Parent   = this
        };

        persistentBehavior.OnStatusUpdate += pcfRegistry.HandlePersistentCoordStatusUpdate;
    }
 /// <summary>
 /// Set Up
 /// </summary>
 private void Start()
 {
     _pointBehavior = GetComponent <MLPersistentBehavior>();
 }