IEnumerator Lod1to0(Vector3 worldPos, int duration = 10, Action successCallBack = null) { State = LodState.Lod1to0; Vector3 oriLocal = MapCamera.transform.localPosition; float oriPitch = MapCamera.transform.localEulerAngles.x; float dstPitch = CameraHeight2Angle(worldPos.y); for (int i = 0; i < duration; ++i) { Vector3 local = Vector3.Lerp(oriLocal, worldPos, (i + 1) / (float)duration); float pitch = Mathf.Lerp(oriPitch, dstPitch, (i + 1) / (float)duration); CameraPitch = pitch; MoveCamera(local); yield return(null); } State = LodState.Lod0; CameraMask.SetActive(true); Lod0.gameObject.SetActive(true); // Lod0.OnCameraMove(Vector3.zero, Vector3.zero); Lod1.gameObject.SetActive(false); MoveCamera(worldPos); //App.ProxyMgr.MapProxy.GetBlockDataFromServer(); if (onDragUpdateHomecompass != null) { onDragUpdateHomecompass(); } if (successCallBack != null) { successCallBack(); } yield break; }
IEnumerator Lod0to1() { CameraMask.SetActive(false); Lod0.gameObject.SetActive(false); Lod0.CleanUp(); Lod1.gameObject.SetActive(true); Lod1.SyncMyCityFlagPos(); State = LodState.Lod0to1; Vector3 local = MapCamera.transform.localPosition; while (local.y < CameraHeightLod1to0) { local.y *= (1.0f + scaleSpeed * Time.deltaTime); MoveCamera(local); yield return(null); } State = LodState.Lod1; yield break; }
protected override void OnUpdate() { // go through all known render types, and assign groups to them // assign groups to all renderers Entities .WithNone <RenderToPasses>() .WithAll <MeshRenderer, TextRenderer>() .ForEach((Entity e) => { CameraMask cameraMask; if (EntityManager.HasComponent <CameraMask>(e)) { cameraMask = EntityManager.GetComponentData <CameraMask>(e); } else { cameraMask = new CameraMask { mask = ulong.MaxValue } }; if (EntityManager.HasComponent <CameraMask>(e)) { cameraMask = EntityManager.GetComponentData <CameraMask>(e); } ShadowMask shadowMask = new ShadowMask { mask = ulong.MaxValue }; if (EntityManager.HasComponent <ShadowMask>(e)) { shadowMask = EntityManager.GetComponentData <ShadowMask>(e); } m_AssignRenderGroups.AddItemToRenderGroup(e, new BuildGroup { passTypes = RenderPassType.Transparent, cameraMask = cameraMask, shadowMask = shadowMask }); }); }