/// <summary> /// This constructor is only for serialisation. /// </summary> public CollisionArea() { _type = CollisionAreaType.Common; _name = "dummyarea"; _collisionMaterial = CollisionMaterialType.Regular; _area = new Circle(Vector2.Zero, 10); }
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); }
public void Enable() { if (!_typeBeforeDisabling.HasValue) throw new ApplicationException("CollisionArea is not disabled"); Type = _typeBeforeDisabling.Value; _typeBeforeDisabling = null; }
public void Disable() { if (_typeBeforeDisabling.HasValue) throw new ApplicationException("CollisionArea is already disabled"); _typeBeforeDisabling = Type; Type = CollisionAreaType.Disabled; }
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); } }
/// <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); }