Example #1
0
        private ITransientReference <GameEntity> TryCreateNaturalWeapon(
            ExtremityType extremityType, bool melee, GameManager manager)
        {
            if (!melee ||
                extremityType != ExtremityType.GraspingFingers)
            {
                return(null);
            }

            // TODO: Support claws, tentacles, etc.
            return(Item.Loader.Get("fist").Instantiate(manager));
        }
Example #2
0
        /// <summary>
        /// This is the same as <see cref="Recompute(ExtremityType,bool,bool,bool,bool)"/>
        /// but can cope with a current <paramref name="value"/> of <c>null</c>: if either
        /// or both ends are being processed, assume Both (the default value) instead of
        /// <c>null</c>; otherwise return <paramref name="value"/> unmodified.
        /// </summary>
        public static ExtremityType?Recompute(this ExtremityType?value,
                                              bool processFrom, bool processTo,
                                              bool matchFrom, bool matchTo)
        {
            if (processFrom || processTo)
            {
                ExtremityType extremity = value ?? default(ExtremityType);
                return(Recompute(extremity, processFrom, processTo, matchFrom, matchTo));
            }

            return(value);
        }
Example #3
0
        public void CanExtremityTypeSetBeginEnd()
        {
            Assert.IsNull(((ExtremityType?)null).SetBegin(true));
            Assert.IsNull(((ExtremityType?)null).SetEnd(true));
            Assert.IsNull(((ExtremityType?)null).SetBegin(false));
            Assert.IsNull(((ExtremityType?)null).SetEnd(false));

            ExtremityType value = ExtremityType.Both;

            Assert.AreEqual(ExtremityType.JustEnd, value   = value.SetBegin(false));
            Assert.AreEqual(ExtremityType.JustEnd, value   = value.SetEnd(true));
            Assert.AreEqual(ExtremityType.Both, value      = value.SetBegin(true));
            Assert.AreEqual(ExtremityType.JustBegin, value = value.SetEnd(false));
            Assert.AreEqual(ExtremityType.None, value.SetBegin(false));
        }
Example #4
0
        /// <summary>
        /// Recompute the extremity type from its current <paramref name="value"/>
        /// and the given environmental flags: <paramref name="matchFrom"/> and
        /// <paramref name="matchTo"/> control the Begin and End portion of the
        /// extremity type, but only take effect if the corresponding
        /// <paramref name="processFrom"/> or <paramref name="processTo"/> flag
        /// is set.
        /// </summary>
        /// <returns>The computed new extremity type.</returns>
        public static ExtremityType Recompute(this ExtremityType value,
                                              bool processFrom, bool processTo,
                                              bool matchFrom, bool matchTo)
        {
            if (processFrom)
            {
                value = value.SetBegin(matchFrom);
            }

            if (processTo)
            {
                value = value.SetEnd(matchTo);
            }

            return(value);
        }
Example #5
0
        public static ExtremityType Invert(this ExtremityType value)
        {
            switch (value)
            {
            case ExtremityType.Both:
                return(ExtremityType.None);

            case ExtremityType.JustBegin:
                return(ExtremityType.JustEnd);

            case ExtremityType.JustEnd:
                return(ExtremityType.JustBegin);

            case ExtremityType.None:
                return(ExtremityType.Both);

            default:
                throw new ArgumentOutOfRangeException(nameof(value), value,
                                                      InvalidExtremityTypeMessage);
            }
        }
Example #6
0
        public static ExtremityType SetEnd(this ExtremityType value, bool flag)
        {
            switch (value)
            {
            case ExtremityType.Both:
                return(flag ? ExtremityType.Both : ExtremityType.JustBegin);

            case ExtremityType.JustBegin:
                return(flag ? ExtremityType.Both : ExtremityType.JustBegin);

            case ExtremityType.JustEnd:
                return(flag ? ExtremityType.JustEnd : ExtremityType.None);

            case ExtremityType.None:
                return(flag ? ExtremityType.JustEnd : ExtremityType.None);

            default:
                throw new ArgumentOutOfRangeException(nameof(value), value,
                                                      InvalidExtremityTypeMessage);
                // TODO return value instead?
            }
        }
Example #7
0
            /** 		
                 @brief Return the data of a specific extremity point
			
                 @param[in] extremityLabel - the id of the requested extremity point.
                 @param[out] extremityPoint - the location data of the requested extremity point.
			
                 @return PXC_STATUS_NO_ERROR - operation succeeded.
			
                 @see ExtremityType
                 @see ExtremityData
             */
            public pxcmStatus QueryExtremityPoint(ExtremityType extremityLabel, out ExtremityData extremityPoint)
            {
                return QueryExtremityPointINT(instance, extremityLabel, out extremityPoint);
            }
Example #8
0
 /**
  *  @brief Get an extremity point location using a specific ExtremityType.
  *  @param[in] extremityLabel - the extremity type to be retrieved.
  *  @return The extremity point location data.
  *  @see ExtremityType
  */
 public PXCMPoint3DF32 QueryExtremityPoint(ExtremityType extremityLabel)
 {
     return(QueryExtremityPointINT(instance, extremityLabel));
 }
