public static void DoRegion(Rect rect, SoundDef sound) { if (sound != null) { if (Event.current.type == EventType.Repaint) { MouseoverSounds.MouseoverRegionCall item = default(MouseoverSounds.MouseoverRegionCall); item.rect = rect; item.sound = sound; item.mouseIsOver = Mouse.IsOver(rect); MouseoverSounds.frameCalls.Add(item); } } }
public static void ResolveFrame() { for (int i = 0; i < MouseoverSounds.frameCalls.Count; i++) { if (MouseoverSounds.frameCalls[i].mouseIsOver) { if (MouseoverSounds.lastUsedCallInd != i && !MouseoverSounds.frameCalls[i].Matches(MouseoverSounds.lastUsedCall) && MouseoverSounds.forceSilenceUntilFrame < Time.frameCount) { MouseoverSounds.frameCalls[i].sound.PlayOneShotOnCamera(null); } MouseoverSounds.lastUsedCallInd = i; MouseoverSounds.lastUsedCall = MouseoverSounds.frameCalls[i]; MouseoverSounds.frameCalls.Clear(); return; } } MouseoverSounds.lastUsedCall = MouseoverSounds.MouseoverRegionCall.Invalid; MouseoverSounds.lastUsedCallInd = -1; MouseoverSounds.frameCalls.Clear(); }
public bool Matches(MouseoverSounds.MouseoverRegionCall other) { return(this.rect.Equals(other.rect)); }