示例#1
0
        private void UpdateNode(ref DirectionalSpriteNode node)
        {
            node.Animator.Billboard.Apply(node.Renderer.SpriteTr, node.Animator.Backwards, ref node.Animator.LastAngleHeight);
            if (node.Animator.Requests.Count > 0)
            {
                var request = node.Animator.Requests[0];
                if (node.Animator.Requests.Count > 1)
                {
                    for (int r = 1; r < node.Animator.Requests.Count; r++)
                    {
                        if (!request.OverrideClip && node.Animator.Requests[r].OverrideClip)
                        {
                            request = node.Animator.Requests[r];
                        }
                    }
                }
#if DEBUG
                DebugLog.Add("Playing " + request.Clip + " for " + node.Entity.DebugId);
#endif
                node.PlayAnimation(request.Clip, request.OverrideClip);
                node.Animator.Requests.Clear();
            }

            if (node.Animator.CurrentClipHolder == null || node.Animator.IsSimpleClip)
            {
                node.CheckMoving();
            }

            var orientation = SpriteFacingControl.GetCameraSide(node.Animator.Facing, node.Renderer.SpriteTr,
                                                                node.Renderer.BaseTr, 5, out var inMargin);
            if (node.Animator.Orientation == orientation || (inMargin && (orientation.IsAdjacent(node.Animator.Orientation))))
            {
                if (node.CheckFrameUpdate())
                {
                    node.UpdateSpriteFrame();
                }
                return;
            }
            node.Animator.Orientation = orientation;
            node.CheckFrameUpdate();
            node.UpdateSpriteFrame();
        }
示例#2
0
        public DirectionalSpriteSystem()
        {
            NodeFilter <DirectionalSpriteNode> .Setup(DirectionalSpriteNode.GetTypes());

            _directionalComponents = EntityController.GetNodeList <DirectionalSpriteNode>();
        }