Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
See more: C#XNA3.0XNA
I can't get my 3D model to display, I think it might have to do with the draw order inside of my Draw method. The part I'm working on is the aircraft selection menu I'm making for a flight sim.
Here's my code:
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using Microsoft.Xna.Framework.Net;
using Microsoft.Xna.Framework.Storage;
 
namespace Thin_Air
{
    /// <summary>
    /// This is the main type for your game
    /// </summary>
    public class Game1 : Microsoft.Xna.Framework.Game
    {
        GraphicsDeviceManager graphics;
        SpriteBatch spriteBatch;
        //------------------------------------------------------------------------------------------------------\
        GameState state;
        Model airCraft;
        float modelRotation, aspectRatio;
        Vector3 modelPosition, cameraPosition, pos;
        int iii, mouseX, mouseY;
        string[] info;
        SpriteFont font;
        KeyboardState kbState_Old, kbState_New;
        MouseState mouseState;
        SelectedAirCraft selectedObject;
        Texture2D airCraftSelectBG, selectionSquare, selectionSquare_Hover, displayPanel;
        Song introMusic;
        bool hit;
        public enum SelectedAirCraft
        {
            EuroFighter,
            Craft2,
            Craft3
        }
        public enum GameState
        {
            MainMenu,
            AreaSelect,
            AirCraftSelect,
            Flying,
            EndFlight,
            Pause
        }
        public void Draw_AirCraftSelection_Background()
        {
            spriteBatch.Draw(airCraftSelectBG, new Rectangle(0, 0, 800, 600), Color.White);
        }
        public void Draw_AirCraftSelection_DisplayPanel()
        {
            spriteBatch.Draw(displayPanel, new Rectangle(0, 400, 800, 200), Color.White);
        }
        public void Draw_AirCraftSelection_Models(Vector3 pos)
        {
            Matrix[] transforms = new Matrix[airCraft.Bones.Count];
            airCraft.CopyAbsoluteBoneTransformsTo(transforms);
            foreach (ModelMesh mesh in airCraft.Meshes)
            {
                foreach (BasicEffect effect in mesh.Effects)
                {
                    effect.EnableDefaultLighting();
                    effect.World = transforms[mesh.ParentBone.Index] *
                        Matrix.CreateRotationY(modelRotation) *
                        Matrix.CreateTranslation(modelPosition);
                    effect.View = Matrix.CreateLookAt(cameraPosition, pos, Vector3.Up);
                    effect.Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45.0f),aspectRatio,1.0f,10000.0f);
                }
                mesh.Draw();
            }
        }
        //------------------------------------------------------------------------------------------------------/
        public Game1()
        {
            graphics = new GraphicsDeviceManager(this);
            Content.RootDirectory = "Content";
            //--------------------------------------------------------------------------------------------------\
            this.IsMouseVisible = true;
            state = GameState.AirCraftSelect;
            selectedObject = SelectedAirCraft.Craft2;
            pos = new Vector3((float)iii, 0, 0);
            info = new string[5];
            iii = -100;
            hit = false;
            cameraPosition = new Vector3(0.0f, 150.0f, 180.0f);
            modelRotation = 0.0f;
            modelPosition = Vector3.Zero;
            //--------------------------------------------------------------------------------------------------/
        }
        protected override void Initialize()
        {
            //--------------------------------------------------------------------------------------------------\
            kbState_Old = Keyboard.GetState();
            for (int i = 0; i < 5; i++)
                info[i] = "...";
            //--------------------------------------------------------------------------------------------------/
            base.Initialize();
        }
        protected override void LoadContent()
        {
            spriteBatch = new SpriteBatch(GraphicsDevice);
            //--------------------------------------------------------------------------------------------------\
            airCraft = Content.Load<Model>("Models\\eurofighter_fbx");
            airCraftSelectBG = Content.Load<Texture2D>("Backgrounds\\nebo004");
            selectionSquare = Content.Load<Texture2D>("AirCraftSelect\\SelectedAirCraft");
            selectionSquare_Hover = Content.Load<Texture2D>("AirCraftSelect\\SelectedAirCraft_Hover");
            displayPanel = Content.Load<Texture2D>("AirCraftSelect\\Panel");
            introMusic = Content.Load<Song>("Audio\\Intro\\Game_Intro_Music");
            font = Content.Load<SpriteFont>("Fonts\\SpriteFont1");
            aspectRatio = graphics.GraphicsDevice.Viewport.AspectRatio;
            //--------------------------------------------------------------------------------------------------/
        }
        protected override void UnloadContent()
        {
        }
        protected override void Update(GameTime gameTime)
        {
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
                this.Exit();
            //--------------------------------------------------------------------------------------------------\
            mouseState = Mouse.GetState();
            mouseX = mouseState.X;
            mouseY = mouseState.Y;
            switch (state)
            {
                case GameState.MainMenu:
 
                    break;
                case GameState.AreaSelect:
 
                    break;
                case GameState.AirCraftSelect:
                    kbState_New = Keyboard.GetState();
                    if (kbState_New.IsKeyDown(Keys.D))
                    {
                        if (!kbState_Old.IsKeyDown(Keys.D))
                        {
 
                        }
                    }
                    else if (kbState_Old.IsKeyDown(Keys.D))
                    {
                        if (iii <= -100)
                            iii = 100;
                        else
                            iii -= 100;
                        pos = new Vector3(iii, 0, 0);
                        switch (selectedObject)
                        {
                            case SelectedAirCraft.Craft2:
                                info[0] = "Name: Craft2";
                                info[1] = "Top Speed: 0";
                                info[2] = "Type: 0";
                                info[3] = "Weapon: 0";
                                info[4] = "Good For: 0";
                                break;
                            case SelectedAirCraft.Craft3:
                                info[0] = "Name: Craft3";
                                info[1] = "Top Speed: 0";
                                info[2] = "Type: 0";
                                info[3] = "Weapon: 0";
                                info[4] = "Good For: 0";
                                break;
                            case SelectedAirCraft.EuroFighter:
                                info[0] = "Name: EuroFighter";
                                info[1] = "Top Speed: 0";
                                info[2] = "Type: 0";
                                info[3] = "Weapon: 0";
                                info[4] = "Good For: 0";
                                break;
                        }
                        hit = true;
                    }
                    if (kbState_New.IsKeyDown(Keys.A))
                    {
                        if (!kbState_Old.IsKeyDown(Keys.A))
                        {
 
                        }
                    }
                    else if (kbState_Old.IsKeyDown(Keys.A))
                    {
                        if (iii >= 100)
                            iii = -100;
                        else
                            iii += 100;
                        pos = new Vector3(iii, 0, 0);
                        switch (selectedObject)
                        {
                            case SelectedAirCraft.Craft2:
                                info[0] = "Name: Craft2";
                                info[1] = "Top Speed: 0";
                                info[2] = "Type: 0";
                                info[3] = "Weapon: 0";
                                info[4] = "Good For: 0";
                                break;
                            case SelectedAirCraft.Craft3:
                                info[0] = "Name: Craft3";
                                info[1] = "Top Speed: 0";
                                info[2] = "Type: 0";
                                info[3] = "Weapon: 0";
                                info[4] = "Good For: 0";
                                break;
                            case SelectedAirCraft.EuroFighter:
                                info[0] = "Name: EuroFighter";
                                info[1] = "Top Speed: 0";
                                info[2] = "Type: 0";
                                info[3] = "Weapon: 0";
                                info[4] = "Good For: 0";
                                break;
                        }
                        if (!hit)
                            hit = true;
                    }
                    switch (iii)
                    {
                        case 100:
                            selectedObject = SelectedAirCraft.Craft2;
                            break;
                        case 0:
                            selectedObject = SelectedAirCraft.EuroFighter;
                            break;
                        case -100:
                            selectedObject = SelectedAirCraft.Craft3;
                            break;
                    }
                    kbState_Old = kbState_New;//reset
                    modelRotation += (float)gameTime.ElapsedGameTime.TotalMilliseconds * MathHelper.ToRadians(0.03f);
                    break;
                case GameState.Flying:
 
                    break;
                case GameState.Pause:
 
                    break;
                case GameState.EndFlight:
 
                    break;
            }
            //--------------------------------------------------------------------------------------------------/
            base.Update(gameTime);
        }
        protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.CornflowerBlue);
            //--------------------------------------------------------------------------------------------------\
            spriteBatch.Begin();
            switch (state)
            {
                case GameState.MainMenu:
 
                    break;
                case GameState.AreaSelect:
 
                    break;
                case GameState.AirCraftSelect:
                    Draw_AirCraftSelection_Background();
                    Draw_AirCraftSelection_Models(pos);
                    //Draw_AirCraftSelection_DisplayPanel();
                    
                        spriteBatch.DrawString(font, info[0], new Vector2(50, 620), Color.White);
                        spriteBatch.DrawString(font, info[1], new Vector2(50, 640), Color.White);
                        spriteBatch.DrawString(font, info[2], new Vector2(50, 660), Color.White);
                        spriteBatch.DrawString(font, info[3], new Vector2(50, 680), Color.White);
                        spriteBatch.DrawString(font, info[4], new Vector2(50, 700), Color.White);
                    
                    if(!hit)
                    {
                        spriteBatch.DrawString(font, "Welcome", new Vector2(50, 620), Color.White);
                    }
                    
                    if ((mouseX >= 300 && mouseX <= 500) && (mouseY >= 200 && mouseY <= 400))
                    {
                        spriteBatch.Draw(selectionSquare_Hover, new Rectangle(300, 200, 200, 200), Color.White);
                        if (mouseState.LeftButton == ButtonState.Pressed)
                            state = GameState.Flying;
                    }
                    else
                    {
                        spriteBatch.Draw(selectionSquare, new Rectangle(300, 200, 200, 200), Color.White);
                    }
                    break;
                case GameState.Flying:
 
                    break;
                case GameState.Pause:
 
                    break;
                case GameState.EndFlight:
 
                    break;
            }
            spriteBatch.End();
            //--------------------------------------------------------------------------------------------------/
            base.Draw(gameTime);
        }
    }
}
Posted 24-Apr-12 13:55pm
shelby672.4K

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 Sergey Alexandrovich Kryukov 529
1 OriginalGriff 307
2 Damith Weerasinghe 295
3 ravikhoda 260
4 Tadit Dash 180
0 Sergey Alexandrovich Kryukov 10,974
1 OriginalGriff 6,667
2 Peter Leow 4,760
3 Abhinav S 3,813
4 Maciej Los 3,565


Advertise | Privacy | Mobile
Web01 | 2.8.140421.2 | Last Updated 24 Apr 2012
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Use
Layout: fixed | fluid