Пример #1
0
 //
 // link to boolean action for when the ray hits a collider
 //
 // e.g VRTK Pointer Entering event
 //
 public void PointerHit(ObjectPointer.EventData data)
 {
     if (!editSelected)
     {
         RaycastHit hitInfo = data.CurrentPointsCastData.HitData.Value;
         currentPointerHit = hitInfo.transform;
         selectedDistance  = hitInfo.distance;
         from = hitInfo.point;
         if (rhTriggerState)
         {
             select(SelectionTypes.SELECT);
         }
         if (rhGripState)
         {
             select(SelectionTypes.SELECTALL);
         }
         if (addVertexState)
         {
             AddVertex(hitInfo.point);
         }
         if (delVertexState)
         {
             RemoveVertex();
         }
     }
 }
Пример #2
0
 public virtual void Log(ObjectPointer.EventData data)
 {
     if (data != null && data.CollisionData.transform != null)
     {
         Debug.Log(string.Format("Colliding with {0} at {1} for {2} seconds", data.CollisionData.transform.name, data.CollisionData.point, data.hoverDuration));
     }
 }
Пример #3
0
    public void Entered(ObjectPointer.EventData eventData)
    {
        var selectableObject = eventData.CollisionData.transform.GetComponent <SelectableObject>();

        if (selectableObject)
        {
            selectableObject.Enter(eventData, this);
        }
    }
Пример #4
0
        public void ClearPayload()
        {
            UnityEventListenerMock emittedMock = new UnityEventListenerMock();

            subject.Emitted.AddListener(emittedMock.Listen);
            ObjectPointer.EventData payload = new ObjectPointer.EventData();
            subject.Payload = payload;

            Assert.AreEqual(payload, subject.Payload);
            subject.ClearPayload();
            Assert.IsNull(subject.Payload);
        }
Пример #5
0
        public void Receive()
        {
            UnityEventListenerMock emittedMock = new UnityEventListenerMock();

            subject.Emitted.AddListener(emittedMock.Listen);
            ObjectPointer.EventData payload = new ObjectPointer.EventData();

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

            subject.Receive(payload);

            Assert.AreEqual(payload, subject.Payload);
            Assert.IsTrue(emittedMock.Received);
        }
Пример #6
0
        public void ReceiveInactiveGameObject()
        {
            UnityEventListenerMock emittedMock = new UnityEventListenerMock();

            subject.Emitted.AddListener(emittedMock.Listen);
            subject.gameObject.SetActive(false);
            ObjectPointer.EventData payload = new ObjectPointer.EventData();

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

            subject.Receive(payload);

            Assert.IsNull(subject.Payload);
            Assert.IsFalse(emittedMock.Received);
        }
Пример #7
0
        public void ReceiveInactiveComponent()
        {
            UnityEventListenerMock emittedMock = new UnityEventListenerMock();

            subject.Emitted.AddListener(emittedMock.Listen);
            subject.enabled = false;
            ObjectPointer.EventData payload = new ObjectPointer.EventData();

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

            subject.Receive(payload);

            Assert.IsNull(subject.Payload);
            Assert.IsFalse(emittedMock.Received);
        }
Пример #8
0
    public void Transfer(ObjectPointer.EventData transformData)
    {
        if (transformData == null)
        {
            return;
        }
        var planetSelection = transformData.CollisionData.transform?.GetComponent <PlanetSelection>();

        if (planetSelection == null)
        {
            return;
        }
        foreach (var selectedPlanet in selectedPlanets)
        {
            selectedPlanet.TransferSpores(planetSelection);
            selectedPlanet.Deselect();
        }
        selectedPlanets.Clear();
    }
