Ajout du plugin de déplacement smooth

This commit is contained in:
Tipragot 2023-11-02 12:50:00 +01:00
parent 562d3a74ff
commit 34a44de39a

40
src/plugins/smooth.py Normal file
View file

@ -0,0 +1,40 @@
"""
Un plugin permettant de faire des déplacements fluides des entités.
"""
from engine import Plugin, World
from engine.math import Vec2
from plugins.render import Sprite
from plugins.timing import Delta
class Target(Vec2):
"""
Composant donnant la position voulue de l'entité.
"""
class Speed(float):
"""
Composant donnant la vittesse de déplacement de l'entité.
"""
def __update_positions(world: World):
"""
Met à jour la position des entités pour se rapprocher de la position voulue.
"""
for entity in world.query(Sprite, Target):
sprite = entity[Sprite]
target = entity[Target]
speed = entity[Speed] if Speed in entity else Speed(10)
sprite.position = (
sprite.position + (target - sprite.position) * world[Delta] * speed
)
PLUGIN = Plugin(
[],
[__update_positions],
[],
)