source: 2013/30/MiskaK/MW2(My Warfare 2)/Paranneltu Jypeli/GameObjects/PhysicsObject/IPhysicsObject.cs @ 4507

Revision 4507, 2.7 KB checked in by anlakane, 6 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using Physics2DDotNet;
6using Physics2DDotNet.Ignorers;
7
8namespace Jypeli
9{
10    /// <summary>
11    /// Yhteinen rajapinta kaikille fysiikkaolioille.
12    /// </summary>
13    public interface IPhysicsObject : IGameObject, DelayedDestroyable
14    {
15        PhysicsStructure ParentStructure { get; }
16
17        Body Body { get; }
18
19        Ignorer CollisionIgnorer { get; set; }
20        int CollisionIgnoreGroup { get; set; }
21
22        double Mass { get; set; }
23        double MomentOfInertia { get; set; }
24        bool CanRotate { get; set; }
25
26        double Restitution { get; set; }
27        double StaticFriction { get; set; }
28        double KineticFriction { get; set; }
29
30        Vector Velocity { get; set; }
31        Vector Acceleration { get; set; }
32        double AngularVelocity { get; set; }
33        double AngularAcceleration { get; set; }
34       
35        double LinearDamping { get; set; }
36        double AngularDamping { get; set; }
37       
38        bool IgnoresExplosions { get; set; }
39        bool IgnoresCollisionResponse { get; set; }
40        bool IgnoresGravity { get; set; }
41        bool IgnoresPhysicsLogics { get; set; }
42
43        /// <summary>
44        /// Tapahtuu, kun törmätään toiseen fysiikkaolioon.
45        /// </summary>
46        event CollisionHandler<IPhysicsObject, IPhysicsObject> Collided;
47
48        void Push( Vector force );
49        void Push( Vector force, TimeSpan time );
50        void Hit( Vector impulse );
51        void ApplyTorque( double torque );
52
53        void Stop();
54        void StopHorizontal();
55        void StopVertical();
56    }
57
58    /// <summary>
59    /// Jypelin sisäiset metodit ja propertyt joihin käyttäjän ei tarvitse
60    /// päästä käsiksi kuuluvat tähän luokkaan. Kaikki oliot jotka toteuttavat
61    /// IPhysicsObject-rajapinnan toteuttavat myös IPhysicsObjectInternal-rajapinnan.
62    /// Ota tämä huomioon jos aiot tehdä oman olion joka toteuttaa suoraan
63    /// IPhysicsObject(Internal)-rajapinnan.
64    /// <example>
65    /// void UpdateObject(IPhysics obj)
66    /// {
67    ///    ((IPhysicsObjectInternal)obj).Update();
68    /// }
69    /// </example>
70    /// </summary>
71    public interface IPhysicsObjectInternal : IGameObjectInternal, IPhysicsObject
72    {
73    }
74
75    /// <summary>
76    /// Törmäystapahtumiin liitettävän metodin tyyppi. Törmäyksen käsittelevällä
77    /// metodilla ei ole paluuarvoa ja se ottaa yhden <code>Collision</code>-tyyppisen
78    /// parametrin.
79    /// </summary>
80    public delegate void CollisionHandler<O,T>( O collidingObject, T otherObject ) where O : IPhysicsObject where T : IPhysicsObject;
81}
Note: See TracBrowser for help on using the repository browser.