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 
61  virtual ~DtBindableLuaComponent() override {}
62 
63  virtual bool shouldBind(lua_State* L) const override
64  {
65  std::pair<luabind::detail::class_id, void*> dynamic = luabind::detail::get_dynamic_class(L,
66  luabind::get_pointer(dynamic_cast<const T*>(this)));
67 
68  luabind::detail::class_rep* cls = luabind::detail::get_pointee_class(L, dynamic_cast<const T*>(this), dynamic.first);
69 
70  return (cls == 0);
71  }
72 };
73 
77 {
78 public:
81 
83  virtual ~DtBindableLuaComponentExtension() override;
84 
87  static DtLuaScriptInterfaceExtension* create(void* usr);
88 
89 protected:
93  virtual void bindLuaFunctions(DtLocalObject* entity, const DtString& scriptId, lua_State* L) override;
94 
95 protected:
97 };
#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:96
Definition: bindableLuaComponent.h:53
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:76
Subclass this class in order to provide extensions to the LUA interface. In order to be considered a ...
Definition: luaScriptInterfaceExtension.h:31
virtual ~DtBindableLuaComponent() override
Definition: bindableLuaComponent.h:61
lua_State * myBoundForState
Definition: bindableLuaComponent.h:48
virtual bool shouldBind(lua_State *L) const override
Definition: bindableLuaComponent.h:63
A locally simulated VRF object.
Definition: localObject.h:98

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)