public GameEngine() { settings = new ApplicationSettings(); settings.Load(); int width = settings.WindowWidth; int height = settings.WindowHeight; int render_width = settings.RenderWidth; int render_height = settings.RenderHeight; resourceManager = new Resources.ResourceManager("data/"); effectHandler = new Rendering.PostProcessing.PostEffectHandler(); window = new Rendering.Window("Testing", width, height, settings.Resizeable); deviceResources = new Rendering.DeviceResources(window.GetHandle(), render_width, render_height, 60); // Load basic resources included in engine. // Some resources are required for renderer to function. InitializeEngineResources(); PostResourceLoadInitialization(); input = new Input(); gameTime = new GameTime(); accessors = new Accessors( gameTime.Accessor, input.Acessor ); stateMachine = new States.GameStateMachine(accessors); States.GameState testState = new States._TestState(accessors); stateMachine.Attach(testState); stateMachine.AddToStack("TestState"); testState.Load(resourceManager, deviceResources.Device); testState.Init(resourceManager); light = new GameObject("light", 0); light.SetScale(new Vector3(0.1f, 0.1f, 0.1f)); light.SetPosition(new Vector3(-5, 0, -5)); // TODO: Work this out. // Renderer must be created after state has loaded resources. // Need to make CubemapRenderer play nice with Renderer. renderer = new Rendering.Renderer(window, deviceResources, render_width, render_height, 60, effectHandler); Logger.Write(LogType.Info, "Engine Initialized"); }
public static void DrawModel(Rendering.Renderer rend) { Rendering.Model mtm = rend.model; Vector euler = rend.matrix.eulerAngles; Quaternion q = Quaternion.RotationYawPitchRoll(euler.y * Mathf.Deg2Rad, euler.x * Mathf.Deg2Rad, euler.z * Mathf.Deg2Rad); Matrix matrix = new Matrix(); matrix.AffineTransformation(rend.matrix.scale.y, Vector.zero, q, rend.matrix.position); for (int i = 0; i < mtm.materials.Length; i++) { device.SetTransform(TransformType.World, matrix); device.Material = mtm.materials[i].material; device.SetTexture(0, mtm.materials[i].texture); mtm.mesh.DrawSubset(i); } }