virtual public void ReleaseInRender() { if (IsValid()) { NodeLock.WaitLockRender(); base.Release(); NodeLock.UnLock(); } }
// Update is called once per frame private void Update() { NodeLock.WaitLockEdit(); ProcessPendingUpdates(); // Transfer camera parameters PerspCamera perspCamera = _native_camera as PerspCamera; if (perspCamera != null) { perspCamera.VerticalFOV = UnityCamera.fieldOfView; perspCamera.HorizontalFOV = 2 * Mathf.Atan(Mathf.Tan(UnityCamera.fieldOfView * Mathf.Deg2Rad / 2) * UnityCamera.aspect) * Mathf.Rad2Deg;; perspCamera.NearClipPlane = UnityCamera.nearClipPlane; perspCamera.FarClipPlane = UnityCamera.farClipPlane; } Matrix4x4 unity_camera_transform = UnityCamera.transform.worldToLocalMatrix; Matrix4x4 gz_transform = _zflipMatrix * unity_camera_transform * _zflipMatrix; _native_camera.Transform = gz_transform.ToMatrix4(); IWorldCoord ctrl = UnityCamera.GetComponent <IWorldCoord>(); if (ctrl != null) { _native_camera.Position = ctrl.Position; } NodeLock.UnLock(); NodeLock.WaitLockRender(); _native_camera.Render(_native_context, 1000, 1000, 1000, _native_traverse_action); //native_camera.DebugRefresh(); NodeLock.UnLock(); }