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;
    }
示例#3
0
 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
         });
     });
 }