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;
 }
示例#2
0
        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);
        }
示例#3
0
        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)));
        }
示例#4
0
        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);
        }