Irrlicht .NET CP

Announce new projects or updates of Irrlicht Engine related tools, games, and applications.
Also check the Wiki
DeusXL
Posts: 114
Joined: Sun Mar 14, 2004 9:37 am
Contact:

Irrlicht .NET CP

Post by DeusXL »

Irrlicht .NET CP is now hosted by sourceforge right here :
http://irrlichtnetcp.sourceforge.net/in ... /Main_Page
Please refer to this page to have the last version, these informations are outdated !

Here is a project I started couple of days ago, when I switched my workspace to Linux.

Name : Irrlicht .NET Cross-Platform
What : It is a complete wrapper for irrlicht which work on Windows (with .NET framework 2 or 1.1), Linux (with Mono 1.1.15) or any Irrlicht and Mono compatible system (such as MacOS but I can't provide libraries for this one) and it allows anyone to make an entirely cross-platform application without even recompiling his code on another OS.
How : Entirely written in C#, the C#=>C++ part uses Platform Invokes and C++=>C# (for events for instance) uses delegates and function pointers.
Why : Because :)
Who : Me

Progress : 95% of the whole Irrlicht engine (including the whole GUI part) is finished but not very well commented (it's EXACTLY the same methods as Irrlicht C++ so you can refer to Irrlicht's documentation). Of course the 5% features left are not the most important one.
Plan for the future : To allow everyone to make the same things with Irrlicht.NET than with Irrlicht C++... For instance making their own particle affectors or mesh loaders in any .NET compatible language without knowing anything of C++.

And if you are too lazy to download anything, just watch an example screenshot :
Image

PS : Please notice that the wrapper as an enormous amount of features so I had not the time to test them all.
Last edited by DeusXL on Thu Aug 31, 2006 11:09 am, edited 4 times in total.
Irrlicht .NET complete and Cross Platform Wrapper
The kid on my avatar wrote:A painless lesson is one without any meaning
noone88
Posts: 49
Joined: Sat May 27, 2006 3:28 pm

Post by noone88 »

G R E A T job :!:

It's also possible to add the wrapper code into the irrlicht.dll... that's fantastic!

Keep it up
DeusXL
Posts: 114
Joined: Sun Mar 14, 2004 9:37 am
Contact:

Post by DeusXL »

noone88 wrote:t's also possible to add the wrapper code into the irrlicht.dll... that's fantastic!
True but I wanted to compile it with the same project file on Linux and Irrlicht on Linux is not a dynamic library... But of course if you only want to use it on one platform, you can compile it with one Dll.

Anyway, thanks a lot :) I'll try to upload a new version with things as KeyMapping and FollowSplineAnimator when I have finished the .NET affectors and emitters (to create particle affectors and emitters directly on your .NET code) :)
Irrlicht .NET complete and Cross Platform Wrapper
The kid on my avatar wrote:A painless lesson is one without any meaning
hybrid
Admin
Posts: 14143
Joined: Wed Apr 19, 2006 9:20 pm
Location: Oldenburg(Oldb), Germany
Contact:

Post by hybrid »

Irrlicht can be compiled as a shared object under Linux with 'make sharedlib'
DeusXL
Posts: 114
Joined: Sun Mar 14, 2004 9:37 am
Contact:

Post by DeusXL »

hybrid wrote:Irrlicht can be compiled as a shared object under Linux with 'make sharedlib'
Yeah but there is still the problem that I will need to include my version of Irrlicht with every release :? And only for one dll, I guess it's a choice that only the programmer can make and that's why I only provide the wrapper's files.
Irrlicht .NET complete and Cross Platform Wrapper
The kid on my avatar wrote:A painless lesson is one without any meaning
DeusXL
Posts: 114
Joined: Sun Mar 14, 2004 9:37 am
Contact:

Post by DeusXL »

New Version !!! (0.2)

-Many bugfixes on platform-specific functions, of course I would need testing to help reporting bugs.
-The shader part now works perfectly whereas before it was more a hack. Moreover I added many "ToShader" functions to global types such as Vectors and Colors to directly use them with shaders. I give a simple example with the particle (see down).
-Adding features such as key mapping or Follow Spline animators (not yet tested but should work)
-You can now create your own Particle affectors and emitters directly on the .NET code and with any .NET language ! I added an example with Particle affectors and Particle emitters (also with shaders).
I hope that soon there will be functions such as mesh loading, texture loading or things like that :)

You can use it exactly the same way as the old version so please refer to the first post on this topic.

Do not hesitate to give any idea/comment/point of view on the wrapper or tell me if you think that something should be implemented !
Irrlicht .NET complete and Cross Platform Wrapper
The kid on my avatar wrote:A painless lesson is one without any meaning
buhatkj
Posts: 444
Joined: Fri Dec 12, 2003 4:53 am
Contact:

meshbuffers

Post by buhatkj »

does this contain the patch from adding getMeshBuffer to .NET?

http://irrlicht.sourceforge.net/phpBB2/ ... hp?t=12493

I would like to try converting the IrrnewtonSharp tutorial to your wrapper, see what is involved there...
My irrlicht-based projects have gone underground for now, but if you want, check out my webcomic instead! http://brokenboomerang.net
DeusXL
Posts: 114
Joined: Sun Mar 14, 2004 9:37 am
Contact:

Re: meshbuffers

Post by DeusXL »

buhatkj wrote:does this contain the patch from adding getMeshBuffer to .NET?

http://irrlicht.sourceforge.net/phpBB2/ ... hp?t=12493

