本文整理汇总了C#中Vector2f.LengthSquared方法的典型用法代码示例。如果您正苦于以下问题:C# Vector2f.LengthSquared方法的具体用法?C# Vector2f.LengthSquared怎么用?C# Vector2f.LengthSquared使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Vector2f
的用法示例。
在下文中一共展示了Vector2f.LengthSquared方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: TryCollide
/// <summary>
/// returns true if collider intersects a collidable under management and calls Bump.
/// </summary>
/// <param name="collider">Rectangle to check for collision</param>
/// <returns></returns>
public bool TryCollide(Entity entity, Vector2f offset, bool bump = true)
{
var collider = (ColliderComponent)entity.GetComponent(ComponentFamily.Collider);
if (collider == null) return false;
var ColliderAABB = collider.WorldAABB;
if (offset.LengthSquared() > 0)
{
ColliderAABB.Left += offset.X;
ColliderAABB.Top += offset.Y;
}
Vector2f[] points =
{
new Vector2f(ColliderAABB.Left, ColliderAABB.Top),
new Vector2f(ColliderAABB.Right(), ColliderAABB.Top),
new Vector2f(ColliderAABB.Right(), ColliderAABB.Bottom()),
new Vector2f(ColliderAABB.Left, ColliderAABB.Bottom())
};
var aabbs =
points
.Select(GetBucket) // Get the buckets that correspond to the collider's points.
.Distinct()
.SelectMany(b => b.GetPoints()) // Get all of the points
.Select(p => p.ParentAABB) // Expand points to distinct AABBs
.Distinct()
.Where(aabb => aabb.Collidable.AABB.Intersects(ColliderAABB)); //try all of the AABBs against the target rect.
//try all of the AABBs against the target rect.
bool collided = false;
foreach (var aabb in aabbs)
{
if (aabb.IsHardCollider) //If the collider is supposed to prevent movement
{
collided = true;
}
if(bump) aabb.Collidable.Bump(entity);
}
return collided || IoCManager.Resolve<IMapManager>().GetTilesIntersecting(ColliderAABB, true).Any(t => t.Tile.TileDef.IsCollidable);
}