private void ConvertUnityCameraToBabylon(Camera camera, GameObject gameObject, float progress, ref UnityMetaData metaData, ref List<BabylonExport.Entities.BabylonParticleSystem> particleSystems, ref List<UnityFlareSystem> lensFlares, ref string componentTags) { ExporterWindow.ReportProgress(progress, "Exporting camera: " + camera.name); BabylonUniversalCamera babylonCamera = new BabylonUniversalCamera { name = camera.name, id = GetID(camera.gameObject), fov = camera.fieldOfView * (float)Math.PI / 180, minZ = camera.nearClipPlane, maxZ = camera.farClipPlane, parentId = GetParentID(camera.transform), position = camera.transform.localPosition.ToFloat() }; metaData.type = "Camera"; metaData.properties.Add("hdr", camera.hdr); metaData.properties.Add("clearFlags", camera.clearFlags.ToString()); metaData.properties.Add("cullingMask", camera.cullingMask); metaData.properties.Add("stereoEnabled", camera.stereoEnabled); metaData.properties.Add("isOrthographic", camera.orthographic); metaData.properties.Add("useOcclusionCulling", camera.useOcclusionCulling); babylonCamera.tags = componentTags; var target = new Vector3(0, 0, 1); var transformedTarget = camera.transform.TransformDirection(target); babylonCamera.target = (camera.transform.position + transformedTarget).ToFloat(); babylonCamera.isStereoscopicSideBySide = camera.stereoEnabled; if (camera.orthographic) { float vert = camera.orthographicSize; float horz = vert * exportationOptions.DefaultAspectRatio; babylonCamera.orthoTop = vert; babylonCamera.orthoBottom = -vert; babylonCamera.orthoLeft = -horz; babylonCamera.orthoRight = horz; babylonCamera.mode = 1; } else { babylonCamera.mode = 0; } babylonCamera.metadata = metaData; babylonScene.CamerasList.Add(babylonCamera); if (Camera.main == camera) { babylonScene.activeCameraID = babylonCamera.id; babylonScene.clearColor = camera.backgroundColor.ToFloat(); } // Animations ExportAnimations(camera.transform, babylonCamera); // Collisions if (exportationOptions.ExportCollisions) { babylonCamera.checkCollisions = true; if (SceneController != null) { babylonCamera.applyGravity = (SceneController.sceneOptions.defaultGravity.y == 0 && SceneController.sceneOptions.defaultGravity.y == 0 && SceneController.sceneOptions.defaultGravity.z == 0) ? false : true; babylonCamera.ellipsoid = SceneController.sceneOptions.cameraEllipsoid.ToFloat(); } } // Lens Flares ParseLensFlares(gameObject, babylonCamera.id, ref lensFlares); // Particles Systems ParseParticleSystems(gameObject, babylonCamera.id, ref particleSystems); }