static void CheckCameras() { Camera[] sceneCameras = InternalEditorUtility.GetSceneViewCameras(); foreach (Camera camera in sceneCameras) { if (shouldRender) { if (!camera.GetComponent <HvrRender>()) { GameObject sceneCameraGo = camera.gameObject; HvrRender render = sceneCameraGo.AddComponent <HvrRender>(); render.hideFlags = HideFlags.HideAndDontSave; SceneView.RepaintAll(); } } else { if (camera.GetComponent <HvrRender>()) { CleanPostEffects(camera); SceneView.RepaintAll(); } } } }
public override void OnInspectorGUI() { hvrRender = (HvrRender)target; cam = hvrRender.GetComponent <Camera>(); if (hvrRender && CheckResources()) { DrawCustomInspector(target); } }
public void HvrRenderMode(UnityEngine.Object target, SerializedObject serializedObject) { if (target == null) { return; } HvrRender.eMode mode = HvrRender.eMode.direct; if (target.GetType() == typeof(HvrRender)) { HvrRender render = target as HvrRender; mode = render.mode; } else { return; } EditorGUI.BeginChangeCheck(); mode = (HvrRender.eMode)EditorGUILayout.Popup("Render Mode", (int)mode, hvrRenderModeStrings); if (EditorGUI.EndChangeCheck()) { foreach (UnityEngine.Object obj in serializedObject.targetObjects) { if (obj.GetType() == target.GetType()) { Undo.RecordObject(obj, "Changed Render Mode"); if (obj.GetType() == typeof(HvrRender)) { HvrRender render = (HvrRender)obj; render.mode = mode; } } } } }
private static void Update() { // In the case that the graphics api changes while the editor is running // destroy any hvrrender components that are attached to Editor cameras if (previousGraphicsDeviceType != SystemInfo.graphicsDeviceType) { previousGraphicsDeviceType = SystemInfo.graphicsDeviceType; DestroySceneCameras(); } if (!EditorApplication.isPlaying) { Camera[] sceneCameras = InternalEditorUtility.GetSceneViewCameras(); foreach (Camera camera in sceneCameras) { if (camera.gameObject.GetComponent(Uniforms.componentNames.hvrRender)) { HvrRender render = (HvrRender)camera.gameObject.GetComponent(Uniforms.componentNames.hvrRender); if (!HvrScene.Contains(render)) { HvrScene.Add(render); } } } List <HvrActor> actors = new List <HvrActor>(); HvrScene.GetObjects(actors); // If the asset's CurrentTime is different to the ActualTime, then a frame // has probably begun decoding or has finished decoding. // In order for this the data to be pushed to the renderer, we must force a render to occur bool assetTimeChanged = false; // Because of the async nature of the decoding and rendering we must wait until the voxel count // has changed before rerendering the views int currentVoxelCount = 0; foreach (HvrActor actor in actors) { if (actor != null && actor.assetInterface != null) { if (actor.assetInterface.GetCurrentTime() != actor.assetInterface.GetActualTime()) { assetTimeChanged = true; } currentVoxelCount += actor.assetInterface.GetVoxelCount(); } } if (assetTimeChanged || sLastVoxelCount != currentVoxelCount) { sLastVoxelCount = currentVoxelCount; // Ensures that the HvrActor's mesh is updated List <HvrActor> hvrActors = new List <HvrActor>(); HvrScene.GetObjects(hvrActors); foreach (HvrActor actor in hvrActors) { actor.EditorUpdate(); } // Force HvrScene to allow the PrepareRender stage to occur HvrScene.lastPreparedFrame = -1; // Force all HvrRender cameras to render // Do this last after updating the scene List <HvrRender> hvrRenders = new List <HvrRender>(); HvrScene.GetObjects(hvrRenders); foreach (HvrRender render in hvrRenders) { render.GetComponent <Camera>().Render(); } } } }