Пример #9
0
        public void ReceiveWithRuleRestrictions()
        {
            UnityEventListenerMock emittedMock = new UnityEventListenerMock();

            subject.Emitted.AddListener(emittedMock.Listen);
            GameObject digestValid   = new GameObject();
            GameObject digestInvalid = new GameObject();

            ObjectPointer.EventData validData   = new ObjectPointer.EventData(digestValid.transform);
            ObjectPointer.EventData invalidData = new ObjectPointer.EventData(digestInvalid.transform);

            ListContainsRule          rule    = subject.gameObject.AddComponent <ListContainsRule>();
            UnityObjectObservableList objects = containingObject.AddComponent <UnityObjectObservableList>();

            rule.Objects = objects;

            objects.Add(digestValid);
            subject.ReceiveValidity = new RuleContainer
            {
                Interface = rule
            };

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

            subject.Receive(validData);

            Assert.AreEqual(validData, subject.Payload);
            Assert.IsTrue(emittedMock.Received);

            emittedMock.Reset();

            Assert.IsFalse(emittedMock.Received);

            subject.Receive(invalidData);

            Assert.AreEqual(validData, subject.Payload);
            Assert.IsFalse(emittedMock.Received);

            Object.DestroyImmediate(digestValid);
            Object.DestroyImmediate(digestInvalid);
        }
        public void EventDataComparison()
        {
            Transform subject = new GameObject().transform;

            ObjectPointer.EventData subjectA = new ObjectPointer.EventData(subject);
            ObjectPointer.EventData subjectB = new ObjectPointer.EventData(subject);

            Assert.IsFalse(subjectA == subjectB);
            Assert.IsTrue(subjectA.Equals(subjectB));
            Assert.AreEqual(subjectA, subjectB);

            subjectA.IsCurrentlyActive = true;
            subjectB.IsCurrentlyActive = false;

            Assert.IsFalse(subjectA == subjectB);
            Assert.IsFalse(subjectA.Equals(subjectB));
            Assert.AreNotEqual(subjectA, subjectB);

            Object.DestroyImmediate(subject.gameObject);
        }
Пример #11
0
        /// <summary>
        /// Generates all of the data for pointerfacade
        /// </summary>
        private void FillInEventData()
        {
            if (pointerCastEventData == null)
            {
                pointerCastEventData = new PointsCast.EventData();
                pointerCastEventData.Clear();
            }
            pointerCastEventData.Clear();
            pointerCastEventData.IsValid = true;

            if (eventData == null)
            {
                eventData                      = new ObjectPointer.EventData();
                eventData.Transform            = transform;
                eventData.CurrentHoverDuration = 0.1f;
            }
            eventData.Clear();
            eventData.UseLocalValues   = false;
            eventData.ScaleOverride    = Vector3.one;
            eventData.Direction        = pointerFacade.transform.forward;
            eventData.Origin           = pointerFacade.Configuration.ObjectPointer.Origin.transform.position;
            eventData.PositionOverride = eventData.Origin;
            eventData.RotationOverride = pointerFacade.Configuration.ObjectPointer.Origin.transform.rotation;
        }
Пример #12
0
    public void Select(ObjectPointer.EventData transformData)
    {
        if (transformData == null)
        {
            return;
        }
        var planetSelection = transformData.CollisionData.transform?.GetComponent <PlanetSelection>();

        Debug.Log($"hit {transformData.Transform} with {transformData.CollisionData.transform}");
        if (planetSelection == null)
        {
            return;
        }
        if (planetSelection.Allegiance.myAllegiance != PlanetSettings.Allegiance.player)
        {
            return;
        }

        planetSelection.Select();
        if (!selectedPlanets.Contains(planetSelection))
        {
            selectedPlanets.Add(planetSelection);
        }
    }
 public void OnSelected(ObjectPointer.EventData eventData)
 {
     Selected.Invoke(eventData);
 }
 /// <summary>
 /// Extracts the <see cref="Source"/> <see cref="GameObject"/> from the given <see cref="ObjectPointer.EventData"/> payload data.
 /// </summary>
 /// <param name="data">The <see cref="ObjectPointer.EventData"/> payload data to extract from.</param>
 /// <returns>The <see cref="Source"/> <see cref="GameObject"/> within the <see cref="ObjectPointer.EventData"/>.</returns>
 public virtual GameObject Extract(ObjectPointer.EventData data)
 {
     return(Extract((UnityEngine.XR.WSA.SurfaceData)data));
 }
 public void OnExited(ObjectPointer.EventData eventData)
 {
     Exited.Invoke(eventData);
 }
 public void OnDeactivated(ObjectPointer.EventData eventData)
 {
     Deactivated.Invoke(eventData);
 }
