/// <summary> /// Setup the 3D environment (called before all other LD3D commands). /// </summary> /// <param name="fullScreen">"True" or "False".</param> /// <param name="colour">The background (sky) colour.</param> /// <returns>The added camera object name.</returns> public static Primitive Setup(Primitive fullScreen, Primitive colour) { try { if (running) return ""; copyResources(); Node node = new Node(getNodeID(), "Camera"); int[] RGB = getRGB(colour); Engine.setup(node.name, fullScreen, 640, 480, RGB[0], RGB[1], RGB[2]); Nodes.Add(node); running = true; return node.name; } catch (Exception e) { Console.WriteLine(e.Message); return ""; } }
/// <summary> /// Add a general sphere object. /// </summary> /// <returns>The added object name.</returns> public static Primitive AddSphere() { if (!running) return ""; Node node = new Node(getNodeID()); Engine.addSphere(node.name); Nodes.Add(node); return node.name; }
/// <summary> /// Add a general terrain. /// </summary> /// <param name="height">A heght bitmap (*.bmp)</param> /// <param name="terrain">The main terain image (*.jpg).</param> /// <param name="detail">A detail terrain image (*.jpg).</param> /// <param name="gravity">Gravity of player (0 to fly, 10 for normal gravity).</param> /// <returns>The added object name.</returns> public static Primitive AddTerrain(Primitive height, Primitive terrain, Primitive detail, Primitive gravity) { if (!running) return ""; System.Drawing.Bitmap bm = new System.Drawing.Bitmap(height); Node node = new Node(getNodeID(), "Terrain"); Engine.addTerrain(node.name, height, terrain, detail, gravity, bm.Size.Width, bm.Size.Height); Nodes.Add(node); return node.name; }
/// <summary> /// A default nija animated mesh object. /// </summary> /// <param name="colour">"Red" or "Blue"</param> /// <returns>The added object name.</returns> public static Primitive AddNinja(Primitive colour) { if (!running) return ""; Node node = new Node(getNodeID()); Engine.addAnimatedMesh(node.name, ninja, 0, 13, 10); if (colour == "Red") { Engine.setTexture(node.name, nskinrd); } else if (colour == "Blue") { Engine.setTexture(node.name, nskinbl); } Nodes.Add(node); return node.name; }
/// <summary> /// A Quake mesh file within zip mesh file. /// </summary> /// <param name="mesh">The Quake mesh file (*.bsp)</param> /// <param name="gravity">Gravity of player (0 to fly, 10 for normal gravity).</param> /// <returns>The added object name.</returns> public static Primitive AddQuakeMesh(Primitive mesh, Primitive gravity) { if (!running) return ""; Node node = new Node(getNodeID(), "Quake"); Engine.addQuakeMesh(node.name, mesh, gravity); Nodes.Add(node); return node.name; }
/// <summary> /// A default terrain. /// </summary> /// <param name="gravity">Gravity of player (0 to fly, 10 for normal gravity).</param> /// <returns>The added object name.</returns> public static Primitive AddMountainTerrain(Primitive gravity) { if (!running) return ""; System.Drawing.Bitmap bm = new System.Drawing.Bitmap(terrain_heightmap); Node node = new Node(getNodeID(), "Terrain"); Engine.addTerrain(node.name, terrain_heightmap, terrain_texture, detailmap3, gravity, bm.Size.Width, bm.Size.Height); Engine.addSkybox(irrlicht2_up, irrlicht2_dn, irrlicht2_lf, irrlicht2_rt, irrlicht2_ft, irrlicht2_bk); Nodes.Add(node); return node.name; }
/// <summary> /// Add a light. /// </summary> /// <param name="X">The light X coordinate.</param> /// <param name="Y">The light Y coordinate.</param> /// <param name="Z">The light Z coordinate.</param> /// <param name="colour">The light colour.</param> /// <param name="radius">The radius of the light.</param> /// <returns>The added object name.</returns> public static Primitive AddLight(Primitive X, Primitive Y, Primitive Z, Primitive colour, Primitive radius) { if (!running) return ""; Node node = new Node(getNodeID()); int[] RGB = getRGB(colour); Engine.addLight(node.name, X, Y, Z, RGB[0], RGB[1], RGB[2], radius, fireball, particlewhite); Nodes.Add(node); return node.name; }
/// <summary> /// A default Quake mesh. /// </summary> /// <param name="gravity">Gravity of player (0 to fly, 10 for normal gravity).</param> /// <returns>The added object name.</returns> public static Primitive AddDungeonMesh(Primitive gravity) { if (!running) return ""; Engine.addZip(map_20kdm2); Node node = new Node(getNodeID(), "Quake"); Engine.addQuakeMesh(node.name, "20kdm2.bsp", gravity); Nodes.Add(node); return node.name; }
/// <summary> /// Add a 2D billboard that always faces the camera. /// </summary> /// <param name="width">The width of the billboard.</param> /// <param name="height">The height of the billboard.</param> /// <returns>The added object name.</returns> public static Primitive AddBillBoard(Primitive width, Primitive height) { if (!running) return ""; Node node = new Node(getNodeID()); Engine.addBillBoard(node.name, width, height); Nodes.Add(node); return node.name; }
/// <summary> /// Add a general animated mesh object (*.b3d). /// </summary> /// <param name="mesh"></param> /// <param name="startFrame">The starting frame for the animated object.</param> /// <param name="endFrame">The end fame for the animated object.</param> /// <param name="fps">The frames per second for the mesh animation.</param> /// <returns>The added object name.</returns> public static Primitive AddAnimatedMesh(Primitive mesh, Primitive startFrame, Primitive endFrame, Primitive fps) { if (!running) return ""; Node node = new Node(getNodeID()); Engine.addAnimatedMesh(node.name, mesh, startFrame, endFrame, fps); Nodes.Add(node); return node.name; }