コード例 #1
0
        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");
        }
コード例 #2
0
        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);
            }
        }