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)); }
/// <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); }
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)); }
/// <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); }
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); } }
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? } }
/** @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); }
/** * @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)); }
internal static extern PXCMPoint3DF32 PXCMBlobData_IBlob_QueryExtremityPoint(IntPtr instance, ExtremityType extremityLabel);
private static extern pxcmStatus PXCMHandData_IHand_QueryExtremityPoint(IntPtr instance, ExtremityType extremityLabel, [Out] ExtremityData extremityPoint);
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)); }
internal static pxcmStatus QueryExtremityPointINT(IntPtr instance, ExtremityType extremityLabel, out ExtremityData extremityPoint) { extremityPoint = new ExtremityData(); return(PXCMHandData_IHand_QueryExtremityPoint(instance, extremityLabel, extremityPoint)); }
internal static PXCMPoint3DF32 QueryExtremityPointINT(IntPtr instance, ExtremityType extremityLabel) { return PXCMBlobData_IBlob_QueryExtremityPoint(instance, extremityLabel); }
internal static PXCMPoint3DF32 QueryExtremityPointINT(IntPtr instance, ExtremityType extremityLabel) { return(PXCMBlobData_IBlob_QueryExtremityPoint(instance, extremityLabel)); }
/** @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); }
internal static pxcmStatus QueryExtremityPointINT(IntPtr instance, ExtremityType extremityLabel, out ExtremityData extremityPoint) { extremityPoint = new ExtremityData(); return PXCMHandData_IHand_QueryExtremityPoint(instance, extremityLabel, extremityPoint); }
/** * @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)); }