public Animation(Func <Sprite[]> animFrameFunc, GBAVV_Map2D_Animation crashAnim, int xPos, int yPos)
                {
                    AnimFrameFunc = animFrameFunc;
                    CrashAnim     = crashAnim;
                    XPos          = xPos;
                    YPos          = yPos;

                    AnimHitBox = new Unity_ObjAnimationCollisionPart[]
                    {
                        new Unity_ObjAnimationCollisionPart()
                        {
                            Type      = Unity_ObjAnimationCollisionPart.CollisionType.HitTriggerBox,
                            XPosition = CrashAnim.HitBox.X,
                            YPosition = CrashAnim.HitBox.Y,
                            Width     = CrashAnim.HitBox.Width + 1,
                            Height    = CrashAnim.HitBox.Height + 1,
                        },
                    };
                }
Example #2
0
        private void SetCollisionBox(Unity_ObjAnimationCollisionPart collision, SpriteRenderer collisionSpriteRenderer, Vector2 pivot)
        {
            var mirroredX = ObjData.FlipHorizontally;
            var mirroredY = ObjData.FlipVertically;

            Vector2 pos = new Vector2(
                ((collision.XPosition - pivot.x) * (mirroredX ? -1f : 1f) * ObjData.Scale + pivot.x) / (float)LevelEditorData.Level.PixelsPerUnit,
                (((-collision.YPosition - pivot.y) * (mirroredY ? -1f : 1f) * ObjData.Scale + pivot.y) / (float)LevelEditorData.Level.PixelsPerUnit));

            collisionSpriteRenderer.transform.localPosition = new Vector3(pos.x, pos.y, collisionSpriteRenderer.transform.localPosition.z);
            collisionSpriteRenderer.transform.localScale    = new Vector3(
                (collision.Width / (float)LevelEditorData.Level.PixelsPerUnit) * (mirroredX ? -1f : 1f),
                (collision.Height / (float)LevelEditorData.Level.PixelsPerUnit) * (mirroredY ? -1f : 1f)) * ObjData.Scale;

            // Set color depending on the collision type
            switch (collision.Type)
            {
            case Unity_ObjAnimationCollisionPart.CollisionType.AttackBox:
                collisionSpriteRenderer.color = new Color(1f, 0f, 0f, 0.4f);
                break;

            case Unity_ObjAnimationCollisionPart.CollisionType.SizeChange:
            case Unity_ObjAnimationCollisionPart.CollisionType.VulnerabilityBox:
                collisionSpriteRenderer.color = new Color(0f, 1f, 0f, 0.4f);
                break;

            case Unity_ObjAnimationCollisionPart.CollisionType.TriggerBox:
                collisionSpriteRenderer.color = new Color(1f, 0.7f, 0f, 0.4f);
                break;

            case Unity_ObjAnimationCollisionPart.CollisionType.HitTriggerBox:
            case Unity_ObjAnimationCollisionPart.CollisionType.ExitLevel:
                collisionSpriteRenderer.color = new Color(1f, 0f, 1f, 0.4f);
                break;

            case Unity_ObjAnimationCollisionPart.CollisionType.Gendoor:
                collisionSpriteRenderer.color = new Color(0f, 1f, 0.7f, 0.4f);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }