|
|
- //Update SC
- using UnityEngine;
- using UnityEditor;
- using System.Collections;
-
- [CustomEditor(typeof(T4MObjSC))]
- [CanEditMultipleObjects]
- public class T4MExtendsSC : Editor {
- int layerMask = 1073741824;
- bool ToggleF = false;
- Texture2D[] UndoObj;
- static Color[] terrainBay2;
- GameObject PlantObj;
- GameObject PlantObjPreview;
- GameObject currentObjPreview;
- float rotationCorrect;
- T4MPlantObjSC[] T4MPlantObjGet;
- int CheckPlacement;
- int State;
- int oldState;
- float RandomDistance;
- Vector3 RandomRotation;
- bool oldRandomRot;
- int plantmodval;
- float oldSize;
- Renderer[] T4MPlantRenderer;
- string OldActivStat = "";
- Collider[] T4MPreviewColl;
- Renderer[] LodObj;
- static ArrayList onPlayModeInstanceFolder= new ArrayList();
- static ArrayList onPlayModeInstanceGroup= new ArrayList();
- static ArrayList onPlayModeInstancePos= new ArrayList();
- static ArrayList onPlayModeInstanceRot= new ArrayList();
- static ArrayList onPlayModeInstanceSize= new ArrayList();
- static ArrayList onPlayModeDestroyed= new ArrayList();
- static bool Play;
-
- void OnSceneGUI () {
- if (T4MSC.T4MPreview && T4MSC.T4MMenuToolbar == 3)
- Painter();
- else if (T4MSC.T4MMenuToolbar == 4)
- Planting ();
- else State = 3;
-
- if (oldState != State || !PlantObjPreview && T4MSC.T4MMenuToolbar == 4 ||T4MSC.T4MObjectPlant[T4MSC.T4MPlantSel] == null && T4MSC.T4MMenuToolbar == 4){
-
- MeshRenderer[] prev = GameObject.FindObjectsOfType(typeof(MeshRenderer)) as MeshRenderer[];
-
- foreach(MeshRenderer go in prev)
- {
- if(go.hideFlags == HideFlags.HideInHierarchy || go.name == "previewT4M")
- {
- go.hideFlags=0;
- DestroyImmediate (go.gameObject);
- }
- }
- oldState = State;
- }
-
- }
-
- void Painter (){
- if (State != 1)
- State = 1;
- Event e = Event.current;
- if (e.type == EventType.KeyDown && e.keyCode==KeyCode.T){
- if (T4MSC.T4MActived != "Activated")
- T4MSC.T4MActived = "Activated";
- else T4MSC.T4MActived = "Deactivated";
- }
-
- if (T4MSC.T4MPreview && T4MSC.T4MActived == "Activated" && T4MSC.T4MPreview.enabled == false || T4MSC.T4MPreview.enabled == false){
- if(
- T4MSC.PaintPrev != T4MSC.PaintHandle.Follow_Normal_Circle &&
- T4MSC.PaintPrev != T4MSC.PaintHandle.Follow_Normal_WireCircle &&
- T4MSC.PaintPrev != T4MSC.PaintHandle.Hide_preview
- ){
- T4MSC.T4MPreview.enabled = true;
- }
- }else if (T4MSC.T4MPreview && T4MSC.T4MActived == "Deactivated" && T4MSC.T4MPreview.enabled == true || T4MSC.T4MPreview.enabled == true){
- if (T4MSC.PaintPrev != T4MSC.PaintHandle.Classic){
- T4MSC.T4MPreview.enabled = false;
- }
- }
-
- if (T4MSC.T4MActived == "Activated"){
- HandleUtility.AddDefaultControl (0);
- RaycastHit raycastHit = new RaycastHit();
- Ray terrain = HandleUtility.GUIPointToWorldRay (e.mousePosition);
- if (e.type == EventType.KeyDown && e.keyCode==KeyCode.KeypadPlus){
- T4MSC.brushSize += 1;
- }else if (e.type == EventType.KeyDown && e.keyCode==KeyCode.KeypadMinus){
- T4MSC.brushSize -= 1;
- }
-
- if(Physics.Raycast(terrain, out raycastHit, Mathf.Infinity,layerMask)) {
- T4MObjSC t4msc = T4MSC.CurrentSelect.gameObject.GetComponent<T4MObjSC>();
- if (t4msc && t4msc.ConvertType != "UT") {
- T4MSC.T4MPreview.transform.localEulerAngles = new Vector3(90, 180 + T4MSC.CurrentSelect.localEulerAngles.y, 0);
- } else {
- T4MSC.T4MPreview.transform.localEulerAngles = new Vector3(90, T4MSC.CurrentSelect.localEulerAngles.y, 0);
- }
-
- T4MSC.T4MPreview.transform.position = raycastHit.point;
-
- if(T4MSC.PaintPrev != T4MSC.PaintHandle.Classic && T4MSC.PaintPrev != T4MSC.PaintHandle.Hide_preview && T4MSC.PaintPrev != T4MSC.PaintHandle.Follow_Normal_WireCircle){
- Handles.color = new Color(1f,1f,0f,0.05f);
- Handles.DrawSolidDisc(raycastHit.point, raycastHit.normal, T4MSC.T4MPreview.orthographicSize*0.9f);
- }else if(T4MSC.PaintPrev != T4MSC.PaintHandle.Classic && T4MSC.PaintPrev != T4MSC.PaintHandle.Hide_preview && T4MSC.PaintPrev != T4MSC.PaintHandle.Follow_Normal_Circle){
- Handles.color = new Color(1f,1f,0f,1f);
- Handles.DrawWireDisc(raycastHit.point, raycastHit.normal, T4MSC.T4MPreview.orthographicSize*0.9f);
- }
-
- if ((e.type == EventType.MouseDrag && e.alt == false && e.shift == false && e.button == 0) || (e.shift == false && e.alt == false && e.button == 0 && ToggleF == false)){
- Vector2 pixelUV = raycastHit.textureCoord*T4MSC.T4MMaskTexUVCoord;//0.14f;
- int PuX = Mathf.FloorToInt (pixelUV.x * T4MSC.T4MMaskTex.width);
- int PuY = Mathf.FloorToInt (pixelUV.y * T4MSC.T4MMaskTex.height);
- int x = Mathf.Clamp ( PuX - T4MSC.T4MBrushSizeInPourcent / 2, 0, T4MSC.T4MMaskTex.width - 1);
- int y = Mathf.Clamp (PuY - T4MSC.T4MBrushSizeInPourcent / 2, 0, T4MSC.T4MMaskTex.height - 1);
- int width = Mathf.Clamp (( PuX + T4MSC.T4MBrushSizeInPourcent / 2) , 0, T4MSC.T4MMaskTex.width) - x;
- int height = Mathf.Clamp ((PuY + T4MSC.T4MBrushSizeInPourcent / 2), 0, T4MSC.T4MMaskTex.height) - y;
- Color[] terrainBay = T4MSC.T4MMaskTex.GetPixels (x, y, width, height, 0);
- if(T4MSC.T4MMaskTex2)
- terrainBay2 = T4MSC.T4MMaskTex2.GetPixels(x, y, width, height, 0);
- for (int i = 0; i < height; i++) {
- for (int j = 0; j < width; j++) {
- int index = (i * width) + j;
- float Stronger= T4MSC.T4MBrushAlpha[Mathf.Clamp((y + i) - (PuY - T4MSC.T4MBrushSizeInPourcent / 2), 0, T4MSC.T4MBrushSizeInPourcent - 1)*T4MSC.T4MBrushSizeInPourcent + Mathf.Clamp((x + j) - ( PuX - T4MSC.T4MBrushSizeInPourcent / 2), 0, T4MSC.T4MBrushSizeInPourcent - 1)]* T4MSC.T4MStronger;
-
- if (T4MSC.T4MselTexture <3){
- terrainBay[index] = Color.Lerp(terrainBay[index], T4MSC.T4MtargetColor,Stronger);
-
- }else{
- terrainBay[index] = Color.Lerp(terrainBay[index], T4MSC.T4MtargetColor,Stronger);//*0.3f);
- if(T4MSC.T4MMaskTex2)
- terrainBay2[index] = Color.Lerp(terrainBay2[index], T4MSC.T4MtargetColor2,Stronger);///0.3f);
- }
- }
- }
- T4MSC.T4MMaskTex.SetPixels(x, y, width,height, terrainBay,0);
- T4MSC.T4MMaskTex.Apply();
- if(T4MSC.T4MMaskTex2){
- T4MSC.T4MMaskTex2.SetPixels(x, y, width,height, terrainBay2, 0);
- T4MSC.T4MMaskTex2.Apply();
- UndoObj = new Texture2D[2];
- UndoObj[0] = T4MSC.T4MMaskTex;
- UndoObj[1] = T4MSC.T4MMaskTex2;
- }else{
- UndoObj = new Texture2D[1];
- UndoObj[0] = T4MSC.T4MMaskTex;
- }
- //Undo.RecordObjects(UndoObj, "T4MMask"); //Unity don't work correctly with this for now
- ToggleF = true;
-
- }else if (e.type == EventType.MouseUp && e.alt == false && e.button == 0 && ToggleF == true){
-
- T4MSC.SaveTexture();
- ToggleF = false;
- }
- }
- }
- }
-
- void Planting (){
- if (State != 2)
- State = 2;
- Event e = Event.current;
- if (e.type == EventType.KeyDown && e.keyCode==KeyCode.T){
- if (T4MSC.T4MActived != "Activated")
- T4MSC.T4MActived = "Activated";
- else T4MSC.T4MActived = "Deactivated";
- }
-
- if (!Play && EditorApplication.isPlaying == true){
- Play=true;
- }else if (Play && EditorApplication.isPlaying == false){
- SaveInPlayingMode();
- Play=false;
- }
-
-
- if (PlantObjPreview && T4MSC.T4MActived == "Activated" && OldActivStat != T4MSC.T4MActived){
- T4MPlantRenderer = PlantObjPreview.GetComponentsInChildren <Renderer>();
- for(int i=0;i<T4MPlantRenderer.Length;i++){
- if(T4MPlantRenderer[i].GetComponent<Renderer>().enabled == false)
- T4MPlantRenderer[i].GetComponent<Renderer>().enabled = true;
- }
-
- OldActivStat = T4MSC.T4MActived;
- }else if (PlantObjPreview && T4MSC.T4MActived == "Deactivated" && OldActivStat != T4MSC.T4MActived){
- T4MPlantRenderer = PlantObjPreview.GetComponentsInChildren <Renderer>();
- for(int i=0;i<T4MPlantRenderer.Length;i++){
- if(T4MPlantRenderer[i].GetComponent<Renderer>().enabled == true)
- T4MPlantRenderer[i].GetComponent<Renderer>().enabled = false;
- }
- OldActivStat = T4MSC.T4MActived;
- }
- if (T4MSC.T4MActived == "Activated"){
- if(oldRandomRot != T4MSC.T4MRandomRot){
- if(PlantObjPreview)
- PlantObjPreview.transform.rotation = Quaternion.FromToRotation(Vector3.up, Vector3.zero);
- oldRandomRot = T4MSC.T4MRandomRot;
- }
-
- if (PlantObjPreview && PlantObjPreview.transform.localScale != new Vector3 (T4MSC.T4MObjSize,T4MSC.T4MObjSize,T4MSC.T4MObjSize) && T4MSC.T4MSizeVar ==0 ||PlantObjPreview && oldSize != T4MSC.T4MObjSize){
- PlantObjPreview.transform.localScale = new Vector3 (T4MSC.T4MObjSize,T4MSC.T4MObjSize,T4MSC.T4MObjSize);
- oldSize = T4MSC.T4MObjSize;
- }
-
-
- HandleUtility.AddDefaultControl (0);
- RaycastHit raycastHit = new RaycastHit();
- Ray terrain = HandleUtility.GUIPointToWorldRay (e.mousePosition);
-
- GameObject CurrentObject = T4MSC.T4MObjectPlant[T4MSC.T4MPlantSel];
-
- if(Physics.Raycast(terrain, out raycastHit, Mathf.Infinity,layerMask)){
-
- if (CurrentObject){
- if(T4MSC.T4MDistanceMin != T4MSC.T4MDistanceMax && T4MSC.T4MRandomSpa && RandomDistance ==0 || RandomDistance < T4MSC.T4MDistanceMin || RandomDistance > T4MSC.T4MDistanceMax)
- RandomDist();
-
- if (e.type == EventType.KeyDown && e.keyCode==KeyCode.H){
- rotationCorrect = -1;
- }else if (e.type == EventType.KeyDown && e.keyCode==KeyCode.G){
- rotationCorrect = 1;
- }else rotationCorrect = 0;
-
- if (e.type == EventType.KeyDown && e.keyCode==KeyCode.KeypadPlus){
- T4MSC.T4MYOrigin += 0.1f;
- }else if (e.type == EventType.KeyDown && e.keyCode==KeyCode.KeypadMinus){
- T4MSC.T4MYOrigin -= 0.1f;
- }
-
-
- if (!PlantObjPreview || currentObjPreview != CurrentObject){
-
- rotationCorrect= 0f;
- if (PlantObjPreview)
- DestroyImmediate (PlantObjPreview);
- PlantObjPreview = Instantiate (CurrentObject, raycastHit.point,Quaternion.identity) as GameObject;
-
- T4MPlantRenderer = PlantObjPreview.GetComponentsInChildren <Renderer>();
- for(int i=0;i<T4MPlantRenderer.Length;i++){
- if (T4MPlantRenderer[i].GetComponent<Renderer>() && T4MPlantRenderer[i].GetComponent<Renderer>().sharedMaterial.HasProperty("_MainTex")){
- Texture Text = T4MPlantRenderer[i].GetComponent<Renderer>().sharedMaterial.GetTexture("_MainTex");
- Shader myShader = Shader.Find("Hidden/PlantPreview");
- Material NewPMat = new Material(myShader);
- T4MPlantRenderer[i].GetComponent<Renderer>().sharedMaterial = NewPMat;
- T4MPlantRenderer[i].GetComponent<Renderer>().sharedMaterial.SetTexture("_MainTex", Text);
- }
- }
- T4MPreviewColl = PlantObjPreview.GetComponentsInChildren <Collider>();
- for(int j=0;j<T4MPreviewColl.Length;j++){
- DestroyImmediate(T4MPreviewColl[j]);
- }
- PlantObjPreview.transform.rotation = Quaternion.FromToRotation(Vector3.up, Vector3.zero);
- PlantObjPreview.name = "previewT4M";
- T4MPlantObjSC removeScript = PlantObjPreview.GetComponent <T4MPlantObjSC>();
- DestroyImmediate(removeScript);
- PlantObjPreview.hideFlags = HideFlags.HideInHierarchy;
- currentObjPreview = CurrentObject;
- }
- PlantObjPreview.transform.position = raycastHit.point + (raycastHit.normal * T4MSC.T4MYOrigin);
- if(T4MSC.T4MSizeVar ==0)
- PlantObjPreview.transform.localScale = new Vector3 (T4MSC.T4MObjSize,T4MSC.T4MObjSize,T4MSC.T4MObjSize);
- if (T4MSC.T4MPlantMod == T4MSC.PlantMode.Follow_Normals){
- if (e.type == EventType.MouseMove){
- PlantObjPreview.transform.up = PlantObjPreview.transform.up+raycastHit.normal;
- plantmodval = 1;
- }
- }else{
- if (plantmodval ==1){
- PlantObjPreview.transform.rotation = Quaternion.FromToRotation(Vector3.up, Vector3.zero);
- plantmodval = 0;
- }
- }
- if (rotationCorrect !=0){
- PlantObjPreview.transform.Rotate(0,rotationCorrect * 100 * 0.02f,0);
- }
- if (e.shift == false && e.control == false){
- T4MPlantRenderer = PlantObjPreview.GetComponentsInChildren <Renderer>();
- if (CheckPlacement !=0){
- for(int i=0;i<T4MPlantRenderer.Length;i++){
- T4MPlantRenderer[i].GetComponent<Renderer>().sharedMaterial.SetColor("_TintColor", new Color(1f,0.5f,0.5f,0.071f));
- }
- }else{
- for(int i=0;i<T4MPlantRenderer.Length;i++){
- T4MPlantRenderer[i].GetComponent<Renderer>().sharedMaterial.SetColor("_TintColor", new Color(0.5f,0.5f,0.5f,0.2f));
- }
- }
- for(int i=0;i<T4MPlantRenderer.Length;i++){
- T4MPlantRenderer[i].GetComponent<Renderer>().enabled = true;
- }
- Handles.color = new Color(0f,1f,0f,0.03f);
- Handles.DrawSolidDisc(raycastHit.point, raycastHit.normal, T4MSC.T4MDistanceMin);
- if (T4MSC.T4MDistanceMin != T4MSC.T4MDistanceMax && T4MSC.T4MRandomSpa){
- Handles.color = new Color(1f,1f,0f,0.05f);
- Handles.DrawSolidDisc(raycastHit.point, raycastHit.normal, T4MSC.T4MDistanceMax);
- Handles.color = new Color(1f,1f,0f,0.5f);
- if(RandomDistance > T4MSC.T4MDistanceMin && RandomDistance < T4MSC.T4MDistanceMax)
- Handles.DrawWireDisc(raycastHit.point, raycastHit.normal, RandomDistance);
- }
- }else if (e.shift == true && e.control == false){
- T4MPlantRenderer = PlantObjPreview.GetComponentsInChildren <Renderer>();
- for(int i=0;i<T4MPlantRenderer.Length;i++){
- T4MPlantRenderer[i].GetComponent<Renderer>().enabled = false;
- }
- Handles.color = new Color(1f,0f,0f,0.1f);
- Handles.DrawSolidDisc(raycastHit.point, raycastHit.normal, T4MSC.T4MDistanceMin);
- }else if (e.shift == false && e.control == true){
- T4MPlantRenderer = PlantObjPreview.GetComponentsInChildren <Renderer>();
- for(int i=0;i<T4MPlantRenderer.Length;i++){
- T4MPlantRenderer[i].GetComponent<Renderer>().enabled = false;
- }
- Handles.color = new Color(1f,1f,0f,0.1f);
- Handles.DrawSolidDisc(raycastHit.point, raycastHit.normal, T4MSC.T4MDistanceMin);
- }
-
- if (ToggleF == false){
- T4MPlantObjGet = GameObject.FindObjectsOfType(typeof(T4MPlantObjSC)) as T4MPlantObjSC[];
- ToggleF = true;
- }
- CheckPlacement = 0;
- Vector3 fix = raycastHit.point;
- if (T4MPlantObjGet !=null && T4MPlantObjGet.Length>0 && ToggleF == true)
- for(int i=0;i<T4MPlantObjGet.Length;i++){
- if (T4MSC.T4MDistanceMin != T4MSC.T4MDistanceMax && T4MSC.T4MRandomSpa){
- if(Vector3.Distance(T4MPlantObjGet[i].transform.position, new Vector3(fix.x, T4MPlantObjGet[i].transform.position.y ,fix.z))< RandomDistance)
- CheckPlacement +=1;
- }else{
- if(Vector3.Distance(T4MPlantObjGet[i].transform.position, new Vector3(fix.x, T4MPlantObjGet[i].transform.position.y ,fix.z))< T4MSC.T4MDistanceMin)
- CheckPlacement +=1;
- }
- }
- }
- if (e.type == EventType.MouseDown && e.alt == false && e.button == 0 && e.shift == false && e.control == false && PlantObjPreview|| e.type == EventType.MouseDrag && e.alt == false && e.button == 0 && e.shift == false && e.control == false && PlantObjPreview){
- if (CurrentObject){
-
- if (CheckPlacement == 0)
- {
- PlantObj = null;
- PlantObj = PrefabUtility.InstantiatePrefab(CurrentObject) as GameObject;
- if (!PlantObj.GetComponent<T4MPlantObjSC>())
- PlantObj.AddComponent <T4MPlantObjSC>();
- PlantObj.transform.position = PlantObjPreview.transform.position;
- PlantObj.transform.rotation = PlantObjPreview.transform.rotation;
- PlantObj.transform.localScale = PlantObjPreview.transform.localScale;
-
-
- LodObj = PlantObj.GetComponentsInChildren <Renderer>();
-
- for (int t=0;t<LodObj.Length;t++){
- if(T4MSC.ViewDistance[T4MSC.T4MPlantSel]==T4MSC.ViewD.Close)
- LodObj[t].gameObject.layer = 26;
- else if(T4MSC.ViewDistance[T4MSC.T4MPlantSel]==T4MSC.ViewD.Middle)
- LodObj[t].gameObject.layer = 27;
- else if(T4MSC.ViewDistance[T4MSC.T4MPlantSel]==T4MSC.ViewD.Far)
- LodObj[t].gameObject.layer = 28;
- else if(T4MSC.ViewDistance[T4MSC.T4MPlantSel]==T4MSC.ViewD.BackGround)
- LodObj[t].gameObject.layer = 29;
- }
-
- ToggleF =false;
- GameObject Group = GameObject.Find(T4MSC.T4MGroupName);
- if (!Group){
- Group = new GameObject (T4MSC.T4MGroupName);
- }
- PlantObj.transform.parent = Group.transform;
-
- if (PlantObj.GetComponent<T4MLodObjSC>()){
- T4MSC.LodActivate = false;
- PlantObj.isStatic = T4MSC.T4MStaticObj;
- }else if (PlantObj.GetComponent<T4MBillBObjSC>()){
- PlantObj.isStatic = false;
- T4MSC.billActivate = false;
- }else PlantObj.isStatic = T4MSC.T4MStaticObj;
-
-
- if (T4MSC.T4MCreateColl && !PlantObj.GetComponent<Collider>())
- PlantObj.AddComponent<MeshCollider>();
- if(T4MSC.T4MRandomSpa)
- RandomDist();
- if(T4MSC.T4MRandomRot)
- RandomRot();
- if(T4MSC.T4MSizeVar !=0)
- RandomSize();
- if (T4MSC.T4MselectObj >1)
- RandomObject ();
- if(EditorApplication.isPlaying == true)
- InPlayingAdd(CurrentObject as GameObject, Group.name as string);
-
- }
- }
- }else if(e.type == EventType.MouseDown && e.alt == false && e.button == 0 && e.shift == true && e.control == false && PlantObjPreview || e.type == EventType.MouseDrag && e.alt == false && e.button == 0 && e.shift == true && e.control == false && PlantObjPreview){
- if (ToggleF == false){
- T4MPlantObjGet = GameObject.FindObjectsOfType(typeof(T4MPlantObjSC)) as T4MPlantObjSC[];
- ToggleF =true;
- }
- for(int i=0;i<T4MPlantObjGet.Length;i++){
- Vector3 fix = raycastHit.point;
- if(Vector3.Distance(T4MPlantObjGet[i].transform.position, new Vector3(fix.x, T4MPlantObjGet[i].transform.position.y ,fix.z))< T4MSC.T4MDistanceMin){
- if(EditorApplication.isPlaying == true)
- onPlayModeDestroyed.Add(T4MPlantObjGet[i].gameObject.transform.position);
-
- if (T4MPlantObjGet[i].GetComponent<T4MBillBObjSC>())
- T4MSC.billActivate = false;
- else if (T4MPlantObjGet[i].GetComponent<T4MLodObjSC>())
- T4MSC.LodActivate = false;
-
- DestroyImmediate (T4MPlantObjGet[i].gameObject);
- ToggleF = false;
- }
- }
- }else if(e.type == EventType.MouseDown && e.alt == false && e.button == 0 && e.shift == false && e.control == true && PlantObjPreview || e.type == EventType.MouseDrag && e.alt == false && e.button == 0 && e.shift == false && e.control == true && PlantObjPreview){
-
- if (ToggleF == false){
- T4MPlantObjGet = GameObject.FindObjectsOfType(typeof(T4MPlantObjSC)) as T4MPlantObjSC[];
-
- ToggleF =true;
- }
- for(int i=0;i<T4MPlantObjGet.Length;i++){
- Vector3 fix = raycastHit.point;
- if(Vector3.Distance(T4MPlantObjGet[i].transform.position, new Vector3(fix.x, T4MPlantObjGet[i].transform.position.y ,fix.z))< T4MSC.T4MDistanceMin){
- Quaternion rot = T4MPlantObjGet[i].gameObject.transform.rotation;
- Vector3 pos = T4MPlantObjGet[i].gameObject.transform.position;
- Vector3 scale = T4MPlantObjGet[i].gameObject.transform.localScale;
- int lay = T4MPlantObjGet[i].gameObject.layer;
- bool Static = T4MPlantObjGet[i].gameObject.isStatic;
- int LODBILL =0;
- if (T4MPlantObjGet[i].gameObject.GetComponent<T4MLodObjSC>())
- LODBILL =1;
- else if (T4MPlantObjGet[i].gameObject.GetComponent<T4MBillBObjSC>())
- LODBILL =2;
-
- DestroyImmediate (T4MPlantObjGet[i].gameObject);
- ToggleF = false;
- PlantObj = null;
- PlantObj = PrefabUtility.InstantiatePrefab(CurrentObject) as GameObject;
- if (!PlantObj.GetComponent<T4MPlantObjSC>())
- PlantObj.AddComponent <T4MPlantObjSC>();
-
- PlantObj.transform.position = pos;
- PlantObj.transform.rotation = rot;
- PlantObj.transform.localScale = scale;
-
- LodObj = PlantObj.GetComponentsInChildren <Renderer>();
- for (int t=0;t<LodObj.Length;t++){
- LodObj[t].gameObject.layer = lay;
- }
-
- if (LODBILL==1)
- T4MSC.LodActivate = false;
- else if (LODBILL==2)
- T4MSC.billActivate = false;
-
- if (PlantObj.GetComponent<T4MLodObjSC>()){
- T4MSC.LodActivate = false;
- PlantObj.isStatic = Static;
- }else if (PlantObj.GetComponent<T4MBillBObjSC>()){
- PlantObj.isStatic = false;
- T4MSC.billActivate = false;
- }else PlantObj.isStatic = Static;
-
- GameObject Group = GameObject.Find(T4MSC.T4MGroupName);
- if (!Group){
- Group = new GameObject (T4MSC.T4MGroupName);
- }
- PlantObj.transform.parent = Group.transform;
- }
- }
- }else if (e.type == EventType.MouseUp && ToggleF == true){
- ToggleF =false;
- }
- }
- }
- }
-
- void RandomRot(){
- RandomRotation = new Vector3(Random.Range (-T4MSC.T4MrandX*45, T4MSC.T4MrandX*45),Random.Range (-T4MSC.T4MrandY*180, T4MSC.T4MrandY*180),Random.Range (-T4MSC.T4MrandZ*45, T4MSC.T4MrandZ*45));
- if(PlantObjPreview){
- PlantObjPreview.transform.rotation = Quaternion.FromToRotation(Vector3.up, Vector3.zero);
- PlantObjPreview.transform.Rotate(RandomRotation);
- }
- }
-
- void RandomObject (){
- int SelObj = Random.Range (1, T4MSC.T4MselectObj+1);
- int MatchSel=0;
- for (int i=0;i<T4MSC.T4MBoolObj.Length;i++){
- if (T4MSC.T4MObjectPlant[i]){
- if (T4MSC.T4MBoolObj[i] == true)
- MatchSel +=1;
- }
- if (MatchSel == SelObj){
- T4MSC.T4MPlantSel= i;
- return;
- }
- }
- }
-
- void RandomSize(){
-
- if(PlantObjPreview){
- float Var = Random.Range (-T4MSC.T4MSizeVar, T4MSC.T4MSizeVar);
-
-
- float variation = T4MSC.T4MObjSize*Var;
-
-
-
-
- PlantObjPreview.transform.transform.localScale = new Vector3(T4MSC.T4MObjSize+variation,T4MSC.T4MObjSize+variation,T4MSC.T4MObjSize+variation);
- }
- }
-
- void RandomDist(){
- RandomDistance = Random.Range(T4MSC.T4MDistanceMin, T4MSC.T4MDistanceMax);
- }
-
-
-
-
- void InPlayingAdd(GameObject CurrentObject, string Grp){
- onPlayModeInstanceFolder.Add(AssetDatabase.GetAssetPath (CurrentObject) as string);
- onPlayModeInstanceGroup.Add(Grp as string);
- onPlayModeInstancePos.Add(PlantObj.transform.position);
- onPlayModeInstanceRot.Add(PlantObj.transform.rotation);
- onPlayModeInstanceSize.Add(PlantObj.transform.localScale);
-
- }
-
- void SaveInPlayingMode(){
-
- string[] F = onPlayModeInstanceFolder.ToArray(typeof(string)) as string[];
- string[] G = onPlayModeInstanceGroup.ToArray(typeof(string)) as string[];
- Vector3[] P = onPlayModeInstancePos.ToArray(typeof(Vector3)) as Vector3[];
- Quaternion[]R = onPlayModeInstanceRot.ToArray(typeof(Quaternion)) as Quaternion[];
- Vector3[] S = onPlayModeInstanceSize.ToArray(typeof(Vector3)) as Vector3[];
- Vector3[] D = onPlayModeDestroyed.ToArray(typeof(Vector3)) as Vector3[];
-
- for (int i=0;i<F.Length;i++){
- GameObject test = PrefabUtility.InstantiatePrefab((GameObject)AssetDatabase.LoadAssetAtPath(F[i], typeof(GameObject))) as GameObject;
- test.transform.position = P[i];
- test.transform.rotation = R[i];
- test.transform.localScale = S[i];
- if (!test.GetComponent<T4MPlantObjSC>())
- test.AddComponent <T4MPlantObjSC>();
- GameObject Group = GameObject.Find(G[i]);
- if (!Group){
- Group = new GameObject (G[i]);
- }
- test.transform.parent = Group.transform;
- }
- T4MPlantObjSC[] T4MPlantToErase = GameObject.FindObjectsOfType(typeof(T4MPlantObjSC)) as T4MPlantObjSC[];
- for (int j=0;j<D.Length;j++){
- for (int k=0;k<T4MPlantToErase.Length;k++){
- if (T4MPlantToErase[k].gameObject.transform.position == D[j])
- DestroyImmediate(T4MPlantToErase[k].gameObject);
- T4MPlantToErase = GameObject.FindObjectsOfType(typeof(T4MPlantObjSC)) as T4MPlantObjSC[];
-
- }
- }
- onPlayModeInstanceFolder = new ArrayList();
- onPlayModeInstanceGroup = new ArrayList();
- onPlayModeInstancePos = new ArrayList();
- onPlayModeInstanceRot = new ArrayList();
- onPlayModeInstanceSize = new ArrayList();
- onPlayModeDestroyed = new ArrayList();
- }
- }
|