Beispiel #1
0
        public virtual async System.Threading.Tasks.Task <bool> InitGame(IntPtr WinHandle, UInt32 width, UInt32 height, EngineNS.GamePlay.GGameInstanceDesc desc, EngineNS.Graphics.CGfxCamera camera)
        {
            var rc = EngineNS.CEngine.Instance.RenderContext;

            if (camera == null)
            {
                camera = new EngineNS.Graphics.CGfxCamera();
                camera.Init(rc, false);
            }

            CEngine.Instance.TickManager.AddTickInfo(this);

            await BuildAutoMembers();

            WindowHandle = WinHandle;
            WindowWidth  = width;
            WindowHeight = height;
            mDesc        = desc;
            mWorld       = new GWorld();
            GameCamera   = camera;

            if (false == mWorld.Init())
            {
                return(false);
            }

            var scene = await LoadScene(rc, desc.SceneName, true);

            if (scene == null)
            {
                return(false);
            }

            mWorld.AddScene(desc.SceneName, scene);
            mWorld.SetDefaultScene(scene.SceneId);

            foreach (var i in AutoMembers)
            {
                await i.Key.OnGameInit(i.Value, width, height);
            }

            Vector3 Eye = new Vector3();

            Eye.SetValue(0.0f, 1.0f, -3.0f);
            Vector3 At = new Vector3();

            At.SetValue(0.0f, 1.0f, 0.0f);
            Vector3 Up = new Vector3();

            Up.SetValue(0.0f, 1.0f, 0.0f);
            camera.LookAtLH(Eye, At, Up);
            camera.PerspectiveFovLH(camera.mDefaultFoV, (float)width, (float)height, 0.1f, 1000.0f);

            var mRP_GameMobile = new EngineNS.Graphics.RenderPolicy.CGfxRP_GameMobile();
            await mRP_GameMobile.Init(rc, width, height, camera, WinHandle);

            this.SetGameRenderPolicy(mRP_GameMobile);

            return(true);
        }
Beispiel #2
0
        public virtual async System.Threading.Tasks.Task InitDefaultResource(GamePlay.GGameInstanceDesc gameDesc)
        {
            var mtl = await this.MaterialManager.GetMaterialAsync(RenderContext, gameDesc.DefaultMaterialName);

            if (mtl == null)
            {
                Profiler.Log.WriteLine(Profiler.ELogTag.Warning, "Resource", $"{gameDesc.DefaultMaterialName} not found");
            }

            var tempMtlInst = await this.MaterialInstanceManager.GetMaterialInstanceAsync(RenderContext, gameDesc.DefaultMaterialInstanceName);

            if (tempMtlInst == null)
            {
                Profiler.Log.WriteLine(Profiler.ELogTag.Warning, "Resource", $"{gameDesc.DefaultMaterialInstanceName} not found");
            }

            await this.MaterialManager.Init(RenderContext, gameDesc.DefaultMaterialName);

            await this.MaterialInstanceManager.Init(RenderContext, gameDesc.DefaultMaterialInstanceName);

            this.ShadingEnvManager.Init();
            await this.EffectManager.Init(RenderContext);

            var fullScreenMesh = CEngine.Instance.MeshPrimitivesManager.NewMeshPrimitives(RenderContext, CEngineDesc.FullScreenRectName, 1);

            Graphics.Mesh.CGfxMeshCooker.MakeRect2D(RenderContext, fullScreenMesh, -1, -1, 2, 2, 0.0F, false);
            fullScreenMesh.ResourceState.KeepValid = true;

            var ScreenAlignedTriangle = CEngine.Instance.MeshPrimitivesManager.NewMeshPrimitives(RenderContext, CEngineDesc.ScreenAlignedTriangleName, 1);

            Graphics.Mesh.CGfxMeshCooker.MakeScreenAlignedTriangle(RenderContext, ScreenAlignedTriangle);
            ScreenAlignedTriangle.ResourceState.KeepValid = true;

            SetPerFrameCBuffer();
        }
Beispiel #3
0
 public GGameInstanceDesc()
 {
     if (mInstance != null)
     {
         mInstance = this;
     }
 }
Beispiel #4
0
        public override async System.Threading.Tasks.Task <bool> InitGame(IntPtr WinHandle, UInt32 width, UInt32 height, EngineNS.GamePlay.GGameInstanceDesc desc, EngineNS.Graphics.CGfxCamera camera)
        {
#if PWindow
            EngineNS.Bricks.RemoteServices.RPCExecuter.Instance.SaveCode();
#elif PAndroid
            AccessGameRes.CheckAndCreateFirstAssetList();
#endif

            return(await base.InitGame(WinHandle, width, height, desc, camera));
        }