Пример #17
0
 //
 // Connect this callback to the UnityEvent that shhould stop the "Selected" state
 // e.g the VRTK ObjectPointer Deactivated event
 //
 public void UnSelected(ObjectPointer.EventData data)
 {
     isUISelectActive = false;
 }
Пример #18
0
 //
 // Connect this callback to the UnityEvent that shhould start the "Selected" state
 // e.g the VRTK ObjectPointer Activated event
 //
 public void Selected(ObjectPointer.EventData data)
 {
     isUISelectActive = true;
 }
 /// <summary>
 /// Emits the HoverChanged event.
 /// </summary>
 /// <param name="eventData">The data to emit.</param>
 public virtual void EmitHoverChanged(ObjectPointer.EventData eventData)
 {
     Facade.HoverChanged?.Invoke(eventData);
 }
 /// <summary>
 /// Emits the Deactivated event.
 /// </summary>
 /// <param name="eventData">The data to emit.</param>
 public virtual void EmitDeactivated(ObjectPointer.EventData eventData)
 {
     Facade.Deactivated?.Invoke(eventData);
 }
 /// <summary>
 /// Sets the <see cref="Source"/> based on given <see cref="ObjectPointer.EventData"/>.
 /// </summary>
 /// <param name="source">The data that contains the source transform.</param>
 public virtual void SetSource(ObjectPointer.EventData source)
 {
     SetSource((SurfaceData)source);
 }
 /// <summary>
 /// Extracts the <see cref="Source"/> <see cref="GameObject"/> from the given <see cref="ObjectPointer.EventData"/> payload data.
 /// </summary>
 /// <param name="data">The <see cref="ObjectPointer.EventData"/> payload data to extract from.</param>
 /// <returns>The <see cref="Source"/> <see cref="GameObject"/> within the <see cref="ObjectPointer.EventData"/>.</returns>
 public virtual GameObject Extract(ObjectPointer.EventData data)
 {
     return(Extract((SurfaceData)data));
 }
 public void OnHoverChanged(ObjectPointer.EventData eventData)
 {
     HoverChanged.Invoke(eventData);
 }
 /// <summary>
 /// Extracts the <see cref="Source"/> <see cref="GameObject"/> from the given <see cref="ObjectPointer.EventData"/> payload data.
 /// </summary>
 /// <param name="data">The <see cref="ObjectPointer.EventData"/> payload data to extract from.</param>
 public virtual void DoExtract(ObjectPointer.EventData data)
 {
     Extract(data);
 }
 /// <summary>
 /// Emits the Selected event.
 /// </summary>
 /// <param name="eventData">The data to emit.</param>
 public virtual void EmitSelected(ObjectPointer.EventData eventData)
 {
     Facade.Selected?.Invoke(eventData);
 }
 /// <summary>
 /// Sets the <see cref="Source"/> based on given <see cref="ObjectPointer.EventData"/>.
 /// </summary>
 /// <param name="source">The data that contains the source transform.</param>
 public virtual void SetSource(ObjectPointer.EventData source)
 {
     SetSource((UnityEngine.XR.WSA.SurfaceData)source);
 }
Пример #27
0
 //
 // link to boolean action for when the ray stops hiting a collider
 //
 // e.g VRTK Pointer Exiting event
 //
 public void PointerUnhit(ObjectPointer.EventData data)
 {
     currentPointerHit = null;
 }