[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: C++ Integration and Assignments
- From: "Marc Fascia" <m_fascia@...>
- Date: Thu, 21 Sep 2006 22:27:21 +0200
Hi,
I am currently interfacing LUA with my game engine (C++) and the process is
going rather smoothly but i've come across some issues I can't tackle all by
myself :)
On the engine side, all objects share a common base class called Object
which has a reflection system allowing to browse/access/invoke object fields
and members at runtime (just like the C# or Java reflection system).
I want to manipulate these objects via Lua in a C++/OOP fashion. I managed
to dereference sub objects by overloading the __index of my Object metatable
and even call objects methods by overloading __call. These two hooks are
very simple since they only need to query the reflection system for the
right object field or method and return a pointer on an object via a
lightuserdata or a closure on the needed method.
But when it come to assignments, I can't get some simple syntax :
C++:
class Object
{
String * ToString();
Object * Parse( String * str );
};
class Vector : public Object
{
Float X;
Float Y;
...
Float SetNull();
};
Lua:
-- I want to write code like this
v = new( "Vector" );
v:SetNull();
v.x = 0.2; -- for now, i must write: v.x:Parse( CreateString( "0.2" ) );
v.y = 1.5; -- for now, i must write: v.y:Parse( CreateString( "1.5" ) );
-- i need to hook to the assignment operation in order to correctly set
v.x.
So basically what I want is a way to convert some lua values to a custom
format when stumbling across code like "EngineObjectRef = LuaValue". Is this
possible or do I need to work my integration differently ?
Many thanks in advance.
-Marc Fascia
_________________________________________________________________
Découvrez Windows Live Messenger : le futur de MSN Messenger !
www.windowslivemessenger.fr