Beispiel #1
0
 /// <summary>
 /// This constructor is only for serialisation.
 /// </summary>
 public CollisionArea()
 {
     _type = CollisionAreaType.Common;
     _name = "dummyarea";
     _collisionMaterial = CollisionMaterialType.Regular;
     _area = new Circle(Vector2.Zero, 10);
 }
Beispiel #2
0
 public CollisionArea(string name, IGeomPrimitive area, Gob owner, CollisionAreaType type, CollisionMaterialType collisionMaterial)
 {
     _type = type;
     _collisionMaterial = collisionMaterial;
     _name = name;
     _area = area;
     _owner = owner;
     if (owner != null && owner.IsRegistered) Initialize();
 }
        private static void SetCollidesWith(CollisionAreaType who, params CollisionAreaType[] collidesWith)
        {
            var union = 0;
            foreach (var with in collidesWith) union |= 1 << (int)with;
            g_collidesWith[(int)who] |= (Category)union;

            // Symmetric closure for Farseer.
            foreach (var with in collidesWith) g_collidesWith[(int)with] |= (Category)(1 << (int)who);
        }
Beispiel #4
0
 public void Enable()
 {
     if (!_typeBeforeDisabling.HasValue) throw new ApplicationException("CollisionArea is not disabled");
     Type = _typeBeforeDisabling.Value;
     _typeBeforeDisabling = null;
 }
Beispiel #5
0
 public void Disable()
 {
     if (_typeBeforeDisabling.HasValue) throw new ApplicationException("CollisionArea is already disabled");
     _typeBeforeDisabling = Type;
     Type = CollisionAreaType.Disabled;
 }
Beispiel #6
0
 public void Deserialize(NetworkBinaryReader reader, SerializationModeFlags mode, int framesAgo)
 {
     if ((mode & SerializationModeFlags.ConstantDataFromServer) != 0)
     {
         _type = (CollisionAreaType)reader.ReadInt32();
         _name = reader.ReadString();
         _collisionMaterial = (CollisionMaterialType)reader.ReadByte();
         _area.Deserialize(reader, SerializationModeFlags.AllFromServer, framesAgo);
     }
 }
Beispiel #7
0
 /// <summary>
 /// Returns distance to the closest collision area, if any, along a directed line segment.
 /// Collision areas for whom <paramref name="filter"/> returns false are ignored.
 /// </summary>
 public float? GetDistanceToClosest(Vector2 from, Vector2 to, Func<CollisionArea, bool> filter, CollisionAreaType[] areaTypes)
 {
     return PhysicsHelper.GetDistanceToClosest(_world, from, to, filter, areaTypes);
 }