Example #9
0
 internal static extern PXCMPoint3DF32 PXCMBlobData_IBlob_QueryExtremityPoint(IntPtr instance, ExtremityType extremityLabel);
Example #10
0
 private static extern pxcmStatus PXCMHandData_IHand_QueryExtremityPoint(IntPtr instance, ExtremityType extremityLabel, [Out] ExtremityData extremityPoint);
Example #11
0
        public void CanExtremityTypeRecompute()
        {
            // Treat null as Both (the default value)
            // unless no ends are being processed:

            ExtremityType?nullable = null;

            Assert.AreEqual(ExtremityType.Both, nullable.Recompute(true, true, true, true));
            Assert.IsNull(nullable.Recompute(false, false, true, true));

            // There remain 4 * 2 * 2 * 2 * 2 = 64 possibilities:

            ExtremityType value = ExtremityType.Both;

            Assert.AreEqual(ExtremityType.Both, value.Recompute(false, false, false, false));
            Assert.AreEqual(ExtremityType.Both, value.Recompute(false, false, true, false));
            Assert.AreEqual(ExtremityType.Both, value.Recompute(false, false, false, true));
            Assert.AreEqual(ExtremityType.Both, value.Recompute(false, false, true, true));

            Assert.AreEqual(ExtremityType.JustEnd, value.Recompute(true, false, false, false));
            Assert.AreEqual(ExtremityType.Both, value.Recompute(true, false, true, false));
            Assert.AreEqual(ExtremityType.JustEnd, value.Recompute(true, false, false, true));
            Assert.AreEqual(ExtremityType.Both, value.Recompute(true, false, true, true));

            Assert.AreEqual(ExtremityType.JustBegin, value.Recompute(false, true, false, false));
            Assert.AreEqual(ExtremityType.JustBegin, value.Recompute(false, true, true, false));
            Assert.AreEqual(ExtremityType.Both, value.Recompute(false, true, false, true));
            Assert.AreEqual(ExtremityType.Both, value.Recompute(false, true, true, true));

            Assert.AreEqual(ExtremityType.None, value.Recompute(true, true, false, false));
            Assert.AreEqual(ExtremityType.JustBegin, value.Recompute(true, true, true, false));
            Assert.AreEqual(ExtremityType.JustEnd, value.Recompute(true, true, false, true));
            Assert.AreEqual(ExtremityType.Both, value.Recompute(true, true, true, true));

            value = ExtremityType.JustBegin;

            Assert.AreEqual(ExtremityType.JustBegin,
                            value.Recompute(false, false, false, false));
            Assert.AreEqual(ExtremityType.JustBegin, value.Recompute(false, false, true, false));
            Assert.AreEqual(ExtremityType.JustBegin, value.Recompute(false, false, false, true));
            Assert.AreEqual(ExtremityType.JustBegin, value.Recompute(false, false, true, true));

            Assert.AreEqual(ExtremityType.None, value.Recompute(true, false, false, false));
            Assert.AreEqual(ExtremityType.JustBegin, value.Recompute(true, false, true, false));
            Assert.AreEqual(ExtremityType.None, value.Recompute(true, false, false, true));
            Assert.AreEqual(ExtremityType.JustBegin, value.Recompute(true, false, true, true));

            Assert.AreEqual(ExtremityType.JustBegin, value.Recompute(false, true, false, false));
            Assert.AreEqual(ExtremityType.JustBegin, value.Recompute(false, true, true, false));
            Assert.AreEqual(ExtremityType.Both, value.Recompute(false, true, false, true));
            Assert.AreEqual(ExtremityType.Both, value.Recompute(false, true, true, true));

            Assert.AreEqual(ExtremityType.None, value.Recompute(true, true, false, false));
            Assert.AreEqual(ExtremityType.JustBegin, value.Recompute(true, true, true, false));
            Assert.AreEqual(ExtremityType.JustEnd, value.Recompute(true, true, false, true));
            Assert.AreEqual(ExtremityType.Both, value.Recompute(true, true, true, true));

            value = ExtremityType.JustEnd;

            Assert.AreEqual(ExtremityType.JustEnd, value.Recompute(false, false, false, false));
            Assert.AreEqual(ExtremityType.JustEnd, value.Recompute(false, false, true, false));
            Assert.AreEqual(ExtremityType.JustEnd, value.Recompute(false, false, false, true));
            Assert.AreEqual(ExtremityType.JustEnd, value.Recompute(false, false, true, true));

            Assert.AreEqual(ExtremityType.JustEnd, value.Recompute(true, false, false, false));
            Assert.AreEqual(ExtremityType.Both, value.Recompute(true, false, true, false));
            Assert.AreEqual(ExtremityType.JustEnd, value.Recompute(true, false, false, true));
            Assert.AreEqual(ExtremityType.Both, value.Recompute(true, false, true, true));

            Assert.AreEqual(ExtremityType.None, value.Recompute(false, true, false, false));
            Assert.AreEqual(ExtremityType.None, value.Recompute(false, true, true, false));
            Assert.AreEqual(ExtremityType.JustEnd, value.Recompute(false, true, false, true));
            Assert.AreEqual(ExtremityType.JustEnd, value.Recompute(false, true, true, true));

            Assert.AreEqual(ExtremityType.None, value.Recompute(true, true, false, false));
            Assert.AreEqual(ExtremityType.JustBegin, value.Recompute(true, true, true, false));
            Assert.AreEqual(ExtremityType.JustEnd, value.Recompute(true, true, false, true));
            Assert.AreEqual(ExtremityType.Both, value.Recompute(true, true, true, true));

            value = ExtremityType.None;

            Assert.AreEqual(ExtremityType.None, value.Recompute(false, false, false, false));
            Assert.AreEqual(ExtremityType.None, value.Recompute(false, false, true, false));
            Assert.AreEqual(ExtremityType.None, value.Recompute(false, false, false, true));
            Assert.AreEqual(ExtremityType.None, value.Recompute(false, false, true, true));

            Assert.AreEqual(ExtremityType.None, value.Recompute(true, false, false, false));
            Assert.AreEqual(ExtremityType.JustBegin, value.Recompute(true, false, true, false));
            Assert.AreEqual(ExtremityType.None, value.Recompute(true, false, false, true));
            Assert.AreEqual(ExtremityType.JustBegin, value.Recompute(true, false, true, true));

            Assert.AreEqual(ExtremityType.None, value.Recompute(false, true, false, false));
            Assert.AreEqual(ExtremityType.None, value.Recompute(false, true, true, false));
            Assert.AreEqual(ExtremityType.JustEnd, value.Recompute(false, true, false, true));
            Assert.AreEqual(ExtremityType.JustEnd, value.Recompute(false, true, true, true));

            Assert.AreEqual(ExtremityType.None, value.Recompute(true, true, false, false));
            Assert.AreEqual(ExtremityType.JustBegin, value.Recompute(true, true, true, false));
            Assert.AreEqual(ExtremityType.JustEnd, value.Recompute(true, true, false, true));
            Assert.AreEqual(ExtremityType.Both, value.Recompute(true, true, true, true));
        }
