
I'm wanting to start an Open Source project to combine Irrlicht and Squirrel. The plan is to create an IE compatible Active-X and Firefox plugin for Windows and Linux. It will be released under a BSD style license.
I'd really like to locate a very experienced Irrlicht developer to head up the effort. Note that this is not entry level, I really need someone experienced and motivated. If you're a guru with time to burn, I'm willing to workout anything from support-by-donations to full hire/sponsor if you want to move to sunny Jacksonville Florida USA. Just contact me or answer this job posting. Ignore the job description, HR people

You can check out the proof of concept at the following link, to get an idea of what I'm looking for. It requires installing an Active-X control from us.

http://rvspro.com/squirrel
You can try out this block of code. Just paste into the window on the left, click 'Execute' then '3D'.
Code: Select all
class CGlobal
{
nCount = 0;
vCurCamPos = CSiVector( 0., 200., 200. );
vCurCamTarget = CSiVector( 0., 0., 0. );
};
local _g = CGlobal();
// Main entry point
function _init() : ( _g )
{
// Position camera
_irr.GetCamera().setPosition( _g.vCurCamPos );
_irr.GetCamera().faceTarget( _g.vCurCamTarget );
_irr.GetCamera().setTarget( _g.vCurCamTarget );
// Light the scene
_irr.AddStadiumLighting( 2000., 1 );
local node = _irr.AddGrid( 10., 10., 10, 10, 0.0, 2
CSiColor( 255, 255, 255, 255 ), 2 );
node.setTexture( 0,
_irr.GetUrlTexture( "http://irrlicht.sourceforge.net/phpBB2/templates/subSilver/images/logo_phpBB.gif",
"gif", 320, 240, 0, 0 ) );
_irr.AddMeshAnimator( node, OnAnimate, 0 );
}
function OnAnimate( n, o, c )
{
// _self.alert( n.tostring() );
local pi = 3.141592654;
local pi2 = pi * 2.;
local attn = 6;
local m = pi2 / 100;
local clk = _irr.clock();
for ( local i = 0; i < n; i++ )
{
// Normalize space
local u = o.x( i ) * m;
local v = o.y( i ) * m;
local x = 0, y = 0, z = 0;
// Cylinder
// x = sin( u );
// y = ty;
// z = cos( u );
// Cone
// x = sin( u ) * ( pi - v ) * 0.2;
// y = v;
// z = cos( u ) * ( pi - v ) * 0.2;
// Sphere
// x = sin( u ) * cos( v / 2 );
// y = sin( v / 2 );
// z = cos( u ) * cos( v / 2 );
// Torus
// x = ( 2 + cos( v ) ) * cos( u );
// y = sin( v );
// z = ( 2 + cos( v ) ) * sin( u );
// Toroid
// u += pi; u *= 1.5;
// x = cos( u ) * ( u / ( 3 * pi ) * cos( v ) + 2 );
// y = u * sin( v ) / ( 3 * pi );
// z = sin( u ) * ( u / ( 3 * pi ) * cos( v ) + 2 );
// Coil
// x = cos( u * 1.5 ) * ( cos( v ) + 2 );
// y = sin( u * 1.5 ) * ( cos( v ) + 2 );
// z = sin( v ) + u;
// Trefoil Knot
local a = 0.5;
u *= 2;
x = a * ( cos( u ) * cos( v ) + 3 * cos( u ) * ( 1.5 + sin( 1.5 * u ) / 2 ) );
y = a * ( sin( v ) + 2 * cos( 1.5 * u ) );
z = a * ( sin( u ) * cos( v ) + 3 * sin( u ) * ( 1.5 + sin( 1.5 * u ) / 2 ) );
// Nautilus
// u += pi;
// x = 0.5 * u * cos( u ) * ( cos( v ) + 1 );
// y = 0.5 * u * sin( v );
// z = 0.5 * u * sin( u ) * ( cos( v ) + 1 );
// Mobius Strip
// u += pi; // 0 <= u < 2pi
// v *= 0.2; // -t <= v < t
// x = cos( u ) + v * cos( u / 2 ) * cos( u );
// y = sin( u ) + v * cos( u / 2 ) * sin( u );
// z = v * sin( u / 2 );
// Klein Bottle
// local a = 2.0;
// v += pi; // 0 <= v < 2pi
// x = ( a + cos( u / 2 ) * sin( v ) - sin( u / 2 ) * sin( 2 * v ) ) * cos( u );
// y = sin( u / 2 ) * sin( v ) + cos( u / 2 ) * sin( 2 * v );
// z = ( a + cos( u / 2 ) * sin( v ) - sin( u / 2 ) * sin( 2 * v ) ) * sin( u );
// Dini's surface
// u += pi; u *= 2; // 0 <= u < 4pi
// x = cos( u ) * sin( v );
// y = -2 - ( cos( v ) + log( tan( v / 2 ) ) + 0.2 * u - 4 );
// z = sin( u ) * sin( v );
// Flag
// x = u;
// y = v;
// z = 0;
// Waving
// z += sin( u * 2. + clk / 2 ) + sin( u + ( clk * 2.2 ) );
// z += sin( v * 1. + clk ) + sin( v * 1.1 + ( clk * 1.2 ) );
// z *= ( ( u - pi ) / pi2 ) / attn;
c.set( i, x / m, y / m, z / m );
} // end for
}
// Called before each frame is rendered
function OnUpdate() : ( _g )
{
_g.nCount++;
_g.vCurCamPos.set( sin( _g.nCount / 50. ) * 200,
_g.vCurCamPos.y(),
cos( _g.nCount / 50. ) * 200 );
_irr.GetCamera().setPosition( _g.vCurCamPos );
_irr.GetCamera().setTarget( _g.vCurCamTarget );
_irr.GetCamera().faceTarget( _g.vCurCamTarget );
}