Nov 24, 2011 at 7:17 PM
Edited Nov 24, 2011 at 7:22 PM

Hi there! I was reading through your code and I realized that IRenderEntity extends ISceneEntity however, if I'm not mistaken, ISceneEntity ( is not necessarily an object that can be rendered. From version 1.3 to 2.0 of SunBurn they divided the old SceneObject on two classes because they added the components. A SceneEntity ( doesn't have any renderable data, I mean, no mesh's around there, that data is now on the new SceneObject (

Shouldn't IRenderEntity extend ISceneObject?

What are your thoughts about it?:)


Best regards, João Gonçalves

Nov 25, 2011 at 12:46 PM

Hi Joao,

The IRenderEntity will soon become obsolete and be removed from IGF and I'll explain why.

When I started working on IGF back in January 2010, I needed a way to custom render models using semi transparent materials and at the time, you couldn't do so: you had to render your models outside of SunBurn which made it difficult to get some of my game entities being part of SunBurn Scenegraph and beneficiate for instance from its collision system.

To solve this, I created IRenderEntity and overrided DeferredRenderer and ForwardRenderer managers to add a custom sort based on the camera position on SceneEntity or SceneObject instances that would implement IRenderEntity: letting me then call their custom rendering method seemlessly.

I decided to make it inherit from ISceneEntity because that's the sole thing I needed since SceneObject inherits SceneEntity. Thus, it allowed developers to plug custom rendering to any SceneEntity or SceneObject inherited class.

However, SunBurn recently added a couple of methods to the SceneEntity class to custom render directly within SunBurn. Associated with the upcoming Alpha blending support on Forward and Deferred renderers on 2.0.17, I can now get rid of this portion of the code.

I hope it's clearer now ;)