Exemplo n.º 1
0
 public void RemoveLight(SceneLight light)
 {
     lights.Remove(light);
     light.gameObject.SetActive(false);
     Destroy(light.gameObject);
     LightRemoved?.Invoke(light);
 }
Exemplo n.º 2
0
 /// <summary>
 /// Update lights.
 /// </summary>
 /// <param name="light"></param>
 public override void UpdateLighting(SceneLight light)
 {
     if (_material != null)
     {
         _material.Light = light;
     }
 }
Exemplo n.º 3
0
        /// <summary>
        /// Update the current effect. This method will change.
        /// </summary>
        /// <param name="effect"></param>
        /// <param name="material"></param>
        private void UpdateEffect(BasicEffect effect, BasicMaterial material)
        {
            effect.Alpha             = material.AlphaColor;
            effect.AmbientLightColor = material.AmbientColor * material.AmbientIntensity;
            effect.DiffuseColor      = material.DiffuseColor * material.DiffuseIntensity;
            effect.EmissiveColor     = material.EmissiveColor * material.EmissiveIntensity;
            effect.FogColor          = material.FogColor;
            effect.FogEnabled        = material.EnableFog;
            effect.FogStart          = material.FogStart;
            effect.FogEnd            = material.FogEnd;
            effect.LightingEnabled   = true;

            if (material.EnableDefaultLighting)
            {
                effect.EnableDefaultLighting();
            }

            effect.PreferPerPixelLighting = material.EnabledPerPixelLighting;
            effect.SpecularColor          = material.SpecularColor * material.SpecularIntensity;
            effect.VertexColorEnabled     = material.EnableVertexColor;


            SceneLight light = (SceneLight)material.Light;

            if (light != null)
            {
                StockMaterial.UpdateLighting(effect, light);
                effect.AmbientLightColor *= light.AmbientColor * light.AmbientIntensity;
            }
        }
Exemplo n.º 4
0
 /// <summary>
 /// Update lights.
 /// </summary>
 /// <param name="light">Light to use.</param>
 public override void UpdateLighting(SceneLight light)
 {
     foreach (YnEntity3D entity3D in _members)
     {
         entity3D.UpdateLighting(light);
     }
 }
Exemplo n.º 5
0
    private void LightRemoved(SceneLight layer)
    {
        LightItem item = lights[layer];

        lights.Remove(layer);
        item.gameObject.SetActive(false);
        Destroy(item.gameObject);
    }
Exemplo n.º 6
0
    private void LightAdded(SceneLight light)
    {
        GameObject go = Instantiate(lightItemPrefab, contentHolder.transform);

        go.name = light.name;
        LightItem item = go.GetComponent <LightItem>();

        item.Light = light;
        item.SetToggleIcon();
        lights.Add(light, item);
    }
Exemplo n.º 7
0
 /// <summary>
 /// Update lights.
 /// </summary>
 /// <param name="light"></param>
 public override void UpdateLighting(SceneLight light)
 {
     if (_material != null)
     {
         _material.Light = light;
     }
     else if (_materials != null)
     {
         foreach (BaseMaterial material in _materials)
         {
             material.Light = light;
         }
     }
 }
Exemplo n.º 8
0
    public SceneLight CreateLight()
    {
        SceneLight light = Instantiate(LightPrefab, LightHolder.transform).GetComponent <SceneLight>();

        light.name = $"Light {lightCount++}";

        Vector3 lookDirection = Camera.main.transform.forward;

        light.transform.position = Camera.main.transform.position + lookDirection.normalized * distance;
        light.transform.rotation = Quaternion.LookRotation(-lookDirection, Vector3.up);

        light.SetColor(light.light.color);
        lights.Add(light);
        LightAdded?.Invoke(light);
        return(light);
    }
