1 /** 2 * Copyright: Copyright (C) 2018 Gabriel Gheorghe, All Rights Reserved 3 * Authors: $(Gabriel Gheorghe) 4 * License: $(LINK2 https://www.gnu.org/licenses/gpl-3.0.txt, GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007) 5 * Source: $(LINK2 https://github.com/GabyForceQ/LibertyEngine/blob/master/source/liberty/scene/services.d) 6 * Documentation: 7 * Coverage: 8 * 9 * TODO: 10 * - add IProcessable service for Physics Engine sync 11 **/ 12 module liberty.scene.services; 13 14 import liberty.scene.impl; 15 16 /** 17 * Service used in startable scene entitys. 18 **/ 19 interface IStartable { 20 /** 21 * Called after all scene entitys instantiation. 22 **/ 23 void start(); 24 } 25 26 /** 27 * Service used in updateable scene entitys. 28 **/ 29 interface IUpdateable { 30 /** 31 * Called every frame to update the current state of the scene entity. 32 **/ 33 void update(); 34 } 35 36 /** 37 * Service used in renderable scene entitys. 38 **/ 39 interface IRenderable { 40 /** 41 * Called every frame to render the scene entity. 42 **/ 43 void render(Scene scene); 44 } 45 46 /** 47 * 48 **/ 49 interface IDrawable { 50 /** 51 * 52 **/ 53 void draw(); 54 } 55 56 /** 57 * 58 **/ 59 interface ISerializable { 60 /** 61 * 62 **/ 63 void serialize(); 64 65 /** 66 * 67 **/ 68 void deserialize(); 69 }