VR-Forces 4.3.1 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
bindableLuaComponent.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
15 #include <luabind/detail/make_instance.hpp>
16 #include <luabind/detail/class_rep.hpp>
17 
19 
22 {
23 public:
26  DtBindableLuaComponentInterface(const DtVrfObject* entity, const DtString& componentName, const DtString& componentType);
27 
30 
32  virtual void bindLuaFunctions(lua_State*) = 0;
33 
35  virtual void bindLuaGlobals(lua_State*) = 0;
36 
38  virtual void bind(DtVrfObject*, const DtString& scriptId, lua_State*);
39 
41  virtual DtString bindableName(const DtString&) const;
42 
43 protected:
44  virtual bool shouldBind(lua_State*) const = 0;
45 
46 protected:
48  lua_State* myBoundForState;
50 };
51 
52 template <typename T>
54 {
55 public:
57  const DtString& componentName, const DtString& componentType) : DtBindableLuaComponentInterface(entity, componentName, componentType)
58  {
59  }
60 
62  {
63  }
64 
65  bool shouldBind(lua_State* L) const
66  {
67  std::pair<luabind::detail::class_id, void*> dynamic = luabind::detail::get_dynamic_class(L,
68  luabind::get_pointer(dynamic_cast<const T*>(this)));
69 
70  luabind::detail::class_rep* cls = luabind::detail::get_pointee_class(L, dynamic_cast<const T*>(this), dynamic.first);
71 
72  return (cls == 0);
73  }
74 };
75 
79 {
80 public:
83 
86 
89  static DtLuaScriptInterfaceExtension* create(void* usr);
90 
91 protected:
95  virtual void bindLuaFunctions(DtVrfObject* entity, const DtString& scriptId,
96  lua_State* L);
97 
98 protected:
100 };

Document ID: Generated on Wed Jul 29 00:55:00 EDT 2015 from SVN revision 155257
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)