Esempio n. 1
0
    /// <summary>
    /// Places a new Seed.
    /// </summary>
    /// <param name="type">Type.</param>
    /// <param name="position">Position.</param>
    public void PlaceASeed(Vector3 position, SpriteRenderer parentSpriteRenderer)
    {
        // Disable Cursor
        StopPlaceSeed();

        index = startScreenController.GetCountPlacedSeeds();

        if (index >= seedPlaces.Length)
        {
            index = 0;
            Destroy(seedPlaces[index].gameObject);
        }

        int seedIndex = Random.Range(0, seedPrefabs.Length);

        seedPlaces[index] = GameObject.Instantiate(seedPrefabs[seedIndex], position, Quaternion.identity) as GameObject; //new GameObject(string.Format("{0}_{1}", index, type));
        seedPlaces[index].transform.parent     = flowerContainer;
        seedPlaces[index].transform.localScale = seedPrefabs[seedIndex].transform.localScale;

        RandomTextureChooser randomTextureChooser = seedPlaces[index].GetComponent <RandomTextureChooser>();

        if (randomTextureChooser != null)
        {
            randomTextureChooser.Spawn(-1);
        }

        ParticleSystem partSys = seedPlaces[index].GetComponentInChildren <ParticleSystem>();

        if (partSys)
        {
            partSys.transform.localScale *= 5.0f;
        }

        SpriteRenderer newSpriteRenderer = seedPlaces[index].GetComponent <SpriteRenderer>();

        newSpriteRenderer.sortingLayerName = parentSpriteRenderer.sortingLayerName;
        newSpriteRenderer.sortingOrder     = -1;

        startScreenController.AddNewPlant(seedIndex, seedPlaces[index].transform.position, newSpriteRenderer);
        PlayPlantingMagic(seedPlaces[index].transform.position, parentSpriteRenderer.sortingLayerName);
        ++index;
    }
Esempio n. 2
0
    /// <summary>
    /// Raises the inspector GUI event.
    /// </summary>
    public override void OnInspectorGUI()
    {
        EditorGUILayout.Space();
        EditorGUILayout.Space();

        // Update the serializedProperty - always do this in the beginning of OnInspectorGUI.
        serializedObject.Update();

        if (!myController.rendererFound)
        {
            EditorGUILayout.LabelField("No Renderer found. Do you want to add one?");

            if (GUILayout.Button("Add SpriteRenderer"))
            {
                myController.gameObject.AddComponent <SpriteRenderer>();
            }

            if (GUILayout.Button("Add MeshRenderer"))
            {
                GameObject dummyObj = GameObject.CreatePrimitive(PrimitiveType.Quad);

                myController.gameObject.AddComponent <MeshRenderer>();
                myController.gameObject.AddComponent <MeshFilter>();

                try
                {
                    myController.gameObject.GetComponent <MeshFilter> ().mesh = dummyObj.GetComponent <MeshFilter>().mesh;
                }
                catch (System.Exception ex)
                {
                }

                DestroyImmediate(dummyObj);
            }

            /*
             * if(GUILayout.Button("Add SkinnedMeshRenderer"))
             * {
             *      GameObject dummyObj = GameObject.CreatePrimitive(PrimitiveType.Quad);
             *
             *      myController.gameObject.AddComponent<SkinnedMeshRenderer>();
             *
             *      myController.gameObject.GetComponent<SkinnedMeshRenderer>().sharedMesh = dummyObj.GetComponent<MeshFilter>().mesh;
             *      myController.gameObject.GetComponent<SkinnedMeshRenderer>().material = dummyObj.GetComponent<MeshRenderer>().sharedMaterial;
             *      DestroyImmediate(dummyObj);
             * }
             */

            myController.Initialize();
        }
        else
        {
            if (myController.useSpriteRenderer)
            {
                // --- SpriteRenderer Specific ---
                EditorGUILayout.PropertyField(p_spritePool, true);
            }
            else
            {
                // --- MeshRenderer Specific ---
                EditorGUILayout.PropertyField(p_meshPool, true);

                if (myController.renderer.sharedMaterial != null)
                {
                    Shader shader       = myController.renderer.sharedMaterial.shader;
                    string textureNames = "";

                    for (int i = 0; i < ShaderUtil.GetPropertyCount(shader); i++)
                    {
                        if (ShaderUtil.GetPropertyType(shader, i) == ShaderUtil.ShaderPropertyType.TexEnv)
                        {
                            textureNames += ShaderUtil.GetPropertyName(shader, i).ToString() + System.Environment.NewLine;
                        }
                    }

                    EditorGUILayout.LabelField("Possible Texture From Shader:", EditorStyles.boldLabel);
                    EditorGUILayout.TextArea(textureNames);
                }

                EditorGUILayout.PropertyField(p_textureLabel);
            }

            // --- General Settings ---
            EditorGUILayout.PropertyField(p_randomFlipX);
            EditorGUILayout.PropertyField(p_randomFlipY);
            EditorGUILayout.PropertyField(p_shuffleOnEnable);

            if (GUILayout.Button("Generate (" + (myController.poolSize * (p_randomFlipX.boolValue ? 2 : 1) * (p_randomFlipY.boolValue ? 2 : 1)) + " possible variations)"))
            {
                myController.Spawn();
            }

            /*
             * AssetPath = EditorGUILayout.TextField(AssetPath);
             *
             * if(GUILayout.Button("Add textures from path"))
             * {
             *      if(myController.useSpriteRenderer)
             *      {
             *              AssetPath = "Assets/Alpha/Source/";
             *              string[] lookFor = new string[] {AssetPath};
             *
             *              Debug.Log(AssetDatabase.FindAssets("t:texture2D", lookFor).Length);
             *              //myController.SetPool(AssetDatabase.LoadAllAssetsAtPath(AssetPath).OfType<Sprite>());
             *      }
             *      else
             *      {
             *              myController.SetPool(AssetDatabase.LoadAllAssetsAtPath(AssetPath) as Texture2D[]);
             *      }
             * }
             */

            if (myController.useSpriteRenderer)
            {
                Undo.RecordObject(myController.spriteRenderer, "Change Texture of Object");
            }
            else
            {
                Undo.RecordObject(myController.renderer, "Change Texture of Object");
            }
        }

        // Apply changes to the serializedProperty - always do this in the end of OnInspectorGUI.
        serializedObject.ApplyModifiedProperties();
    }