コード例 #1
0
        public void Import(SyncLight syncLight, GameObject parent)
        {
            // Convert syncLight intensity to unity light intensity
            var intensity = k_DefaultIntensity;

            if (syncLight.Intensity > 0)
            {
                intensity = ImportersUtils.GetCandelasIntensity(syncLight.Intensity, syncLight.IntensityUnit, syncLight.Type, syncLight.SpotAngle);
                intensity = (float)(k_IntensityMultiplier * Math.Pow(intensity, k_IntensityExponent));
            }

            // Compute the range if not provided
            var range = syncLight.Range;

            if (range <= 0)
            {
                range = (float)Math.Sqrt(intensity / k_IntensityAtRange);
            }

            // TODO Investigate why Light.UseColorTemperature is not exposed to C# and let the light do this calculation
            var cct = ImportersUtils.ColorFromTemperature(syncLight.Temperature);

            var filter = new Color(syncLight.Color.R, syncLight.Color.G, syncLight.Color.B);

            var light = parent.AddComponent <Light>();

            light.color            = cct * filter;
            light.colorTemperature = syncLight.Temperature;

            switch (syncLight.Type)
            {
            case SyncLightType.Spot:
            {
                light.spotAngle = syncLight.SpotAngle;
                light.shadows   = LightShadows.Hard;
                light.range     = range;
                light.type      = LightType.Spot;
                light.intensity = intensity;
            }
            break;

            case SyncLightType.Point:
            {
                light.type      = LightType.Point;
                light.range     = range;
                light.intensity = intensity;
            }
            break;

            case SyncLightType.Directional:
            {
                light.type      = LightType.Directional;
                light.intensity = intensity;
            }
            break;
            }
        }