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);
}