public void CreateMeshes() { Clear(); int i = 0; foreach (CubicBezierCurve curve in spline.GetCurves()) { GameObject go = new GameObject("SplineMesh" + i++, typeof(MeshFilter), typeof(MeshRenderer), typeof(MeshBender), typeof(MeshCollider)); go.transform.parent = transform; go.transform.localRotation = Quaternion.identity; go.transform.localPosition = Vector3.zero; go.transform.localScale = Vector3.one; //go.hideFlags = HideFlags.NotEditable; go.GetComponent <MeshRenderer>().material = material; MeshBender mb = go.GetComponent <MeshBender>(); mb.SetSourceMesh(mesh, false); mb.SetRotation(Quaternion.Euler(rotation), false); mb.SetCurve(curve, false); mb.SetStartScale(scale, false); mb.SetEndScale(scale); meshes.Add(go); } }
public void CreateMeshes() { foreach (GameObject go in meshes) { if (gameObject != null) { if (Application.isPlaying) { Destroy(go); } else { DestroyImmediate(go); } } } meshes.Clear(); float currentLength = 0; int i = 0; foreach (CubicBezierCurve curve in spline.GetCurves()) { GameObject go = new GameObject("SplineMesh" + i++, typeof(MeshFilter), typeof(MeshRenderer), typeof(MeshBender), typeof(MeshCollider)); go.transform.parent = transform; go.transform.localRotation = Quaternion.identity; go.transform.localPosition = Vector3.zero; go.transform.localScale = Vector3.one; //go.hideFlags = HideFlags.NotEditable; go.GetComponent <MeshRenderer>().material = material; MeshBender mb = go.GetComponent <MeshBender>(); mb.SetSourceMesh(mesh, false); mb.SetRotation(Quaternion.Euler(rotation), false); mb.SetCurve(curve, false); float startRate = currentLength / spline.Length; currentLength += mb.curve.Length; float endRate = currentLength / spline.Length; mb.SetStartScale(startScale + (endScale - startScale) * startRate, false); mb.SetEndScale(startScale + (endScale - startScale) * endRate, false); mb.SetStartRoll(startRoll, false); mb.SetEndRoll(endRoll); meshes.Add(go); } }
protected override void Create() { if (Mesh == null) { return; } int index = meshChildStartIndex; foreach (CubicBezierCurve curve in spline.GetCurves()) { Transform child = null; if (index >= transform.childCount) { GameObject go = new GameObject("SplineMesh" + (index - meshChildStartIndex), typeof(MeshFilter), typeof(MeshRenderer), typeof(MeshBender)); go.GetComponent <MeshRenderer>().material = Material; go.layer = transform.gameObject.layer; child = go.transform; child.transform.parent = transform; } else { child = transform.GetChild(index); } child.localRotation = Quaternion.identity; child.localPosition = Vector3.zero; child.transform.localScale = Vector3.one; MeshBender mb = child.GetComponent <MeshBender>(); mb.SetSourceMesh(Mesh, false); //mb.SetRotation(Quaternion.Euler(rotation), false); mb.SetCurve(curve, false); mb.SetStartScale(Scale, false); mb.SetEndScale(Scale); index++; } //delete unused int startIndex = transform.childCount - 1; for (int j = startIndex; j >= index; j--) { DestroyImmediate(transform.GetChild(j).gameObject); } }
private void Init() { //Block of code came from Spline asset string generatedName = "generated by " + GetType().Name; var generatedTranform = transform.Find(generatedName); generatedModelGameObject = generatedTranform != null ? generatedTranform.gameObject : UOUtility.Create(generatedName, gameObject, typeof(MeshFilter), typeof(MeshRenderer), typeof(MeshBender)); generatedModelGameObject.GetComponent <MeshRenderer>().material = material; meshBender = generatedModelGameObject.GetComponent <MeshBender>(); spline = GetComponent <Spline>(); meshBender.Source = SourceMesh.Build(mesh) .Rotate(Quaternion.Euler(rotation)) .Scale(scale); meshBender.Mode = MeshBender.FillingMode.StretchToInterval; meshBender.SetInterval(spline, 0, 0.01f); }
public void CreateMeshes() { foreach (GameObject go in meshes) { if (gameObject != null) { if (Application.isPlaying) { Destroy(go); } else { DestroyImmediate(go); } } } int i = 0; foreach (CubicBezierCurve curve in spline.GetCurves()) { GameObject go = new GameObject("SplineMesh" + i++, typeof(MeshFilter), typeof(MeshRenderer), typeof(MeshBender), typeof(MeshCollider)); go.transform.parent = transform; go.transform.localRotation = Quaternion.identity; go.transform.localPosition = Vector3.zero; go.transform.localScale = Vector3.one; //go.hideFlags = HideFlags.NotEditable; go.GetComponent <MeshRenderer>().material = material; MeshBender mb = go.GetComponent <MeshBender>(); mb.SetSourceMesh(mesh, false); mb.SetRotation(Quaternion.Euler(rotation), false); mb.SetTranslation(new Vector3(0, YOffset, ZOffset), false); mb.SetCurve(curve, false); mb.SetStartScale(scale, false); mb.SetEndScale(scale); meshes.Add(go); } }
private void Init() { if (m_Spline != null && m_Mesh != null && m_Material != null) { string generatedName = "Mesh"; var generatedTranform = transform.Find(generatedName); m_Generated = generatedTranform != null ? generatedTranform.gameObject : UOUtility.Create(generatedName, gameObject, typeof(MeshFilter), typeof(MeshRenderer), typeof(MeshBender)); m_Generated.GetComponent <MeshRenderer>().material = m_Material; meshBender = m_Generated.GetComponent <MeshBender>(); // m_Spline = GetComponent<Spline>(); meshBender.Source = SourceMesh.Build(m_Mesh) .Rotate(Quaternion.Euler(m_Rotation)) .Scale(m_Scale); meshBender.Mode = MeshBender.FillingMode.Once; meshBender.SetInterval(m_Spline, 0); } }