Exemplo n.º 9
0
        public static void UpdateLighting(IEffectLights effect, SceneLight light)
        {
            effect.DirectionalLight0.Enabled       = light.DirectionalLights[0].Enabled;
            effect.DirectionalLight0.Direction     = light.DirectionalLights[0].Direction;
            effect.DirectionalLight0.DiffuseColor  = light.DirectionalLights[0].DiffuseColor * light.DirectionalLights[0].DiffuseIntensity;
            effect.DirectionalLight0.SpecularColor = light.DirectionalLights[0].SpecularColor * light.DirectionalLights[0].SpecularIntensity;

            effect.DirectionalLight1.Enabled       = light.DirectionalLights[1].Enabled;
            effect.DirectionalLight1.Direction     = light.DirectionalLights[1].Direction;
            effect.DirectionalLight1.DiffuseColor  = light.DirectionalLights[1].DiffuseColor * light.DirectionalLights[1].DiffuseIntensity;
            effect.DirectionalLight1.SpecularColor = light.DirectionalLights[1].SpecularColor * light.DirectionalLights[1].SpecularIntensity;

            effect.DirectionalLight2.Enabled       = light.DirectionalLights[2].Enabled;
            effect.DirectionalLight2.Direction     = light.DirectionalLights[2].Direction;
            effect.DirectionalLight2.DiffuseColor  = light.DirectionalLights[2].DiffuseColor * light.DirectionalLights[2].DiffuseIntensity;
            effect.DirectionalLight2.SpecularColor = light.DirectionalLights[2].SpecularColor * light.DirectionalLights[2].SpecularIntensity;
        }
Exemplo n.º 10
0
    private void Awake()
    {
        if (_instance != null && _instance != this)
        {
            Destroy(this.gameObject);
            return;
        }
        _instance = this;

        lights = new List <SceneLight>();

        SceneLight light = Instantiate(LightPrefab, LightHolder.transform).GetComponent <SceneLight>();

        light.name = $"Main light";

        light.transform.position = new Vector3(0, 3, 0);
        light.transform.rotation = Quaternion.Euler(50, -30, 0);
        light.light.intensity    = 0.8f;

        light.SetColor(light.light.color);
        lights.Add(light);
    }
Exemplo n.º 11
0
        /// <summary>
        /// Update lights.
        /// </summary>
        /// <param name="light">Light to use.</param>
        public virtual void UpdateLighting(SceneLight light)
        {

        }
Exemplo n.º 12
0
 /// <summary>
 /// Update lights.
 /// </summary>
 /// <param name="light"></param>
 public override void UpdateLighting(SceneLight light)
 {
     if (_material != null)
     {
         _material.Light = light;
     }
     else if (_materials != null)
     {
         foreach (BaseMaterial material in _materials)
             material.Light = light;
     }
 }
Exemplo n.º 13
0
 private void LoadDefaultUI()
 {
     PaletteMap.Show();
     SceneLight.UpadteGameGraphSetting();
 }
Exemplo n.º 14
0
 /// <summary>
 /// Update lights.
 /// </summary>
 /// <param name="light"></param>
 public override void UpdateLighting(SceneLight light)
 {
     if (_material != null)
         _material.Light = light;
 }
Exemplo n.º 15
0
        public static void UpdateLighting(IEffectLights effect, SceneLight light)
        {
            effect.DirectionalLight0.Enabled = light.DirectionalLights[0].Enabled;
            effect.DirectionalLight0.Direction = light.DirectionalLights[0].Direction;
            effect.DirectionalLight0.DiffuseColor = light.DirectionalLights[0].DiffuseColor * light.DirectionalLights[0].DiffuseIntensity;
            effect.DirectionalLight0.SpecularColor = light.DirectionalLights[0].SpecularColor * light.DirectionalLights[0].SpecularIntensity;

            effect.DirectionalLight1.Enabled = light.DirectionalLights[1].Enabled;
            effect.DirectionalLight1.Direction = light.DirectionalLights[1].Direction;
            effect.DirectionalLight1.DiffuseColor = light.DirectionalLights[1].DiffuseColor * light.DirectionalLights[1].DiffuseIntensity;
            effect.DirectionalLight1.SpecularColor = light.DirectionalLights[1].SpecularColor * light.DirectionalLights[1].SpecularIntensity;

            effect.DirectionalLight2.Enabled = light.DirectionalLights[2].Enabled;
            effect.DirectionalLight2.Direction = light.DirectionalLights[2].Direction;
            effect.DirectionalLight2.DiffuseColor = light.DirectionalLights[2].DiffuseColor * light.DirectionalLights[2].DiffuseIntensity;
            effect.DirectionalLight2.SpecularColor = light.DirectionalLights[2].SpecularColor * light.DirectionalLights[2].SpecularIntensity;
        }
Exemplo n.º 16
0
 /// <summary>
 /// Update lights.
 /// </summary>
 /// <param name="light">Light to use.</param>
 public virtual void UpdateLighting(SceneLight light)
 {
 }
Exemplo n.º 17
0
 public YnScene3D()
     : base(null)
 {
     _sceneLight = new SceneLight();
     _sceneLight.AmbientIntensity = 1f;
 }
