Historique des modifications - Message

Message #88

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


Type Date Auteur Contenu
Création du message 04-10-2006 14:12:13 prudho
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 essaieront wink

Retour

Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
171 invités en ligne
membre en ligne: -
RSS Feed