Предыдущая Следующая
protected override void UnloadGraphicsContent(bool unloadAllContent)
{
if (unloadAllContent == true)
{
content.Unload();
}
}
/// <summary>
/// Обновляем состояние игры /// <summary>
protected override void Update(GameTime gameTime)
{
keyboardState = Keyboard.GetState(); switch (gameState)
{
288 Загружаем в игру модель
Рисуем модель на экране монитора 289
case CurentGameState.SplashScreen: {
break; }
case CurentGameState.MenuScreen:
{
break;
}
case CurentGaimeState.AboutScreen:
{
break;
}
case CurentGameState.GameScreen:
{
if (keyboardState.IsKeyDown(Keys.Escape)) this.Exit();
break;
}
case CurentGameState.GameOverScreen:
{
break;
}
case CurentGameState.VictoryScreen:
{
break;
}
}
base.Update(gameTime);
}
/// <summary>
/// Рисуем на экране
/// <summary>
protected override void Draw(GameTime gameTime)
{
graphics.GraphicsDevice.Clear(Color.CornflowerBlue); switch (gameState)
{
case CurentGameState.SplashScreen:
{
break;
}
case CurentGameState.MenuScreen:
{
break;
}
case CurentGaimeState.AboutScreen:
{
break;
}
case CurentGameState.GameScreen:
{
graphics.GraphicsDevice.RenderState.DepthBufferEnable = true; 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 = transforms[mesh.ParentBone.Index] * world;
290 Загружаем в игру модель
Создаем объект класса LoadingModelClass 291
effect.View = view; effect.Projection = proj;
}
mesh.Draw(); }
} } }
18.2. Класс ModelClass
В шестой главе, когда мы только начинали работать с двухмерной графикой, был создан один общий класс для работы со спрайтами. В этой главе мы также создадим такой класс, но уже для представления трехмерных моделей. Для реализации этой задачи формируем новый проект LoadingModelClass на базе предыдущего примера и добавим в проект дополнительный класс ModelClass (см. листинг 18.2).
//========================================================================= Предыдущая Следующая
|