/// <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; }
/// <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; } } }
/// <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; }
void CreateContentFromExisting(GameObject go) { MLPersistentBehavior persistentBehavior = go.GetComponent <MLPersistentBehavior>(); persistentBehavior.UniqueId = Guid.NewGuid().ToString(); _pointBehaviors.Add(persistentBehavior); AddContentListeners(persistentBehavior); }
/// <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; }
/// <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); }
/// <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); }
/// <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); } }
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>(); }