public void ExtractInactiveComponent() { UnityEventListenerMock extractedMock = new UnityEventListenerMock(); subject.Extracted.AddListener(extractedMock.Listen); GameObject forwardSource = new GameObject(); CollisionNotifier.EventData notifier = new CollisionNotifier.EventData(); notifier.ForwardSource = forwardSource.GetComponent <Component>(); Assert.IsNull(subject.Result); Assert.IsFalse(extractedMock.Received); subject.enabled = false; subject.Extract(notifier); Assert.IsNull(subject.Result); Assert.IsFalse(extractedMock.Received); Object.DestroyImmediate(forwardSource); }
public void InvalidRemove() { UnityEventListenerMock firstStartedMock = new UnityEventListenerMock(); UnityEventListenerMock countChangedMock = new UnityEventListenerMock(); UnityEventListenerMock contentsChangedMock = new UnityEventListenerMock(); UnityEventListenerMock allStoppedMock = new UnityEventListenerMock(); subject.FirstStarted.AddListener(firstStartedMock.Listen); subject.CountChanged.AddListener(countChangedMock.Listen); subject.ContentsChanged.AddListener(contentsChangedMock.Listen); subject.AllStopped.AddListener(allStoppedMock.Listen); GameObject oneContainer; CollisionNotifier.EventData oneData = CollisionNotifierHelper.GetEventData(out oneContainer); Assert.IsFalse(firstStartedMock.Received); Assert.IsFalse(countChangedMock.Received); Assert.IsFalse(contentsChangedMock.Received); Assert.IsFalse(allStoppedMock.Received); firstStartedMock.Reset(); countChangedMock.Reset(); contentsChangedMock.Reset(); allStoppedMock.Reset(); Assert.AreEqual(0, subject.Elements.Count); subject.Remove(oneData); Assert.AreEqual(0, subject.Elements.Count); Assert.IsFalse(firstStartedMock.Received); Assert.IsFalse(countChangedMock.Received); Assert.IsFalse(contentsChangedMock.Received); Assert.IsFalse(allStoppedMock.Received); Object.DestroyImmediate(oneContainer); }
public void Reverse() { UnityEventListenerMock reversedMock = new UnityEventListenerMock(); subject.Reversed.AddListener(reversedMock.Listen); List <CollisionNotifier.EventData> collisionList = new List <CollisionNotifier.EventData>(); GameObject oneContainer; CollisionNotifier.EventData oneData = CollisionNotifierHelper.GetEventData(out oneContainer); oneContainer.name = "one"; collisionList.Add(oneData); GameObject twoContainer; CollisionNotifier.EventData twoData = CollisionNotifierHelper.GetEventData(out twoContainer); twoContainer.name = "two"; collisionList.Add(twoData); GameObject threeContainer; CollisionNotifier.EventData threeData = CollisionNotifierHelper.GetEventData(out threeContainer); threeContainer.name = "three"; collisionList.Add(threeData); ActiveCollisionsContainer.EventData eventData = new ActiveCollisionsContainer.EventData().Set(collisionList); Assert.AreEqual("one,two,three", ActiveCollisionsHelper.GetNamesOfActiveCollisions(eventData)); Assert.IsFalse(reversedMock.Received); ActiveCollisionsContainer.EventData reversedList = subject.Reverse(eventData); Assert.IsTrue(reversedMock.Received); Assert.AreEqual("three,two,one", ActiveCollisionsHelper.GetNamesOfActiveCollisions(reversedList)); Object.DestroyImmediate(oneContainer); Object.DestroyImmediate(twoContainer); Object.DestroyImmediate(threeContainer); }
public void Extract() { UnityEventListenerMock extractedMock = new UnityEventListenerMock(); subject.Extracted.AddListener(extractedMock.Listen); Collider collider = new GameObject().AddComponent <BoxCollider>(); CollisionNotifier.EventData eventData = new CollisionNotifier.EventData { ColliderData = collider }; Assert.IsNull(subject.Result); Assert.IsFalse(extractedMock.Received); subject.Extract(eventData); Assert.AreEqual(collider.gameObject, subject.Result); Assert.IsTrue(extractedMock.Received); Object.DestroyImmediate(collider.gameObject); }
public void Receive() { GameObject forwardSource = new GameObject(); GameObject collisionSource = new GameObject(); Collider collider = collisionSource.AddComponent <BoxCollider>(); UnityEventListenerMock emittedMock = new UnityEventListenerMock(); subject.Emitted.AddListener(emittedMock.Listen); CollisionNotifier.EventData digest = new CollisionNotifier.EventData(); digest.Set(forwardSource.GetComponent <Component>(), true, null, collider); Assert.IsNull(subject.Payload); Assert.IsFalse(emittedMock.Received); subject.Receive(digest); Assert.AreEqual(digest, subject.Payload); Assert.IsTrue(emittedMock.Received); Object.DestroyImmediate(forwardSource); Object.DestroyImmediate(collisionSource); }
public EventData Set(ActiveCollisionPublisher.PayloadData publisher, CollisionNotifier.EventData currentCollision) { Publisher = publisher; CurrentCollision = currentCollision; return(this); }
/// <summary> /// Extracts the <see cref="GameObject"/> of the <see cref="Collider"/> from the given <see cref="CollisionNotifier.EventData"/>. /// </summary> /// <param name="notifier">The notifier event data to extract from.</param> public virtual void DoExtract(CollisionNotifier.EventData notifier) { Extract(notifier); }
/// <summary> /// Determines if the current collision is valid. /// </summary> /// <param name="collisionData">The collision to check.</param> /// <returns>The validity result of the collision.</returns> protected virtual bool IsValidCollision(CollisionNotifier.EventData collisionData) { Transform containingTransform = collisionData.ColliderData.GetContainingTransform(); return(containingTransform != null && CollisionValidity.Accepts(containingTransform.gameObject)); }
/// <summary> /// Determines an object is being ungrabbed. /// </summary> /// <param name="data">The collision data.</param> public virtual void Ungrab(CollisionNotifier.EventData data) { facade?.Ungrabbed?.Invoke(data); }
public void LengthIsZero() { UnityEventListenerMock slicedMock = new UnityEventListenerMock(); subject.Sliced.AddListener(slicedMock.Listen); UnityEventListenerMock remainedMock = new UnityEventListenerMock(); subject.Remained.AddListener(remainedMock.Listen); List <CollisionNotifier.EventData> collisionList = new List <CollisionNotifier.EventData>(); GameObject oneContainer; CollisionNotifier.EventData oneData = CollisionNotifierHelper.GetEventData(out oneContainer); oneContainer.name = "one"; collisionList.Add(oneData); GameObject twoContainer; CollisionNotifier.EventData twoData = CollisionNotifierHelper.GetEventData(out twoContainer); twoContainer.name = "two"; collisionList.Add(twoData); GameObject threeContainer; CollisionNotifier.EventData threeData = CollisionNotifierHelper.GetEventData(out threeContainer); threeContainer.name = "three"; collisionList.Add(threeData); GameObject fourContainer; CollisionNotifier.EventData fourData = CollisionNotifierHelper.GetEventData(out fourContainer); fourContainer.name = "four"; collisionList.Add(fourData); GameObject fiveContainer; CollisionNotifier.EventData fiveData = CollisionNotifierHelper.GetEventData(out fiveContainer); fiveContainer.name = "five"; collisionList.Add(fiveData); GameObject sixContainer; CollisionNotifier.EventData sixData = CollisionNotifierHelper.GetEventData(out sixContainer); sixContainer.name = "six"; collisionList.Add(sixData); ActiveCollisionsContainer.EventData eventData = new ActiveCollisionsContainer.EventData().Set(collisionList); subject.StartIndex = 0; subject.Length = 0; ActiveCollisionsContainer.EventData remainedList; ActiveCollisionsContainer.EventData slicedList = subject.Slice(eventData, out remainedList); Assert.IsTrue(slicedMock.Received); Assert.IsTrue(remainedMock.Received); Assert.AreEqual("", ActiveCollisionsHelper.GetNamesOfActiveCollisions(slicedList)); Assert.AreEqual("one,two,three,four,five,six", ActiveCollisionsHelper.GetNamesOfActiveCollisions(remainedList)); Object.DestroyImmediate(oneContainer); Object.DestroyImmediate(twoContainer); Object.DestroyImmediate(threeContainer); Object.DestroyImmediate(fourContainer); Object.DestroyImmediate(fiveContainer); Object.DestroyImmediate(sixContainer); }
/// <summary> /// Notifies that the Interactor is no longer touching the object. /// </summary> /// <param name="data">The collision data.</param> public virtual void NotifyUntouch(CollisionNotifier.EventData data) { facade?.Untouched?.Invoke(data); }
public void SetOnlyOnce() { UnityEventListenerMock createdMock = new UnityEventListenerMock(); UnityEventListenerMock clearedMock = new UnityEventListenerMock(); subject.PointSet.AddListener(createdMock.Listen); subject.PointUnset.AddListener(clearedMock.Listen); GameObject publisherObject = new GameObject(); ActiveCollisionPublisher.PayloadData publisher = new ActiveCollisionPublisher.PayloadData(); publisher.SourceContainer = publisherObject; publisherObject.transform.position = Vector3.one; CollisionNotifier.EventData collisionNotifierEventData = CollisionNotifierHelper.GetEventData(out GameObject collisionNotifierContainer); collisionNotifierContainer.transform.position = Vector3.one * 2f; collisionNotifierContainer.transform.rotation = Quaternion.Euler(Vector3.forward * 90f); ActiveCollisionConsumer.EventData eventData = new ActiveCollisionConsumer.EventData(); eventData.Set(publisher, collisionNotifierEventData); GameObject publisherObjectAlt = new GameObject(); ActiveCollisionPublisher.PayloadData publisherAlt = new ActiveCollisionPublisher.PayloadData(); publisherAlt.SourceContainer = publisherObjectAlt; publisherObjectAlt.transform.position = Vector3.one; CollisionNotifier.EventData collisionNotifierEventDataAlt = CollisionNotifierHelper.GetEventData(out GameObject collisionNotifierContainerAlt); collisionNotifierContainerAlt.transform.position = Vector3.one * 4f; collisionNotifierContainerAlt.transform.rotation = Quaternion.Euler(Vector3.up * 90f); ActiveCollisionConsumer.EventData eventDataAlt = new ActiveCollisionConsumer.EventData(); eventDataAlt.Set(publisherAlt, collisionNotifierEventDataAlt); Assert.IsFalse(createdMock.Received); Assert.IsFalse(clearedMock.Received); Assert.IsNull(subject.Container); subject.Set(eventData); Assert.IsTrue(createdMock.Received); Assert.IsFalse(clearedMock.Received); Assert.IsNotNull(subject.Container); Assert.AreEqual(publisherObject.transform.position.ToString(), subject.Container.transform.position.ToString()); Assert.AreEqual(publisherObject.transform.rotation.ToString(), subject.Container.transform.rotation.ToString()); Assert.AreEqual(Vector3.one, subject.Container.transform.localScale); createdMock.Reset(); clearedMock.Reset(); subject.Set(eventDataAlt); Assert.IsFalse(createdMock.Received); Assert.IsFalse(clearedMock.Received); Assert.IsNotNull(subject.Container); Assert.AreEqual(publisherObject.transform.position.ToString(), subject.Container.transform.position.ToString()); Assert.AreEqual(publisherObject.transform.rotation.ToString(), subject.Container.transform.rotation.ToString()); Assert.AreEqual(Vector3.one, subject.Container.transform.localScale); Object.DestroyImmediate(publisherObject); Object.DestroyImmediate(publisherObjectAlt); Object.DestroyImmediate(collisionNotifierContainer); Object.DestroyImmediate(collisionNotifierContainerAlt); }
/// <summary> /// Handles any change of collision contents. /// </summary> /// <param name="data">The changed collision data.</param> protected virtual void ProcessPotentialInteractorContentChange(CollisionNotifier.EventData data) { PotentialInteractors.ProcessContentsChanged(); }
/// <summary> /// Extracts the forward source container from the given notifier event data. /// </summary> /// <param name="eventData">The notifier event data to extract from.</param> public virtual void DoExtract(CollisionNotifier.EventData eventData) { Extract(eventData); }
public EventData Set(ActiveCollisionPublisher publisher, CollisionNotifier.EventData currentCollision) { this.publisher = publisher; this.currentCollision = currentCollision; return(this); }
/// <summary> /// Clones the given event data. /// </summary> /// <param name="input">The data to clone.</param> /// <returns>The cloned data.</returns> protected virtual CollisionNotifier.EventData CloneEventData(CollisionNotifier.EventData input) { return(new CollisionNotifier.EventData().Set(input)); }
/// <summary> /// Determines if the current collision is valid. /// </summary> /// <param name="collisionData">The collision to check.</param> /// <returns>The validity result of the collision.</returns> protected virtual bool IsValidCollision(CollisionNotifier.EventData collisionData) { return(collisionData.collider != null && collisionValidity.Accepts(collisionData.collider.gameObject)); }