ecs #58

Merged
raphael merged 70 commits from ecs into main 2023-11-03 15:29:36 +00:00
Showing only changes of commit 34a44de39a - Show all commits

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],
[],
)