private Listener AddListener(SynchronousList <TouchListener> list, Predicate <Touch> rule, string helpText, Delegate handler, params object[] args) { var l = new TouchListener(rule, Game.Instance.ControlContext, helpText, handler, args); list.Add(l); return(l); }
/// <summary> /// Laittaa kappaleen kulman värähtelemään edestakaisin. /// </summary> /// <param name="direction">Värähtelyn suunta (1 = myötäpäivään, -1 = vastapäivään)</param> /// <param name="amplitude">Amplitudi eli ääripäiden välinen etäisyys (radiaaneina).</param> /// <param name="frequency">Taajuus, eli kuinka monta jaksoa sekunnissa värähdellään.</param> /// <param name="damping">Vaimennuskerroin. 0 = ei vaimene, mitä suurempi niin sitä nopeammin vaimenee.</param> public void OscillateAngle(double direction, UnlimitedAngle amplitude, double frequency, double damping = 0) { if (oscillators == null) { oscillators = new SynchronousList <Oscillator>(); } oscillators.Add(new AngularOscillator(this, direction, amplitude, frequency, damping)); IsUpdated = true; }
/// <summary> /// Laittaa kappaleen värähtelemään edestakaisin nykyisen paikkansa ympärillä tietyn akselin suuntaisesti. /// </summary> /// <param name="axis">Akseli, jonka suunnassa värähdellään. Pituudella ei väliä, vain suunnalla.</param> /// <param name="amplitude">Amplitudi eli ääripäiden välinen etäisyys.</param> /// <param name="frequency">Taajuus, eli kuinka monta jaksoa sekunnissa värähdellään.</param> /// <param name="phase">Vaihe, eli mistä kohtaa jaksoa aloitetaan. Vaihteluväli 0 - 2 * Math.PI (siniaalto)</param> /// <param name="damping">Vaimennuskerroin. 0 = ei vaimene, mitä suurempi niin sitä nopeammin vaimenee.</param> public void Oscillate(Vector axis, double amplitude, double frequency, double phase = 0, double damping = 0) { if (oscillators == null) { oscillators = new SynchronousList <Oscillator>(); } oscillators.Add(new LinearOscillator(this, axis, amplitude, frequency, phase, damping)); IsUpdated = true; }
/// <summary> /// Poistaa kaikki värähtelyt kappaleelta. /// </summary> /// <param name="returnToOriginalPosition">Palautetaanko kappale takaisin sen alkuperäiseen sijaintiin.</param> /// <param name="stopGradually">Suoritetaanko oskillaatio ensin loppuun, jonka jälkeen vasta pysähdytään alkuperäiseen sijaintiin.</param> public void ClearOscillations(bool returnToOriginalPosition = false, bool stopGradually = false) { if (oscillators != null && oscillators.Count >= 1) { oscillators.ForEach(o => o.Stop(returnToOriginalPosition, stopGradually)); } if (!stopGradually) { oscillators = null; } }
/// <summary> /// Lisää vapaamuotoisen tapahtumankäsittelijän. /// </summary> /// <param name="condition">Ehto josta tapahtuma laukeaa.</param> /// <param name="handler">Kutsuttava funktio.</param> public CustomEventHandler AddCustomHandler(Func <bool> condition, Action handler) { if (handlers == null) { handlers = new SynchronousList <CustomEventHandler>(); } var handlerObj = new CustomEventHandler(condition, handler); handlers.Add(handlerObj); return(handlerObj); }
internal GamePad(IInputContext input, int index) { if (input.Gamepads.Count <= index) { return; } gamepad = input.Gamepads[index]; vibrations = new SynchronousList <Vibration>(); gamepad.ButtonDown += GamepadButtonDown; gamepad.ButtonUp += GamepadButtonUp; gamepad.ThumbstickMoved += GamepadThumbstickMoved; gamepad.TriggerMoved += GamepadTriggerMoved; }
private void InitLayers() { Layers = new SynchronousList <Layer>(-3); Layers.ItemAdded += OnLayerAdded; Layers.ItemRemoved += OnLayerRemoved; for (int i = 0; i < 7; i++) { Layers.Add(new Layer()); } // This is the widget layer Layers.Add(Layer.CreateStaticLayer()); Layers.UpdateChanges(); }
/// <summary> /// Alustaa lapsioliot /// </summary> protected virtual void InitChildren() { if (_childObjects != null) { return; } _childObjects = new SynchronousList <GameObject>(); _childObjects.ItemAdded += this.OnChildAdded; _childObjects.ItemRemoved += this.OnChildRemoved; _childObjects.Changed += this.NotifyParentAboutChangedSizingAttributes; this.AddedToGame += () => _childObjects.ForEach(c => Game.OnAddObject(c)); this.Removed += () => _childObjects.ForEach(c => Game.OnRemoveObject(c)); // Objects list needs updating IsUpdated = true; }
/// <summary> /// Muodostaa uudelleen yhdistettyjen fysiikkakappaleiden fysiikkamuodot. /// Kutsuttava jos esim. lapsiolion paikkaa tai kokoa muutetaan. /// </summary> /// <param name="physObj">Kappale jonka ominaisuuksia muutettiin.</param> public void RegenerateConnectedFixtures() { /** * "Post-order" puuhakualgoritmi. * Jos muokataan obj3, tälle voidaan antaa parametrina obj3, obj2 tai obj1 ilman ongelmia. * obj1 * obj2 * obj3 * obj4 * obj5 * obj6 */ PhysicsObject physObj = this.Owner as PhysicsObject; SynchronousList <GameObject> childs = physObj.Objects; foreach (var child in childs) { if (child is PhysicsObject) { if (!child.IsAddedToGame) { continue; } PhysicsObject physChild = child as PhysicsObject; physChild.Parent.Size *= 1; physChild.Body.RegenerateConnectedFixtures(); } } PhysicsBody physMainParent = (PhysicsBody)((PhysicsObject)physObj.GetMainParent()).Body; List <Fixture> fs = physMainParent.FSBody.FixtureList._list; for (int i = 0; i < fs.Count; i++) { if ((Body)fs[i].Tag == ((PhysicsBody)physObj.Body).FSBody) { physMainParent.FSBody.Remove(fs[i]); } } if (physObj.Parent != null) { PhysicsGame.Instance.Engine.ConnectBodies((PhysicsObject)physObj.Parent, physObj); } }
internal GamePad(PlayerIndex index) { playerIndex = index; vibrations = new SynchronousList <Vibration>(); }
/// <summary> /// Poistaa kaikki värähtelyt kappaleelta. /// </summary> public void ClearOscillations() { oscillators = null; }
public ClearAction(SynchronousList <T> items) : base(items) { }
public RemoveItemAction(SynchronousList <T> items, T itemToRemove) : base(items) { this.removeItem = itemToRemove; }
public AddItemAction(SynchronousList <T> list, T itemToAdd) : base(list) { this.newItem = itemToAdd; }
public ListAction(SynchronousList <T> list) { this.list = list; }