コード例 #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); //关闭摄像机
    }
コード例 #2
0
    //--------------------------------------------------------

    ///设置某项基本状态为Enable
    public virtual void Enable(uint dwFlag)
    {
        m_dwStatusFlag |= dwFlag;
        //附加处理
        switch (dwFlag)
        {
        case (uint)ObjectStatusFlags.OSF_VISIABLE:
            if (mRenderInterface != null)
            {
                mRenderInterface.SetVisible(true);
            }
            break;

        case (uint)ObjectStatusFlags.OSF_RAY_QUERY:
            if (mRenderInterface != null)
            {
                mRenderInterface.SetRayQuery(true);
            }
            break;

        default:
            break;
        }
    }