Example #1
0
    void RenderObject()
    {
        UpdateObject();
        if (FakeObject == null)
        {
            return;
        }
        Renderer render = FakeObject.getGameObject().renderer == null ? mRender : FakeObject.getGameObject().renderer; //设置当前renderer add by ss

        if (FakeObject == null || FakeObject.getGameObject() == null || render == null || mFakeCameraObj == null)
        {
            return;
        }

        Quaternion curRot = FakeObject.getGameObject().transform.localRotation;

        FakeObject.getGameObject().transform.localRotation = Quaternion.identity;
        mFakeCameraObj.SetActiveRecursively(true); //打开摄像机
        float objectHeight = render.bounds.size.y; //fake object 高度  //modified by ss

        GFX.GfxUtility.setGameObjectLayer(FakeObject.getGameObject(), LayerManager.FakeObjectLayer);
        FakeObject.SetVisible(true);//设置对象可见
        Vector3 fakeObjCenter = mFakeObjectPos;
        float   dis           = ctanFOV * objectHeight * 0.5f + render.bounds.size.z * 0.5f + 0.6f;

        fakeObjCenter.y += render.bounds.size.y * 0.5f;
        Vector3 camePos = fakeObjCenter - mFakeCameraObj.transform.forward * dis;//-mFakeCameraObj.transform.forward * dis + fakeObjCenter;//求摄像机位置

        mFakeCameraObj.transform.position   = camePos;
        mFakeCameraObj.camera.targetTexture = mFakeRenderTexture;
        FakeObject.getGameObject().transform.localRotation = curRot;        //恢复朝向
        mFakeCameraObj.camera.Render();

        //把render texture 赋予材质
        if (renderer.material != null)
        {
            renderer.material.mainTexture = mFakeRenderTexture;
        }
        FakeObject.SetVisible(false);               //不可见
        mFakeCameraObj.SetActiveRecursively(false); //关闭摄像机
    }
Example #2
0
    void UpdateObject()
    {
        if (gameObject.name == "RoleTipShowPlayer")//是角色面板
        {
            if (CObjectManager.Instance.getPlayerMySelf().getAvatar() != null &&
                CObjectManager.Instance.getPlayerMySelf().getAvatar().GetRenderInterface() != null)
            {
                FakeObject = CObjectManager.Instance.getPlayerMySelf().getAvatar().GetRenderInterface();
                FakeObject.GetLocator("FootEffectLocator", ref mFakeObjectPos);
            }
        }
        else if (gameObject.name == "PetModelShow")
        {
            if (mSelfEquipt == null)
            {
                GameObject roleTipWindow = UIWindowMng.Instance.GetWindowGo("RoleTipWindow");
                mSelfEquipt = roleTipWindow.GetComponent <UISelfEquip>();
            }

            SDATA_PET pet = CDataPool.Instance.Pet_GetValidPet(mSelfEquipt.ActivePet);//CDataPool.Instance.Pet_GetPet(mSelfEquipt.ActivePet);
            if (pet != null && pet.FakeObject != null)
            {
                //由于宠物的skinmeshrenderer是在主gameobject下面,所以需要取子节点的meshrender add by ss
                FakeObject = pet.FakeObject.GetRenderInterface();
                SkinnedMeshRenderer render = FakeObject.getGameObject().GetComponentInChildren <SkinnedMeshRenderer>();
                if (mRender != render)
                {
                    mRender = render;
                    FakeObject.GetLocator("FootEffectLocator", ref mFakeObjectPos);
                }
            }
        }
        //         else if ()//其他fake window
        //         {
        //         }
        //
    }