public SpriterCollisionCircle(ISpriterPhysicsEntity entity, string spritePartName, Vector2?relativePosition = null, float scale = 1f) : base(entity) { _spriterPhysicsEntity = entity; _spritePartName = spritePartName; _spriterPartFile = FindSpriterFile(spritePartName); _relativePosition = relativePosition ?? Vector2.Zero; _scale = scale; }
public SpriterCollisionConvexPolygon(ISpriterPhysicsEntity entity, String spritePartName, Vector2?relativePosition = null, float scale = 1f) : base(entity) { _spriterPhysicsEntity = entity; int folderId = 0; _spriterPartFile = SpriterUtils.GetSpriterFile(spritePartName, _spriterPhysicsEntity.GetCurrentAnimator(), out folderId); _relativePosition = relativePosition ?? Vector2.Zero; Vertices.Add(Vector2.Zero); Vertices.Add(new Vector2(_spriterPartFile.Width, 0) * scale); Vertices.Add(new Vector2(_spriterPartFile.Width, _spriterPartFile.Height) * scale); Vertices.Add(new Vector2(0, _spriterPartFile.Height) * scale); }
public CollisionElement CreateBoundingBox(ISpriterPhysicsEntity spriterPhysicsEntity, float scale = 1f) { var width = (GetSpritePartWidth("body.png") * scale) * 0.9f; var height = (GetSpritePartHeight("body.png") * scale) * 0.95f; var boxScale = 0.85f; var offset = new Vector2( ((1f - boxScale) / 2f) * width, height - (height * boxScale) ); var relativePosition = Vector2.Zero; relativePosition += offset; return(new SpriterCollisionConvexPolygon(spriterPhysicsEntity, "body.png", relativePosition, new Vector2(boxScale))); }
public SpriterCollisionConvexPolygon(ISpriterPhysicsEntity entity, String spritePartName, Vector2?relativePosition = null, Vector2?scaleVector = null) : base(entity) { var scale = Vector2.One; if (scaleVector.HasValue) { scale = scaleVector.Value; } _spriterPhysicsEntity = entity; _spriterPartFile = SpriterUtils.GetSpriterFile(spritePartName, _spriterPhysicsEntity.GetCurrentAnimator()); _relativePosition = relativePosition ?? Vector2.Zero; Vertices.Add(Vector2.Zero); Vertices.Add(new Vector2(_spriterPartFile.Width, 0) * scale); Vertices.Add(new Vector2(_spriterPartFile.Width, _spriterPartFile.Height) * scale); Vertices.Add(new Vector2(0, _spriterPartFile.Height) * scale); }