mirror of
https://github.com/osukey/osukey.git
synced 2025-05-09 23:57:18 +09:00
Pool catcher trail sprite
This commit is contained in:
parent
8757c89246
commit
12c6b3c1fb
@ -6,6 +6,7 @@ using JetBrains.Annotations;
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Animations;
|
using osu.Framework.Graphics.Animations;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
|
using osu.Framework.Graphics.Pooling;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osuTK;
|
using osuTK;
|
||||||
using osuTK.Graphics;
|
using osuTK.Graphics;
|
||||||
@ -20,6 +21,8 @@ namespace osu.Game.Rulesets.Catch.UI
|
|||||||
{
|
{
|
||||||
private readonly Catcher catcher;
|
private readonly Catcher catcher;
|
||||||
|
|
||||||
|
private readonly DrawablePool<CatcherTrailSprite> trailPool;
|
||||||
|
|
||||||
private readonly Container<CatcherTrailSprite> dashTrails;
|
private readonly Container<CatcherTrailSprite> dashTrails;
|
||||||
private readonly Container<CatcherTrailSprite> hyperDashTrails;
|
private readonly Container<CatcherTrailSprite> hyperDashTrails;
|
||||||
private readonly Container<CatcherTrailSprite> endGlowSprites;
|
private readonly Container<CatcherTrailSprite> endGlowSprites;
|
||||||
@ -80,8 +83,9 @@ namespace osu.Game.Rulesets.Catch.UI
|
|||||||
|
|
||||||
RelativeSizeAxes = Axes.Both;
|
RelativeSizeAxes = Axes.Both;
|
||||||
|
|
||||||
InternalChildren = new[]
|
InternalChildren = new Drawable[]
|
||||||
{
|
{
|
||||||
|
trailPool = new DrawablePool<CatcherTrailSprite>(30),
|
||||||
dashTrails = new Container<CatcherTrailSprite> { RelativeSizeAxes = Axes.Both },
|
dashTrails = new Container<CatcherTrailSprite> { RelativeSizeAxes = Axes.Both },
|
||||||
hyperDashTrails = new Container<CatcherTrailSprite> { RelativeSizeAxes = Axes.Both, Colour = Catcher.DEFAULT_HYPER_DASH_COLOUR },
|
hyperDashTrails = new Container<CatcherTrailSprite> { RelativeSizeAxes = Axes.Both, Colour = Catcher.DEFAULT_HYPER_DASH_COLOUR },
|
||||||
endGlowSprites = new Container<CatcherTrailSprite> { RelativeSizeAxes = Axes.Both, Colour = Catcher.DEFAULT_HYPER_DASH_COLOUR },
|
endGlowSprites = new Container<CatcherTrailSprite> { RelativeSizeAxes = Axes.Both, Colour = Catcher.DEFAULT_HYPER_DASH_COLOUR },
|
||||||
@ -118,14 +122,14 @@ namespace osu.Game.Rulesets.Catch.UI
|
|||||||
{
|
{
|
||||||
var texture = (catcher.CurrentDrawableCatcher as TextureAnimation)?.CurrentFrame ?? ((Sprite)catcher.CurrentDrawableCatcher).Texture;
|
var texture = (catcher.CurrentDrawableCatcher as TextureAnimation)?.CurrentFrame ?? ((Sprite)catcher.CurrentDrawableCatcher).Texture;
|
||||||
|
|
||||||
var sprite = new CatcherTrailSprite(texture)
|
CatcherTrailSprite sprite = trailPool.Get();
|
||||||
{
|
|
||||||
Anchor = catcher.Anchor,
|
sprite.Texture = texture;
|
||||||
Scale = catcher.Scale,
|
sprite.Anchor = catcher.Anchor;
|
||||||
Blending = BlendingParameters.Additive,
|
sprite.Scale = catcher.Scale;
|
||||||
RelativePositionAxes = catcher.RelativePositionAxes,
|
sprite.Blending = BlendingParameters.Additive;
|
||||||
Position = catcher.Position
|
sprite.RelativePositionAxes = catcher.RelativePositionAxes;
|
||||||
};
|
sprite.Position = catcher.Position;
|
||||||
|
|
||||||
target.Add(sprite);
|
target.Add(sprite);
|
||||||
|
|
||||||
|
@ -1,17 +1,29 @@
|
|||||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
||||||
// See the LICENCE file in the repository root for full licence text.
|
// See the LICENCE file in the repository root for full licence text.
|
||||||
|
|
||||||
|
using osu.Framework.Graphics;
|
||||||
|
using osu.Framework.Graphics.Pooling;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Textures;
|
using osu.Framework.Graphics.Textures;
|
||||||
using osuTK;
|
using osuTK;
|
||||||
|
|
||||||
namespace osu.Game.Rulesets.Catch.UI
|
namespace osu.Game.Rulesets.Catch.UI
|
||||||
{
|
{
|
||||||
public class CatcherTrailSprite : Sprite
|
public class CatcherTrailSprite : PoolableDrawable
|
||||||
{
|
{
|
||||||
public CatcherTrailSprite(Texture texture)
|
public Texture Texture
|
||||||
{
|
{
|
||||||
Texture = texture;
|
set => sprite.Texture = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
private readonly Sprite sprite;
|
||||||
|
|
||||||
|
public CatcherTrailSprite()
|
||||||
|
{
|
||||||
|
InternalChild = sprite = new Sprite
|
||||||
|
{
|
||||||
|
RelativeSizeAxes = Axes.Both
|
||||||
|
};
|
||||||
|
|
||||||
Size = new Vector2(CatcherArea.CATCHER_SIZE);
|
Size = new Vector2(CatcherArea.CATCHER_SIZE);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user