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); //关闭摄像机 }
//-------------------------------------------------------- ///设置某项基本状态为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; } }