Exemplo n.º 18
0
 public YnScene3D()
     : base(null)
 {
     _sceneLight = new SceneLight();
     _sceneLight.AmbientIntensity = 1f;
 }
Exemplo n.º 19
0
 public void AddLightChangeListener(ColorPicker picker, SceneLight light)
 {
     picker.onValueChanged.AddListener((c) => light.SetColor(c));
 }
Exemplo n.º 20
0
 /// <summary>
 /// Update lights.
 /// </summary>
 /// <param name="light">Light to use.</param>
 public override void UpdateLighting(SceneLight light)
 {
     foreach (YnEntity3D entity3D in _members)
         entity3D.UpdateLighting(light);
 }
Exemplo n.º 21
0
        /// <summary>
        /// Draw entities on screen.
        /// </summary>
        /// <param name="device"></param>
        /// <param name="camera"></param>
        /// <param name="light"></param>
        public virtual void Draw(GameTime gameTime, GraphicsDevice device, BaseCamera camera, SceneLight light)
        {
            if (_safeMembers.Count > 0)
            {
                for (int i = 0, l = _safeMembers.Count; i < l; i++)
                {
                    if (_safeMembers[i].Enabled)
                    {
                        if (light != null)
                        {
                            _safeMembers[i].UpdateLighting(light);
                        }

                        _safeMembers[i].Draw(gameTime, device, camera);
                    }
                }
            }
        }
