Простой предметно-ориентированный язык может помочь; создайте класс AnimationDirector, который будет интерпретировать операторы из сценария анимации и выполнять соответствующую работу в течение Draw
и Update
. Сам DSL может быть таким простым, как
texture 0,0; 800,600; 5.0
, который создаст объект с текстурой texture
в точке (0,0) и переместит его в (800 600) в течение 5 секунд, а затем уничтожит его.
Если вы хотите что-то более полезное,
create x texture 0,0
over 5.0 move x 800,600
destroy x
, который позволит вам стать более креативным и расширить возможности анимации (например, добавление вращения и т. Д., Если вы этого хотите).
Теперь, когда вам нужно запустить анимацию, просто передайте соответствующее имя ресурса директору, и пусть он оттуда все обрабатывает. В качестве альтернативы вы можете создать какой-то тип AnimatedEntity, который ссылается на конкретный скрипт и вызывает сам AnimationDirector для Draw
и Update
; в зависимости от того, как вы работали с двигателем, это может быть более подходящим для его конструкции.