VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties 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(DtLocalObject* 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(DtLocalObject*, 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(DtLocalObject* entity, const DtString& scriptId,
96  lua_State* L);
97 
98 protected:
100 };
#define DT_DLL_vrfmodel
This file is used to determine how to build.
Definition: vrfmodelDefines.h:24
DtBindableLuaComponent(DtLocalObject *entity, const DtString &componentName, const DtString &componentType)
Definition: bindableLuaComponent.h:56
DtLocalObject * myBoundEntity
Definition: bindableLuaComponent.h:47
virtual void bindLuaFunctions(DtLocalObject *, const DtString &scriptId, lua_State *)=0
Bind any methods that are part of this class to the lua_state. The object supplied is the entity that...
DtString myType
Definition: bindableLuaComponent.h:49
DtBindableLuaComponentInterface * myExtension
Definition: bindableLuaComponent.h:99
Definition: bindableLuaComponent.h:53
binderNoArgs< _Fn > bind(const _Fn &_Func, const _Ty &_Left)
Definition: DtSTLUtilities.h:76
virtual ~DtBindableLuaComponent()
Definition: bindableLuaComponent.h:61
Multiply inherit from this class to add some convenience lua functions.
Definition: bindableLuaComponent.h:21
This class will be used to bind Lua functions to allow for control of the swinging part actuator...
Definition: bindableLuaComponent.h:78
Subclass this class in order to provide extensions to the LUA interface. In order to be considered a ...
Definition: luaScriptInterfaceExtension.h:31
bool shouldBind(lua_State *L) const
Definition: bindableLuaComponent.h:65
lua_State * myBoundForState
Definition: bindableLuaComponent.h:48
A locally simulated VRF object. Holds all internal and external data for the object, and provides access to both the current frame and next frame state data for the object. All current frame data is read-only, and next-frame data can be written to. No thread safety guarantees are made on this object during the simulation frame and it should only be accessed by the thread that is simulating the object.
Definition: localObject.h:86

Document ID: Generated on Tue Sep 24 19:28:17 EDT 2024 from SVN revision 269799
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)