Paradox Game Engine  v1.0.0 beta06
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros Pages
Program.cs
Go to the documentation of this file.
1 using System;
2 using System.Collections.Generic;
3 using System.IO;
4 using System.Linq;
5 using System.Runtime.InteropServices;
6 using System.Text;
7 using Paradox;
8 using Paradox.Effects;
9 using Paradox.Effects.Modules;
10 using Paradox.Framework;
11 using Paradox.Framework.Graphics;
12 using Paradox.Framework.Mathematics;
13 using Paradox.Framework.Serialization;
14 using Paradox.Framework.VirtualFileSystem;
15 using Paradox.Framework.Serialization.Contents;
16 using Paradox.Framework.Graphics.Data;
17 
18 namespace SimpleTeapot
19 {
20  class Program
21  {
22  public class Win32Interop
23  {
24  [DllImport("crtdll.dll")]
25  public static extern int _kbhit();
26  }
27 
28  static void Main(string[] args)
29  {
30  EngineContext.Setup();
31  EngineContext.RenderSystem = new DefaultRenderSystem();
32  EngineContext.RenderSystem.Init(EngineContext.RenderContext);
33 
34  var effect = EngineContext.RenderContext.BuildEffect().Using<RenderTargetFeature>().Using<TransformationFeature>().Using<TextureFeature>().Compile();
35 
36  var vfs = new VirtualFileStorage();
37  vfs.MountFileSystem("/global_data", "..\\deps\\data\\");
38  vfs.MountFileSystem("/global_data2", "..\\data\\");
39  var packageVfs = vfs.MountPackage("/testpackage", "/global_data/factory3.dat").Result;
40  var contentManager = new ContentManager(vfs, packageVfs);
41  contentManager.RegisterSerializer(new SimpleContentSerializer<MeshData>());
42  contentManager.RegisterSerializer(new TextureSerializer());
43  contentManager.RegisterSerializer(new GpuTextureSerializer(EngineContext.RenderContext.GraphicsDevice));
44 
45  var meshData = contentManager.Load<MeshData>("/testpackage/guid/" + packageVfs.Objects[2].Header.ObjectId.Guid);
46  var effectMesh = new EffectMesh(effect, meshData);
47  //effect.InstantiateMesh(effectMesh);
48  //effect.UpdateMeshData(effectMesh, meshData);
49  //effectMesh.AddRenderQueue();
50 
51  var projectionMatrix = Matrix.PerspectiveFovLH((float)Math.PI * 0.5f, 1024.0f / 768.0f, 1.0f, 4000.0f);
52 
53  EngineContext.RenderContext.ParameterGroups.Get(TransformationFeature.TransformationGroup).SetAs(TransformationFeature.Projection, projectionMatrix);
54 
55  var factoryTexture = (ITexture2D)contentManager.Load<ITexture>("/global_data2/media/factory.png");
56  effectMesh.Parameters.Set(TextureFeature.Texture, factoryTexture);
57 
58  var world = Matrix.Scaling(0.1f) * Matrix.Translation(new Vector3(-30.0f, -30.0f, 0.0f));
59  effectMesh.Parameters.Set(TransformationFeature.World, world);
60 
61  var depth = EngineContext.RenderContext.GraphicsDevice.DepthStencilBuffer.New(DepthFormat.Depth32, EngineContext.RenderContext.Width, EngineContext.RenderContext.Height);
62  EngineContext.RenderContext.ParameterGroups.GetGroup(RenderTargetFeature.Group).Set(RenderTargetFeature.RenderTarget, EngineContext.RenderContext.RenderTarget);
63  EngineContext.RenderContext.ParameterGroups.GetGroup(RenderTargetFeature.Group).Set(RenderTargetFeature.DepthStencil, depth);
64 
65  float time = 0.0f;
66 
67  while (true)
68  {
69  var eyeVector = new Vector4(-800.0f * (float)Math.Cos(time), 800.0f * (float)Math.Sin(time), 500.0f, 1.0f);
70  time += 0.0001f;
71  var viewMatrix = Matrix.LookAtLH(new Vector3(eyeVector.X, eyeVector.Y, eyeVector.Z), new Vector3(0.0f, 0.0f, 50.0f), new Vector3(0.0f, 0.0f, 1.0f));
72  EngineContext.RenderContext.ParameterGroups.Get(TransformationFeature.TransformationGroup).SetAs(TransformationFeature.View, viewMatrix);
73 
74  Scheduler.Step();
75  WinFormsHelper.UpdateWindow();
76  EngineContext.Render();
77 
78  if (Win32Interop._kbhit() != 0)
79  {
80  var key = Console.ReadKey(true).KeyChar;
81  switch (key)
82  {
83  default:
84  break;
85  }
86  if (key == 'q')
87  break;
88  }
89  }
90  EngineContext.Stop();
91 
92  }
93  }
94 }
SiliconStudio.Core.Mathematics.Vector3 Vector3