private Mesh GetMeshFromObject(Object obj) { SplineMesh user = (SplineMesh)target; if (!(obj is GameObject)) { return(null); } GameObject gameObj = (GameObject)obj; MeshFilter filter = gameObj.GetComponent <MeshFilter>(); Mesh returnMesh = null; if (filter != null && filter.sharedMesh != null) { returnMesh = filter.sharedMesh; } MeshRenderer rend = user.GetComponent <MeshRenderer>(); if (rend == null) { return(returnMesh); } MeshRenderer meshRend = gameObj.GetComponent <MeshRenderer>(); if (meshRend == null) { return(returnMesh); } bool found = false; for (int i = 0; i < meshRend.sharedMaterials.Length; i++) { for (int j = 0; j < rend.sharedMaterials.Length; j++) { if (meshRend.sharedMaterials[i] == rend.sharedMaterials[j]) { found = true; break; } } } if (!found) { if (EditorUtility.DisplayDialog("New Materials", "The added object has one or more materials which are not refrenced by the renderer. Would you like to add them?", "Yes", "No")) { if (rend.sharedMaterial == AssetDatabase.GetBuiltinExtraResource <Material>("Default-Diffuse.mat")) { if (EditorUtility.DisplayDialog("Replace Material", "The renderer is using the default material. Replace it?", "Yes", "No")) { rend.sharedMaterials = new Material[0]; } } for (int i = 0; i < meshRend.sharedMaterials.Length; i++) { AddMaterial(rend, meshRend.sharedMaterials[i]); } } } return(returnMesh); }
public void Update() { if (mFinished) { return; } if (ConnectionPathMarker == null || ConnectionPathOrigin == null || PathAlterAction == MarkerAlterAction.None) { Finish(); return; } if (Vector3.Distance(ConnectionPathMarker.worlditem.tr.position, ConnectionPathOrigin.worlditem.tr.position) > Globals.PathOriginTriggerRadius) { Finish(); return; } OriginDistanceToPlayer = Vector3.Distance(Player.Local.Position, ConnectionPathOrigin.worlditem.tr.position); FocusOffset = Player.Local.Focus.FocusOffset(ConnectionPathOrigin.worlditem.tr.position); if (!IsActive) { spline.enabled = false; PathMesh.enabled = false; PathMesh.GetComponent <Renderer>().enabled = false; PathMesh.updateMode = SplineMesh.UpdateMode.DontUpdate; return; } spline.enabled = true; PathMesh.enabled = true; PathMesh.GetComponent <Renderer>().enabled = true; PathMesh.updateMode = SplineMesh.UpdateMode.EveryFrame; SplineNode1.position = ConnectionPathMarker.worlditem.tr.position; SplineNode2.position = ConnectionPathOrigin.worlditem.tr.position; switch (PathAlterAction) { case MarkerAlterAction.None: default: break; case MarkerAlterAction.AppendToPath: CurrentColor = Color.blue; break; case MarkerAlterAction.CreateBranch: CurrentColor = Color.green; break; case MarkerAlterAction.CreatePath: CurrentColor = Color.red; break; case MarkerAlterAction.CreatePathAndBranch: CurrentColor = Color.yellow; break; } PathMesh.GetComponent <Renderer>().material.SetColor("_TintColor", CurrentColor); }