public void Consume()
        {
            UnityEventListenerMock consumedMock = new UnityEventListenerMock();
            UnityEventListenerMock clearedMock  = new UnityEventListenerMock();

            subject.Consumed.AddListener(consumedMock.Listen);
            subject.Cleared.AddListener(clearedMock.Listen);

            GameObject publisherObject = new GameObject();

            ActiveCollisionPublisher.PayloadData publisher = new ActiveCollisionPublisher.PayloadData();
            publisher.SourceContainer = publisherObject;

            Assert.IsFalse(consumedMock.Received);
            Assert.IsFalse(clearedMock.Received);

            Assert.IsNull(subject.PublisherSource);

            subject.Consume(publisher, null);

            Assert.IsTrue(consumedMock.Received);
            Assert.IsFalse(clearedMock.Received);

            Assert.AreEqual(publisher, subject.PublisherSource);

            Object.DestroyImmediate(publisherObject);
        }
Exemple #2
0
        public void ExtractFromConsumerEvent()
        {
            UnityEventListenerMock extractedMock = new UnityEventListenerMock();

            subject.Extracted.AddListener(extractedMock.Listen);

            GameObject publisherSource = new GameObject();
            GameObject publisherChild  = new GameObject();

            publisherChild.transform.SetParent(publisherSource.transform);
            ActiveCollisionPublisher.PayloadData publisher = new ActiveCollisionPublisher.PayloadData();

            publisher.SourceContainer = publisherSource;

            ActiveCollisionConsumer.EventData eventData = new ActiveCollisionConsumer.EventData();
            eventData.Set(publisher, null);

            Assert.IsNull(subject.Result);
            Assert.IsFalse(extractedMock.Received);

            subject.Extract(eventData);

            Assert.AreEqual(publisherSource, subject.Result);
            Assert.IsTrue(extractedMock.Received);

            Object.DestroyImmediate(publisherSource);
            Object.DestroyImmediate(publisherChild);
        }
Exemple #3
0
        public void ExtractInactiveGameObject()
        {
            UnityEventListenerMock extractedMock = new UnityEventListenerMock();

            subject.Extracted.AddListener(extractedMock.Listen);

            GameObject publisherSource = new GameObject();
            GameObject publisherChild  = new GameObject();

            publisherChild.transform.SetParent(publisherSource.transform);
            ActiveCollisionPublisher.PayloadData publisher = new ActiveCollisionPublisher.PayloadData();

            publisher.SourceContainer = publisherSource;

            Assert.IsNull(subject.Result);
            Assert.IsFalse(extractedMock.Received);

            subject.gameObject.SetActive(false);
            subject.Extract(publisher);

            Assert.IsNull(subject.Result);
            Assert.IsFalse(extractedMock.Received);

            Object.DestroyImmediate(publisherSource);
            Object.DestroyImmediate(publisherChild);
        }
Exemple #4
0
 public override void Consume(ActiveCollisionPublisher.PayloadData publisher, CollisionNotifier.EventData currentCollision)
 {
     if (isActiveAndEnabled)
     {
         received = true;
     }
 }
Exemple #5
0
        public override bool Consume(ActiveCollisionPublisher.PayloadData publisher, CollisionNotifier.EventData currentCollision)
        {
            received = false;
            if (isActiveAndEnabled)
            {
                received = true;
            }

            return(received);
        }
        /// <summary>
        /// Extracts the source container from the given publisher payload data.
        /// </summary>
        /// <param name="publisher">The publisher payload data to extract from.</param>
        /// <returns>The source container within the publisher.</returns>
        public virtual GameObject Extract(ActiveCollisionPublisher.PayloadData publisher)
        {
            if (publisher == null || publisher.SourceContainer == null)
            {
                Result = null;
                return(null);
            }

            Result = publisher.SourceContainer;
            return(base.Extract());
        }
Exemple #7
0
        public void Receive()
        {
            UnityEventListenerMock emittedMock = new UnityEventListenerMock();

            subject.Emitted.AddListener(emittedMock.Listen);
            ActiveCollisionPublisher.PayloadData digest = new ActiveCollisionPublisher.PayloadData();

            Assert.IsFalse(emittedMock.Received);
            subject.Receive(digest);
            Assert.AreEqual(digest, subject.Payload);
            Assert.IsTrue(emittedMock.Received);
        }
Exemple #8
0
        /// <summary>
        /// Extracts the source container from the given publisher payload data.
        /// </summary>
        /// <param name="publisher">The publisher payload data to extract from.</param>
        /// <returns>The source container within the publisher.</returns>
        public virtual GameObject Extract(ActiveCollisionPublisher.PayloadData publisher)
        {
            if (!isActiveAndEnabled || publisher == null || publisher.sourceContainer == null)
            {
                SourceContainer = null;
                return(null);
            }

            SourceContainer = publisher.sourceContainer;
            Extracted?.Invoke(SourceContainer);
            return(SourceContainer);
        }
