Esempio n. 1
0
 void GetCamera()
 {
     if (camera == null)
     {
         string         strCameraName = "MainCamera";
         Engine.ICamera cam           = Engine.RareEngine.Instance().GetRenderSystem().GetCamera(ref strCameraName);
         camera = cam.GetNode().GetTransForm().GetComponent <Camera>();
     }
 }
Esempio n. 2
0
        public void SetupMainCamera(IPlayer player)
        {
            float fRotateX = 38.0f;
            float fRotateY = 45.0f;

            table.MapDataBase mapdb  = null;
            IMapSystem        mapSys = Client.ClientGlobal.Instance().GetMapSystem();

            if (mapSys != null)
            {
                mapdb = GameTableManager.Instance.GetTableItem <table.MapDataBase>(mapSys.GetMapID());
                if (mapdb != null)
                {
                    fRotateX = mapdb.RotateX;
                    fRotateY = mapdb.RotateY;
                }
            }

            // 发送事件 CreateEntity
            string strCameraName = "MainCamera";

            Engine.ICamera cam = Engine.RareEngine.Instance().GetRenderSystem().GetCamera(ref strCameraName);
            if (cam != null)
            {
                CameraFollow.Instance.camera = cam;
                CameraFollow.Instance.target = player;
                CameraFollow.Instance.SetCameraOffset(fRotateX, fRotateY, isFarDisCamera ? mapdb.CamDis : mapdb.farDistance);
                cam.SetCameraCtrl(CameraFollow.Instance);
            }

            if (cam != null)
            {
                if (cam.GetNode().GetTransForm().gameObject.GetComponent <PostRenderOcclusionEffect>() == null)
                {
                    //PostRenderOcclusionEffect pEffect = cam.GetNode().GetTransForm().gameObject.AddComponent<PostRenderOcclusionEffect>();
                    //SeeThroughSystem pEffect = cam.GetNode().GetTransForm().gameObject.AddComponent<SeeThroughSystem>();
                }


                if (cam.GetNode().GetTransForm().gameObject.GetComponent <PostRenderOutlineEffect>() == null)
                {
                    //PostRenderOutlineEffect pEffect = cam.GetNode().GetTransForm().gameObject.AddComponent<PostRenderOutlineEffect>();
                    //SeeThroughSystem pEffect = cam.GetNode().GetTransForm().gameObject.AddComponent<SeeThroughSystem>();
                }
            }



            // 设置场景方向光参数 需要根据Camera来
            Shader.SetGlobalColor("g_LightColor", Color.white);
            // 设置方向
            Shader.SetGlobalVector("g_LightDirection", -GetMainCamDir());
        }
Esempio n. 3
0
        //-------------------------------------------------------------------------------------------------------

        /**
         * @brief 用来处理游戏中退回到登录或者选人界面 或者地图时使用
         * @param bFlag 标识是否清理主角 true清理主角
         */
        public void Clear(bool bFlag = false)
        {
            Engine.IRenderSystem renderSys = Engine.RareEngine.Instance().GetRenderSystem();
            if (renderSys != null && bFlag)
            {
                // 设置主Camera
                string         strCameraName = "MainCamera";
                Engine.ICamera cam           = renderSys.GetCamera(ref strCameraName);
                if (cam != null)
                {
                    cam.Enable(false);
                }
            }

            // 停止背景音乐
            Engine.IAudio audio = Engine.RareEngine.Instance().GetAudio();
            if (audio != null && bFlag)
            {
                audio.StopMusic();
            }

            if (bFlag)
            {
                CmdManager.Instance().Clear();
            }
            if (m_ControllerSys != null)
            {
                m_ControllerSys.GetCombatRobot().Stop(true);
            }

            if (MainPlayer != null)
            {
                MainPlayer.SendMessage(EntityMessage.EntityCommand_StopMove, MainPlayer.GetPos());
            }

            if (m_EntitySys != null)
            {
                m_EntitySys.Clear(bFlag);
            }

            if (m_MapSystem != null)
            {
                m_MapSystem.ExitMap();
            }
            MainPlayer = null;

            Engine.RareEngine.Instance().UnloadUnusedResources();
        }