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(); }
public DirectionalSpriteSystem() { NodeFilter <DirectionalSpriteNode> .Setup(DirectionalSpriteNode.GetTypes()); _directionalComponents = EntityController.GetNodeList <DirectionalSpriteNode>(); }