I would like to try converting the IrrnewtonSharp tutorial to your wrapper, see what is involved there...
Well... I wanted it for version 0.3 (with fast texture access via Lock for instance) but I can do it very quickly (it is not very hard).
I'll send you a pre-release with mesh buffer wrapper on your private messenger ;)
Irrlicht .NET complete and Cross Platform Wrapper
The kid on my avatar wrote:A painless lesson is one without any meaning
noone88
Posts: 49
Joined: Sat May 27, 2006 3:28 pm

Post by noone88 »

True but I wanted to compile it with the same project file on Linux and Irrlicht on Linux is not a dynamic library... But of course if you only want to use it on one platform, you can compile it with one Dll.
Sorry, i don't know much about C++ and Linux, but does it mean that my project containing the c++ Irrlicht and the c++ IrrlichtW code has to be recompiled for every Os?[/code]
DeusXL
Posts: 114
Joined: Sun Mar 14, 2004 9:37 am
Contact:

Post by DeusXL »

noone88 wrote:
True but I wanted to compile it with the same project file on Linux and Irrlicht on Linux is not a dynamic library... But of course if you only want to use it on one platform, you can compile it with one Dll.
Sorry, i don't know much about C++ and Linux, but does it mean that my project containing the c++ Irrlicht and the c++ IrrlichtW code has to be recompiled for every Os?[/code]
Hmmm.
I provide libraries for Linux (IrrlichtW.so) and Windows (IrrlichtW.dll and Irrlicht.dll) but it should work with MacOS too (in fact it will work on any Mono and Irrlicht-compatible platform) but would need someone to recompile it on MacOS (obtaining something like IrrlichtW.dylib).

If you code with .NET, you don't have to recompile nothing for porting on Linux or Windows. Simply add IrrlichtW.so, IrrlichtW.dll and Irrlicht.dll to your project and it will run on both windows and Linux without recompilation ;) (simply use "mono <your app>.exe" on Linux).

PS for Newton tutorial : I ported your tutorial with my wrapper and I obtain 280 fps with Irrlicht's actual wrapper and 320 with Irrlicht .NET CP... and if I create X cubes (don't remember X but it is the same number on both), I obain 20 fps with Irrlicht .NET and 40 with CP... I have no idea of why there are such great differences since when I compared heavy features such as particles, I obtained only few differences :shock:
If you want, I'll give you the source, there are only few changes to make.
Irrlicht .NET complete and Cross Platform Wrapper
The kid on my avatar wrote:A painless lesson is one without any meaning
buhatkj
Posts: 444
Joined: Fri Dec 12, 2003 4:53 am
Contact:

cool!

Post by buhatkj »

wow! i didn't even get around to doing it yet. i'm still at work and I was gonna give it a try when i got home. totally, post the code if you can, that would be awesome :-)
My irrlicht-based projects have gone underground for now, but if you want, check out my webcomic instead! http://brokenboomerang.net
AndyCR
Posts: 110
Joined: Tue Nov 08, 2005 2:51 pm
Location: Colorado, USA
Contact:

Post by AndyCR »

Amazing, awesome job, and this coming from someone who never uses .NET for anything serious! :)

Extra credit for surviving this much porting - I am currently workjng on a project which is part Irrlicht wrapper for Python, and doing nothing but providing interfaces to methods over and over makes one go stir crazy!
DeusXL
Posts: 114
Joined: Sun Mar 14, 2004 9:37 am
Contact:

Post by DeusXL »

Thanks a lot for these compliments, I hope also that this is going to be useful :)

New version by the way :) 0.3 :
Change Log wrote:-Adding Texture access lock via 3 methods : Get/SetPixel (slow), Modify/Retrieve (fast and secure), unsafe code (fast and unsecure), also added Texture.Save which supports jpeg, png, gif, bmp... (added a tutorial on the project ShadersAndParticle)
-Adding MeshBuffer to support advanced physics
-Bugfix : Again platform-dependent and several speed issues.
-Bugfix : Stupid bug in Vector's length and Normalize null vectors.
-Bugfix : Some bool values always set to TRUE (bug with Visual Studio 8 )
-Major Bugfix : Memory leaks corrected, now the memory is stable, even with hundredth of emitters/affectors
Don't forget to give feedback/ideas (as buhatkj did for the MeshBuffer) :)

PS : I did not mentionned it but it is also in a certain way a C Wrapper since all Irrlicht features are rewritten in C in the IrrlichtW project... Don't know it some are interested by a C Wrapper but it is one also :lol:
Irrlicht .NET complete and Cross Platform Wrapper
The kid on my avatar wrote:A painless lesson is one without any meaning
Rowan Lewis
Posts: 24
Joined: Tue Jul 11, 2006 2:24 pm
Contact:

Post by Rowan Lewis »

Thanks for this, I thought I was going to have to use windows to develop my game :P

Anyhow, I've got a problem, when using the MonoDevelop project I get this error:
The parameter name 'result' is a duplicate (CS0100) on line 360 of Texture.cs
That line is:

Code: Select all

public delegate bool ModifyPixel(int x, int y, out Color result);
Now, I'm new to both Irrlicht and .Net so I have no idea what that means. Hope you do :)
DeusXL
Posts: 114
Joined: Sun Mar 14, 2004 9:37 am
Contact:

Post by DeusXL »

Are you sure you are using the last version of Mono (unstable, Mono 1.1.16) ?

If so, try to replace "out Color result" by "out Color outColor".
Irrlicht .NET complete and Cross Platform Wrapper
The kid on my avatar wrote:A painless lesson is one without any meaning
Post Reply