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 }