Example #12
0
        internal static pxcmStatus QueryExtremityPointINT(IntPtr instance, ExtremityType extremityLabel, out ExtremityData extremityPoint)
        {
            extremityPoint = new ExtremityData();

            return(PXCMHandData_IHand_QueryExtremityPoint(instance, extremityLabel, extremityPoint));
        }
Example #13
0
 private static extern pxcmStatus PXCMHandData_IHand_QueryExtremityPoint(IntPtr instance, ExtremityType extremityLabel, [Out] ExtremityData extremityPoint);
Example #14
0
 internal static PXCMPoint3DF32 QueryExtremityPointINT(IntPtr instance, ExtremityType extremityLabel)
 {
     return PXCMBlobData_IBlob_QueryExtremityPoint(instance, extremityLabel);
 }
Example #15
0
 internal static extern PXCMPoint3DF32 PXCMBlobData_IBlob_QueryExtremityPoint(IntPtr instance, ExtremityType extremityLabel);
Example #16
0
 internal static PXCMPoint3DF32 QueryExtremityPointINT(IntPtr instance, ExtremityType extremityLabel)
 {
     return(PXCMBlobData_IBlob_QueryExtremityPoint(instance, extremityLabel));
 }
Example #17
0
 /**         
     @brief Get an extremity point location using a specific ExtremityType.
     @param[in] extremityLabel - the extremity type to be retrieved.
     @return The extremity point location data.        
     @see ExtremityType       
 */
 public PXCMPoint3DF32 QueryExtremityPoint(ExtremityType extremityLabel)
 {
     return QueryExtremityPointINT(instance, extremityLabel);
 }
Example #18
0
 internal static pxcmStatus QueryExtremityPointINT(IntPtr instance, ExtremityType extremityLabel, out ExtremityData extremityPoint)
 {
     extremityPoint = new ExtremityData();
     return PXCMHandData_IHand_QueryExtremityPoint(instance, extremityLabel, extremityPoint);
 }
Example #19
0
 /**
  *   @brief Return the data of a specific extremity point
  *
  *   @param[in] extremityLabel - the id of the requested extremity point.
  *   @param[out] extremityPoint - the location data of the requested extremity point.
  *
  *   @return PXC_STATUS_NO_ERROR - operation succeeded.
  *
  *   @see ExtremityType
  *   @see ExtremityData
  */
 public pxcmStatus QueryExtremityPoint(ExtremityType extremityLabel, out ExtremityData extremityPoint)
 {
     return(QueryExtremityPointINT(instance, extremityLabel, out extremityPoint));
 }