Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2008-11-15 19:24:55 +0000
committerStijn Buys <ingar@osirion.org>2008-11-15 19:24:55 +0000
commit28ba97bdd8fb6ca352dc49dba01a66bd155ad523 (patch)
treeeb4abd0505eb842e15201783529814bda1ae6e76 /src/core/extension.h
parent1f0dbeeabdffff096908473168898c5fa63bcff0 (diff)
entity extensions
Diffstat (limited to 'src/core/extension.h')
-rw-r--r--src/core/extension.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/core/extension.h b/src/core/extension.h
new file mode 100644
index 0000000..0b9ecad
--- /dev/null
+++ b/src/core/extension.h
@@ -0,0 +1,42 @@
+/*
+ core/extension.h
+ This file is part of the Osirion project and is distributed under
+ the terms of the GNU General Public License version 2
+*/
+
+#ifndef __INCLUDED_CORE_EXTENSION_H__
+#define __INCLUDED_CORE_EXTENSION_H__
+
+namespace core {
+ class Extension;
+}
+
+#include "core/entity.h"
+
+namespace core {
+
+/// a abstract base class for entity extensions
+class Extension {
+public:
+ /// extension types
+ enum Type { Client=0, Render=1, Sound=2, Game=3 };
+
+ inline Type type() const { return extension_type; }
+
+ inline Entity *entity() { return extension_entity; }
+
+ Extension(Type type, Entity *entity);
+ virtual ~Extension();
+
+ virtual void frame(float elapsed) = 0;
+
+private:
+ Type extension_type;
+ Entity *extension_entity;
+
+};
+
+} // namespace core
+
+#endif // __INCLUDED_CORE_EXTENSION_H__
+