private HapticHandle CreateImpulseHandle(SideOfHaptic side) { if (TypeOfImpulse == ImpulseType.None) { return(null); } else if (TypeOfImpulse == ImpulseType.Emanation) { bool mirror = side == SideOfHaptic.Left; var impulse = ImpulseGenerator.BeginEmanatingEffect(mirror ? StartLocation.Mirror() : StartLocation, depth); HapticSequence seq = new HapticSequence(); seq.LoadFromAsset(HapticSequence); impulse.WithEffect(seq).WithAttenuation(attenuationPercentage).WithDuration(Duration); return(impulse.Play()); } else if (TypeOfImpulse == ImpulseType.Traversal) { bool mirror = side == SideOfHaptic.Left; var impulse = ImpulseGenerator.BeginTraversingImpulse( mirror ? StartLocation.Mirror() : StartLocation, mirror ? EndLocation.Mirror() : EndLocation); HapticSequence seq = new HapticSequence(); seq.LoadFromAsset(HapticSequence); impulse.WithEffect(seq).WithAttenuation(attenuationPercentage).WithDuration(Duration); return(impulse.Play()); } return(null); }
private HapticHandle CreateHandle(SideOfHaptic side) { HapticHandle handle = null; if (TypeOfPlayable == PlayableType.Sequence) { HapticSequence seq = new HapticSequence(); seq.LoadFromAsset(PlayableResourceName); var areaFlag = side == SideOfHaptic.Left ? Where.Mirror() : Where; handle = seq.CreateHandle(areaFlag); } else if (TypeOfPlayable == PlayableType.Pattern) { HapticPattern pat = new HapticPattern(); pat.LoadFromAsset(PlayableResourceName); handle = pat.CreateHandle(); } else if (TypeOfPlayable == PlayableType.Experience) { HapticExperience exp = new HapticExperience(); exp.LoadFromAsset(PlayableResourceName); handle = exp.CreateHandle(); } else if (TypeOfPlayable == PlayableType.Impulse) { return(CreateImpulseHandle(side)); } return(handle); }
public void Play(SideOfHaptic side) { if (ReadyToPlay) { //Debug.Log(side.ToString() + "\n", this); handle = MyHaptic.TryToPlayPlay(side); ResetDelayBetweenPlay(); } }
public HapticHandle TryToPlayPlay(SideOfHaptic side) { if (CanPlay(side)) { var handle = CreateHandle(side); if (handle != null) { handle.Play(); return(handle); } } return(null); }
public bool CanPlay(SideOfHaptic side) { //Debug.Log("Can Play: " + side.ToString() + "\n"); if (side == SideOfHaptic.None) { return(false); } if (TypeOfPlayable == PlayableType.Sequence) { return(PlayableResourceName.Length > 0 && Where != AreaFlag.None); } else if (TypeOfPlayable == PlayableType.Pattern) { return(PlayableResourceName.Length > 0); } else if (TypeOfPlayable == PlayableType.Experience) { return(PlayableResourceName.Length > 0); } else if (TypeOfPlayable == PlayableType.Impulse) { if (TypeOfImpulse == ImpulseType.None) { return(false); } else if (TypeOfImpulse == ImpulseType.Emanation) { return(HapticSequence.Length > 0 && StartLocation != AreaFlag.None); } else if (TypeOfImpulse == ImpulseType.Traversal) { return(HapticSequence.Length > 0 && StartLocation != AreaFlag.None && EndLocation != AreaFlag.None); } } return(true); }