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