Exemple #9
0
        public void CreateAndClear()
        {
            UnityEventListenerMock createdMock = new UnityEventListenerMock();
            UnityEventListenerMock clearedMock = new UnityEventListenerMock();

            subject.Created.AddListener(createdMock.Listen);
            subject.Destroyed.AddListener(clearedMock.Listen);

            GameObject publisherObject = new GameObject();

            ActiveCollisionPublisher.PayloadData publisher = new ActiveCollisionPublisher.PayloadData();
            publisher.sourceContainer          = publisherObject;
            publisherObject.transform.position = Vector3.one;

            GameObject collisionNotifierContainer = new GameObject();;

            CollisionNotifier.EventData collisionNotifierEventData = CollisionNotifierHelper.GetEventData(out 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);

            Assert.IsFalse(createdMock.Received);
            Assert.IsFalse(clearedMock.Received);
            Assert.IsNull(subject.Container);

            subject.Create(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.Destroy();

            Assert.IsFalse(createdMock.Received);
            Assert.IsTrue(clearedMock.Received);
            Assert.IsNull(subject.Container);

            Object.DestroyImmediate(publisherObject);
            Object.DestroyImmediate(collisionNotifierContainer);
        }
Exemple #10
0
        public void ExtractInvalidPublisher()
        {
            UnityEventListenerMock extractedMock = new UnityEventListenerMock();

            subject.Extracted.AddListener(extractedMock.Listen);

            ActiveCollisionPublisher.PayloadData publisher = new ActiveCollisionPublisher.PayloadData();

            Assert.IsNull(subject.Result);
            Assert.IsFalse(extractedMock.Received);

            subject.Extract(publisher);

            Assert.IsNull(subject.Result);
            Assert.IsFalse(extractedMock.Received);
        }
Exemple #11
0
        public void ReceiveInactiveComponent()
        {
            UnityEventListenerMock emittedMock = new UnityEventListenerMock();

            subject.Emitted.AddListener(emittedMock.Listen);
            ActiveCollisionPublisher.PayloadData digest = new ActiveCollisionPublisher.PayloadData();

            subject.enabled = false;

            Assert.IsNull(subject.Payload);
            Assert.IsFalse(emittedMock.Received);

            subject.Receive(digest);

            Assert.IsNull(subject.Payload);
            Assert.IsFalse(emittedMock.Received);
        }
        public IEnumerator ConsumeExclusion()
        {
            UnityEventListenerMock consumedMock = new UnityEventListenerMock();
            UnityEventListenerMock clearedMock  = new UnityEventListenerMock();

            subject.Consumed.AddListener(consumedMock.Listen);
            subject.Cleared.AddListener(clearedMock.Listen);

            GameObject publisherObject = new GameObject();

            ActiveCollisionPublisher.PayloadData publisher = new ActiveCollisionPublisher.PayloadData();
            publisher.PublisherContainer = publisherObject;

            publisherObject.AddComponent <RuleStub>();
            NegationRule         negationRule             = containingObject.AddComponent <NegationRule>();
            AnyComponentTypeRule anyComponentTypeRule     = containingObject.AddComponent <AnyComponentTypeRule>();
            SerializableTypeComponentObservableList rules = containingObject.AddComponent <SerializableTypeComponentObservableList>();

            yield return(null);

            anyComponentTypeRule.ComponentTypes = rules;
            rules.Add(typeof(RuleStub));

            negationRule.Rule = new RuleContainer
            {
                Interface = anyComponentTypeRule
            };
            subject.PublisherValidity = new RuleContainer
            {
                Interface = negationRule
            };

            Assert.IsFalse(consumedMock.Received);
            Assert.IsFalse(clearedMock.Received);

            Assert.IsNull(subject.PublisherSource);

            subject.Consume(publisher, null);

            Assert.IsFalse(consumedMock.Received);
            Assert.IsFalse(clearedMock.Received);

            Assert.IsNull(subject.PublisherSource);

            Object.DestroyImmediate(publisherObject);
        }
 protected virtual ActiveCollisionConsumer.EventData ConsumerDataFromInteractor(InteractorFacade interactor)
 {
     ActiveCollisionPublisher.PayloadData interactorPublisher = new ActiveCollisionPublisher.PayloadData();
     interactorPublisher.sourceContainer = interactor?.grabInteractorSetup?.attachPoint;
     return(new ActiveCollisionConsumer.EventData().Set(interactorPublisher, null));
 }
 /// <summary>
 /// Extracts the source container from the given publisher payload data.
 /// </summary>
 /// <param name="publisher">The publisher payload data to extract from.</param>
 public virtual void DoExtract(ActiveCollisionPublisher.PayloadData publisher)
 {
     Extract(publisher);
 }
Exemple #15
0
 public override void Register(ActiveCollisionConsumer consumer, ActiveCollisionPublisher.PayloadData payload)
 {
     ConsumerCount++;
 }