/// <summary> /// Tarkistaa liikkuvan esineen collisionin ei liikkuvaan polygoniin /// </summary> /// <param name="who">liikkuva objekti</param> /// <param name="other">staattinen polygon</param> /// <returns></returns> private CollisionEventArgs PolygonCollision(PolygonCollider who, Polygon other) { return(PolygonCollision( who.Polygon, other, -who.Instance.Velocity, who.Instance.Position )); }
/// <summary> /// Tarkastaa törmääkö joku gameobject /// </summary> /// <param name="other">Toinen gameobject != owner</param> /// <returns>true jos törmää, false muuten</returns> public override bool Collides(GameObject other, out CollisionEventArgs result) { result = new CollisionEventArgs(); // ei voida törmätä itseen tai olemattomaan ;) if (other.Collider == null || other == Instance || !other.IsCollidable) { return(false); } PolygonCollider pCollider = other.Collider as PolygonCollider; if (pCollider == null) { throw new NotImplementedException("Ei osata collidaita " + other.Collider.GetType().Name); } result = PolygonCollision(this, pCollider); return(result.Intersecting || result.WillIntersect); }