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); }
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(); }
public GGameInstanceDesc() { if (mInstance != null) { mInstance = this; } }
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)); }