Exemplo n.º 22
0
        private void ToGenerateVariant(GameObject root, EVariantType variantType)
        {
            m_config = new SceneConfig();
            //var root = GameObject.Find(m_rootName);
            string folderName = UnityEngine.SceneManagement.SceneManager.GetActiveScene().name;

            if (System.IO.Directory.Exists(m_packageFolder + folderName + "/" + variantType.ToString()))
            {
                DelectDir(m_packageFolder + folderName + "/" + variantType.ToString());
            }
            Directory.CreateDirectory(m_packageFolder + folderName + "/" + variantType.ToString());
            MeshRenderer[]      meshRenders = root.GetComponentsInChildren <MeshRenderer>();
            List <MeshRenderer> renlist     = new List <MeshRenderer>();
            List <MeshFilter>   filList     = new List <MeshFilter>();

            for (int i = 0; i < meshRenders.Length; i++)
            {
                var meshRender = meshRenders[i];
                var meshFilter = meshRender.GetComponent <MeshFilter>();
                if (meshFilter == null)
                {
                    continue;
                }
                if (meshRender.sharedMaterials.Length <= 0 || meshRender.sharedMaterial == null)
                {
                    continue;
                }
                bool has = false;
                for (int j = 0; j < renlist.Count; j++)
                {
                    if (filList[j].mesh == meshFilter.sharedMesh && renlist[j].sharedMaterials.Length == meshRender.sharedMaterials.Length && renlist[i].sharedMaterial == meshRender.sharedMaterial)
                    {
                        has = true;
                        break;
                    }
                }
                if (has)
                {
                    continue;
                }
                var f = meshRender.GetComponent <MeshFilter>();
                if (f == null)
                {
                    continue;
                }
                renlist.Add(meshRender);
                filList.Add(f);;
                var obj = GameObject.Instantiate(meshRender.gameObject);
                var ani = obj.GetComponent <Animator>();
                if (ani != null && ani.runtimeAnimatorController == null)
                {
                    UnityEngine.Object.DestroyImmediate(ani);
                }
                var a = obj.GetComponent <Animation>();
                if (a != null && a.GetClipCount() <= 0)
                {
                    UnityEngine.Object.DestroyImmediate(a);
                }
                var prefab = PrefabUtility.CreateEmptyPrefab(m_packageFolder + folderName + "/" + variantType.ToString() + "/" + meshRender.gameObject.name + ".prefab");
                PrefabUtility.ReplacePrefab(obj, prefab);
                UnityEngine.Object.DestroyImmediate(obj);
            }
            var cloneRoot = Object.Instantiate(root);

            m_config.objs = new List <SceneObj>();
            TraverseChildNode(cloneRoot.transform);

            var rootPrefab = PrefabUtility.CreateEmptyPrefab(m_packageFolder + folderName + "/" + variantType.ToString() + "/root.prefab");

            PrefabUtility.ReplacePrefab(cloneRoot, rootPrefab);
            UnityEngine.Object.DestroyImmediate(cloneRoot);

            if (RenderSettings.fog)
            {
                m_config.fog                  = new SceneFog();
                m_config.fog.colorR           = RenderSettings.fogColor.r;
                m_config.fog.colorG           = RenderSettings.fogColor.g;
                m_config.fog.colorB           = RenderSettings.fogColor.b;
                m_config.fog.colorA           = RenderSettings.fogColor.a;
                m_config.fog.fogMode          = (int)RenderSettings.fogMode;
                m_config.fog.fogDensity       = RenderSettings.fogDensity;
                m_config.fog.fogStartDistance = RenderSettings.fogStartDistance;
                m_config.fog.fogEndDistance   = RenderSettings.fogEndDistance;
            }
            if (RenderSettings.skybox != null)
            {
                if (!RenderSettings.skybox.name.Contains("Default-"))
                {
                    AssetDatabase.CopyAsset(UnityEditor.AssetDatabase.GetAssetPath(RenderSettings.skybox), m_packageFolder + folderName + "/" + variantType.ToString() + "/" + m_config.skybox + ".mat");
                    m_config.skybox = RenderSettings.skybox.name;
                }
            }
            if (LightmapSettings.lightmaps != null)
            {
                m_config.lightmap       = new SceneLightmap();
                m_config.lightmap.mode  = (int)LightmapSettings.lightmapsMode;
                m_config.lightmap.datas = new List <SceneLightmapData>();
                for (int i = 0; i < LightmapSettings.lightmaps.Length; i++)
                {
                    Texture2D color     = LightmapSettings.lightmaps[i].lightmapColor;
                    Texture2D dir       = LightmapSettings.lightmaps[i].lightmapDir;
                    string    colorName = color != null?color.name.Trim() : null;

                    if (!string.IsNullOrEmpty(colorName))
                    {
                        AssetDatabase.CopyAsset(UnityEditor.AssetDatabase.GetAssetPath(color), m_packageFolder + folderName + "/" + variantType.ToString() + "/" + colorName + ".exr");
                    }
                    string dirName = dir != null?dir.name.Trim() : null;

                    if (string.IsNullOrEmpty(dirName))
                    {
                        AssetDatabase.CopyAsset(UnityEditor.AssetDatabase.GetAssetPath(dir), m_packageFolder + folderName + "/" + variantType.ToString() + "/" + dirName + ".exr");
                    }
                    m_config.lightmap.datas.Add(new SceneLightmapData()
                    {
                        color = colorName,
                        dir   = dirName
                    });
                }
            }
            var lightObj = GameObject.Find(m_lightName);

            if (lightObj != null)
            {
                m_config.lights = new List <SceneLight>();
                var lights = lightObj.GetComponentsInChildren <UnityEngine.Light>();
                for (int i = 0; i < lights.Length; i++)
                {
                    var light       = lights[i];
                    var lightConfig = new SceneLight();
                    lightConfig.colorR      = light.color.r;
                    lightConfig.colorG      = light.color.g;
                    lightConfig.colorB      = light.color.b;
                    lightConfig.colorA      = light.color.a;
                    lightConfig.eulerAngleX = light.transform.eulerAngles.x;
                    lightConfig.eulerAngleY = light.transform.eulerAngles.y;
                    lightConfig.eulerAngleZ = light.transform.eulerAngles.z;
                    lightConfig.positionX   = light.transform.position.x;
                    lightConfig.positionY   = light.transform.position.y;
                    lightConfig.positionZ   = light.transform.position.z;
                    lightConfig.intensity   = light.intensity;
                    lightConfig.type        = (int)light.type;
                    lightConfig.range       = light.range;
                    lightConfig.spotAngle   = light.spotAngle;
                    lightConfig.width       = light.areaSize.x;
                    lightConfig.height      = light.areaSize.y;
                    m_config.lights.Add(lightConfig);
                }
            }
            byte[] bytes = Serialize <SceneConfig>(m_config);
            using (FileStream stream = new FileStream(m_packageFolder + folderName + "/" + variantType.ToString() + "/config.bytes", FileMode.Create, FileAccess.Write))
            {
                stream.Write(bytes, 0, bytes.Length);
            }
            AssetDatabase.Refresh();
            ToBundle(m_packageFolder + folderName, variantType);
        }
Exemplo n.º 23
0
 public static void Add(SceneLight newLight)
 {
     sceneLights.Add(newLight);
 }