Предыдущая Следующая
{
break;
}
case CurentGameState.AboutScreen:
{
break;
}
case CurentGameState.GameScreen:
{
graphics.GraphicsDevice.RenderState.DepthBufferEnable = true;
296 Загружаем в игру модель
DrawModel(model);
break;
}
case CurentGameState.GameOverScreen:
{
break;
}
case CurentGameState.VictoryScreen:
{
break;
}
}
base.Draw(gameTime);
}
/// <summary> /// Рисуем модель /// <summary>
private void DrawModel(Model m) {
Matrix[] transforms = new Matrix[m.Bones.Count]; m.CopyAbsoluteBoneTransformsTo(transforms);
world = Matrix.CreateTranslation(positionModel);
view = Matrix.CreateLookAt(new Vector3(0.0f, 0.0f, 150.0f), Vector3.Zero, Vector3.Up);
proj = Matrix.CreatePerspectiveFieldOfView(FOV, aspectRatio, nearClip, farClip);
foreach (ModelMesh mesh in m.Meshes)
{
foreach (BasicEffect effect in mesh.Effects)
{
effect.EnableDefaultLighting();
effect.World = transformsfmesh.ParentBone.Index] * world; effect.View = view; effect.Projection = proj;
}
mesh.Draw();
}
}
} }
17.2. Класс Mode/Class
В шестой главе, когда мы только начинали работать с двухмерной графикой, был создан один общий класс для работы со спрайтами. В этой главе мы также создадим такой класс, но уже для представления трехмерных моделей. Для реализации
Класс ModelClass 297
этой задачи формируем новый проект LoadingModelClass на базе предыдущего примера, а в проект добавляем дополнительный класс ModelClass (См. листинг 17.2).
//=========================================================================
/// <summary>
/// Листинге 17.2
/// Исходный код к книге:
/// «Программирование игр для приставки Xbox 360 в XNA Game Studio Express» /// Автор книги: Горнаков С. Г. /// Глава 17
/// Проект: LoadingModelClass /// Класс: ModelClass
/// Загружаем в игру модель через класс /// <summary>
//=========================================================================
#region Using Statements using System;
using System.Collections.Generic; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Storage; #endregion
namespace LoadingModelClass
{
class ModelClass
{
public Model model; public Vector3 position;
public ModelClass()
{
position = new Vector3(0, 0, 0);
}
/// <summary>
/// Загрузка модели в игру /// <summary>
public void Load(ContentManager content, String stringModel)
{
model = content.Load<Model>(stringModel); Предыдущая Следующая
|