Esempio n. 1
0
        public static void      SerializeShader(Shader shader, ByteBuffer buffer)
        {
            buffer.AppendUnicodeString(shader.name);

            int total = ShaderUtil.GetPropertyCount(shader);

            buffer.Append(total);

            for (int i = 0; i < total; i++)
            {
                NGShaderUtility.SerializeShaderProperty(shader, i, buffer);
            }
        }
Esempio n. 2
0
        private void    ReferenceAll()
        {
            try
            {
                string[] assets = Directory.GetFiles(Application.dataPath, "*", SearchOption.AllDirectories);

                for (int i = 0; i < assets.Length; i++)
                {
                    if (assets[i].EndsWith(".meta") == true || assets[i].EndsWith(".shader") == false)
                    {
                        continue;
                    }

                    string p = assets[i].Substring(Application.dataPath.Length - "Assets".Length);
                    AssetDatabase.LoadAssetAtPath <Shader>(p);

                    EditorUtility.DisplayProgressBar(Constants.PackageTitle, "Scanning assets (" + i + " / " + assets.Length + ")", (float)i / (float)assets.Length);
                }

                Shader[]      shaders    = Resources.FindObjectsOfTypeAll <Shader>();
                List <Shader> references = new List <Shader>();

                for (int i = 0; i < shaders.Length; i++)
                {
                    if ((shaders[i].hideFlags & HideFlags.DontSave) == 0)
                    {
                        references.Add(shaders[i]);
                    }
                }

                NGServerScene scene = this.shaders.serializedObject.targetObject as NGServerScene;

                //scene.shaderReferences.shaders = references.ToArray();

                EditorUtility.DisplayProgressBar(Constants.PackageTitle, "Saving shaders...", 0.99F);
                this.shaders.arraySize = references.Count;
                for (int i = 0; i < references.Count; i++)
                {
                    this.shaders.GetArrayElementAtIndex(i).objectReferenceValue = references[i];
                }

                this.shaders.serializedObject.ApplyModifiedProperties();

                EditorUtility.DisplayProgressBar(Constants.PackageTitle, "Saving shaders' properties...", 1F);
                ByteBuffer buffer = Utility.GetBBuffer();
                buffer.Append(references.Count);

                for (int i = 0; i < references.Count; i++)
                {
                    NGShaderUtility.SerializeShader(references[i], buffer);
                }

                scene.shaderReferences.properties = Utility.ReturnBBuffer(buffer);
                //byte[]	raw = Utility.ReturnBBuffer(buffer);

                //this.properties.arraySize = raw.Length;
                //for (int i = 0; i < raw.Length; i++)
                //	this.properties.GetArrayElementAtIndex(i).intValue = raw[i];
                this.shaders.serializedObject.Update();
            }
            finally
            {
                EditorUtility.ClearProgressBar();
            }
        }