示例#1
0
        protected override void OnDeselected()
        {
            base.OnDeselected();

            // throw away frame buffers on deselection.
            ControlPointVisualiser?.Expire();
            BodyPiece.RecyclePath();
        }
示例#2
0
        protected override void Update()
        {
            base.Update();

            if (IsSelected)
            {
                BodyPiece.UpdateFrom(HitObject);
            }
        }
示例#3
0
        protected override void LoadComplete()
        {
            base.LoadComplete();

            pathVersion = HitObject.Path.Version.GetBoundCopy();
            pathVersion.BindValueChanged(_ => updatePath());

            BodyPiece.UpdateFrom(HitObject);
        }
示例#4
0
        protected override void LoadComplete()
        {
            base.LoadComplete();

            controlPoints.BindTo(HitObject.Path.ControlPoints);

            pathVersion.BindTo(HitObject.Path.Version);
            pathVersion.BindValueChanged(_ => editorBeatmap?.Update(HitObject));

            BodyPiece.UpdateFrom(HitObject);
        }
示例#5
0
 public HoldNoteMask(DrawableHoldNote hold)
     : base(hold)
 {
     InternalChildren = new Drawable[]
     {
         new HoldNoteNoteMask(hold.Head),
         new HoldNoteNoteMask(hold.Tail),
         body = new BodyPiece
         {
             AccentColour = Color4.Transparent
         },
     };
 }
示例#6
0
    void Init()
    {
        if (!initialized)
        {
            initialized = true;
            bodyCount   = Random.Range(minBodyCount, maxBodyCount + 1);

            bodyPieces = new BodyPiece[bodyCount + 2];
            positions  = new Vector3[bodyCount + 3];

            int sortingRenderID = bodyCount + 2;

            BodyPiece head = Instantiate(headGameObject, transform).GetComponent <BodyPiece>();
            head.spriteRenderer.sortingOrder = sortingRenderID;
            head.transform.localPosition     = Vector3.zero;

            bodyPieces[bodyCount + 1]       = head;
            positions[positions.Length - 1] = head.transform.position;

            float offsetFrac = 1.0f / bodyCount;


            for (int i = 0; i < bodyCount; ++i)
            {
                sortingRenderID--;

                BodyPiece body = Instantiate(bodyGameObject, transform).GetComponent <BodyPiece>();
                body.transform.localPosition     = new Vector3(0, bodyOffset * (i + 1), 0);
                body.spriteRenderer.sortingOrder = sortingRenderID;
                body.animator.SetFloat("Offset", i * offsetFrac);

                bodyPieces[bodyCount + 1 - (i + 1)]         = body;
                positions[(positions.Length - 1) - (i + 1)] = body.transform.position;
            }

            BodyPiece tail = Instantiate(tailGameObject, transform).GetComponent <BodyPiece>();
            tail.transform.localPosition     = new Vector3(0, bodyOffset * (bodyCount + 1), 0);
            tail.spriteRenderer.sortingOrder = sortingRenderID;
            tail.animator.SetFloat("Offset", 1);

            bodyPieces[0] = tail;
            positions[0]  = tail.transform.position;
        }
    }
示例#7
0
 public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) =>
 BodyPiece.ReceivePositionalInputAt(screenSpacePos) || ControlPointVisualiser?.Pieces.Any(p => p.ReceivePositionalInputAt(screenSpacePos)) == true;
示例#8
0
 public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => BodyPiece.ReceivePositionalInputAt(screenSpacePos);