fork download
  1. trait Component { }
  2. trait TransformComponent extends Component {
  3. var x : Int = 0;
  4. }
  5. trait VelocityComponent extends TransformComponent {
  6. var vx : Int = 0;
  7. }
  8. trait RenderComponent extends TransformComponent with VelocityComponent {
  9. def render() = System.out.println("x=" + x);
  10. }
  11. class Entity { }
  12.  
  13. object Foo {
  14. def updatePhysical(body:VelocityComponent) {
  15. body.x += body.vx;
  16. }
  17. }
  18.  
  19. object Main extends App {
  20. val player = new Entity with TransformComponent with RenderComponent;
  21. player.vx = 10;
  22. Foo.updatePhysical(player);
  23. player.render();
  24. }
Success #stdin #stdout 0.19s 247360KB
stdin
Standard input is empty
stdout
x=10