Irrlicht .NET CP
Irrlicht .NET CP
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 :
PS : Please notice that the wrapper as an enormous amount of features so I had not the time to test them all.
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 :
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
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.noone88 wrote:t's also possible to add the wrapper code into the irrlicht.dll... that's fantastic!
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
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.hybrid wrote:Irrlicht can be compiled as a shared object under Linux with 'make sharedlib'
Irrlicht .NET complete and Cross Platform Wrapper
The kid on my avatar wrote:A painless lesson is one without any meaning
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 !
-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
meshbuffers
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...
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
Re: meshbuffers
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).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...
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
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]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.
Hmmm.noone88 wrote: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]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.
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
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
cool!
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
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!
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!
New RF2 website at: http://realityfactory2.sourceforge.net/
Thanks a lot for these compliments, I hope also that this is going to be useful
New version by the way 0.3 :
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
New version by the way 0.3 :
Don't forget to give feedback/ideas (as buhatkj did for the MeshBuffer)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
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
Irrlicht .NET complete and Cross Platform Wrapper
The kid on my avatar wrote:A painless lesson is one without any meaning
-
- Posts: 24
- Joined: Tue Jul 11, 2006 2:24 pm
- Contact:
Thanks for this, I thought I was going to have to use windows to develop my game
Anyhow, I've got a problem, when using the MonoDevelop project I get this error:
Now, I'm new to both Irrlicht and .Net so I have no idea what that means. Hope you do
Anyhow, I've got a problem, when using the MonoDevelop project I get this error:
That line is:The parameter name 'result' is a duplicate (CS0100) on line 360 of Texture.cs
Code: Select all
public delegate bool ModifyPixel(int x, int y, out Color result);
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".
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