Historique des modifications - Message

Message #88

Sujet: [IrrlichtNETCP - C#] TerrainSceneNode qui foire...


TypeDateAuteurContenu
Création du message04-10-2006 14:12:13prudho
Salut à tous !

Dans le cadre d'un éditeur de terrain je dois créer un TerrainSceneNode. Je le déclare comme d'habitude, je compile, et quand je le lance, gros plantage...

La référence d'objet n'est pas définie à une instance d'un objet.

Voilà le code en question :
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;
using System.Windows.Forms;

using IrrlichtNETCP;

namespace XTremEditor
{
    class Program
    {
        IrrlichtDevice device;
        TerrainSceneNode map;

        string heightmap;
        string texturemap;
        string detailmap;

        /// <summary>
        /// Point d'entrée principal de l'application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new FormGeneral());
        }

        public void startEngine(Control c, string mapfile)
        {
            device = new IrrlichtDevice(DriverType.Direct3D9, new Dimension2D(c.Width, c.Height), 32, false, false, false, false, c.Handle);
            VideoDriver driver = device.VideoDriver;

            // Chargement de ma map
            loadMap(mapfile);

            //******************************************
            // Ajouter la camera
            //******************************************
            SceneManager smgr = device.SceneManager;
            CameraSceneNode camera = smgr.AddCameraSceneNode(null);
            camera.Position = new Vector3D(1900 * 2, 255 * 2, 3700 * 2);
            camera.FarValue = 12000.0f;

            //******************************************
            // Ajouter la map
            //******************************************
            // Erreur ICI :
            map = smgr.AddTerrainSceneNode(heightmap, null, -1, new Vector3D(), new Vector3D(40, 4.4f, 40),new Vector3D(0,0,0), new IrrlichtNETCP.Color(255, 255, 255, 255), 1, TerrainPatchSize.TPS65);
            map.SetMaterialFlag(MaterialFlag.Lighting, false);
            map.SetMaterialType(MaterialType.DETAIL_MAP);
            map.SetMaterialTexture(0, driver.GetTexture(texturemap));
            map.SetMaterialTexture(1, driver.GetTexture(detailmap));

            //******************************************
            // Ajouter la skybox
            //****************************************** 
            driver.SetTextureFlag(TextureCreationFlag.CreateMipMaps, false);

            smgr.AddSkyBoxSceneNode(null, new Texture[] {
                driver.GetTexture("media\\\\irrlicht2_up.jpg"),
                driver.GetTexture("media\\\\irrlicht2_dn.jpg"),
                driver.GetTexture("media\\\\irrlicht2_lf.jpg"),
                driver.GetTexture("media\\\\irrlicht2_rt.jpg"),
                driver.GetTexture("media\\\\irrlicht2_ft.jpg"),
                driver.GetTexture("media\\\\irrlicht2_bk.jpg")}, -1);

            driver.SetTextureFlag(TextureCreationFlag.CreateMipMaps, true);

            // Rendu de la scene
            while (device.Run() && c.Enabled)
            {
                device.VideoDriver.BeginScene(true, true, new IrrlichtNETCP.Color(255, 0, 0, 50));
                device.SceneManager.DrawAll();
                device.VideoDriver.EndScene();
            }
        }

        public void loadMap(string mamap)
        {
            XmlTextReader loadmap=new XmlTextReader(mamap);
            loadmap.WhitespaceHandling = WhitespaceHandling.None;

            while (loadmap.Read())
            {
                if (loadmap.LocalName == "heightmap")
                {
                    heightmap = loadmap.ReadString();
                    MessageBox.Show(heightmap);
                }

                if (loadmap.LocalName == "texturemap")
                {
                    texturemap = loadmap.ReadString();
                    MessageBox.Show(texturemap);
                }

                if (loadmap.LocalName == "detailmap")
                {
                    detailmap = loadmap.ReadString();
                    MessageBox.Show(detailmap);
                }


            }

            loadmap.Close();
        }
    }
}

Et je ne parviens pas à déterminer d'ou vient l'erreur, car j'ai à peu près suivi l'exemple fourni avec Irrlicht (je l'ai juste adapté pour IrrlichtNETCP).

Merci de votre attention, et encore plus merci à ceux qui trouveront l'erreur ou du moins essaierontwink

Retour

OptionsLiens officielsCaractéristiquesStatistiquesCommunauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1441 sujets
11339 messages
Dernier membre inscrit: Saidov17
337 invités en ligne
membre en ligne: -
RSS Feed