Hi all,
I would like to clarify the steps I want to take with the redesign.
I am using dtEntity at work for several projects. My company has done
a huge push to make everybody use a single commercial game engine.
While I have some projects that won't switch away from OSG because of
data workflow issues and other reasons, I will definitely have to make
the jump soon. I could now completely start over on all those projects
rewriting them with the tools of the new game engine, or I could
simply swap out the graphics part of dtEntity, keeping the "business
logic" of the applications. My projects are not graphics-heavy (more
like pushing around meshes in space), so replacing the graphics part
is the easier way for me to go.
I have just done some more commits, abstracting the interfaces to
debug draw, window and input system.
What still needs to be done is create dtEntityOSG and push all osg
relevant entity systems there.
I plan to keep map, layer, layer attach point, audio systems in core dtEntity.
And that's about all I will have to do. I don't plan to rewrite the
camera and light systems to somehow abstract away the game engine,
they also won't implement abstract interfaces. I will simply write a
new set of entity systems for the new game engine. And if the new
camera component also has position, up and eye direction properties
then it is even compatible on a map level to the OSG camera component.
Then I can use the map storage system, the Qt widgets, the javascript
bindings and all the other stuff for the new game engine, while being
completely free in the set of graphics features I want to support.
About performance: Using virtual interfaces adds some overhead, but I
think the methods of the abstract interfaces won't be called hundreds
of times per frame, so it won't cost that much.
Also maybe it is possible to make the compiler optimize away the
virtual function calls:
http://fabiensanglard.net/doom3/index.php - search for "idTech4 high
level objects are all abstract classes with virtual methods".
This will probably only work for code in the main lib, but still.
Cheers,
Martin
2012/7/23 Peter C. <
th3f...@gmail.com>: