private void OnEnable() { TubeMesh = (TubeMesh)target; TubeMesh.SPData = TubeMesh.gameObject.transform.GetComponent <SplinePlus>().sPData; if (TubeMesh.MeshHolder == null) { var meshHolder = SplinePlusAPI.AddMeshHolder(TubeMesh.SPData, "TubeMesh"); TubeMesh.MeshHolder = meshHolder; TubeMesh.MeshRenderer = meshHolder.GetComponent <MeshRenderer>(); TubeMesh.Mesh = meshHolder.GetComponent <MeshFilter>(); } if (Delete == null) { Delete = new GUIContent((Texture2D)EditorGUIUtility.Load(SplinePlusEditor.FindAssetPath("Delete.png"))); } if (TubeMesh.Material == null) { TubeMesh.Material = (Material)EditorGUIUtility.Load(SplinePlusEditor.FindAssetPath("Base.mat")); if (TubeMesh.Material == null) { Debug.Log("mat null"); } } TubeMesh.SPData.MeshModifier = TubeMesh; TubeMesh.DrawMesh(); SplineCreationClass.Update_Spline += Update_Spline; }
private void OnEnable() { TubeMesh = (TubeMesh)target; if (TubeMeshBanner == null) { TubeMeshBanner = new GUIContent((Texture2D)EditorGUIUtility.Load("Assets/ElseForty/Media/TubeMeshBanner.png")); } if (TubeMesh.gameObject.GetComponent <MeshRenderer>() == null) { TubeMesh.gameObject.AddComponent <MeshRenderer>(); } TubeMesh.MeshRenderer = TubeMesh.gameObject.GetComponent <MeshRenderer>(); if (TubeMesh.gameObject.GetComponent <MeshFilter>() == null) { TubeMesh.gameObject.AddComponent <MeshFilter>(); } TubeMesh.Mesh = TubeMesh.gameObject.GetComponent <MeshFilter>(); if (TubeMesh.Material == null) { TubeMesh.Material = (Material)EditorGUIUtility.Load("Assets/ElseForty/Assets/Materials/Base.mat"); } if (TubeMesh.SplinePlus == null) { TubeMesh.SplinePlus = TubeMesh.gameObject.GetComponent <SplinePlus>(); } TubeMesh.SplinePlus.SPData.ObjectType = SPType.TubeMesh; TubeMesh.DrawMeshOnEachBranch(); }
public static void test(GameObject gameobject) { MeshFilter filter = gameobject.AddComponent <MeshFilter>(); List <TubePoint> points = new List <TubePoint>(); points.Add(new TubePoint(Vector3.zero, Vector3.right, 1)); points.Add(new TubePoint(new Vector3(1f, 0.25f, 0f), new Vector3(1f, 0, 0), 1)); points.Add(new TubePoint(new Vector3(2f, -0.25f, 0f), new Vector3(1f, 0, 0), 1)); //points.Add(new TubePoint(new Vector3(3f, 0f, 0f), new Vector3(1f, 0, 0), 1)); TubeMesh.generateTubes(filter.mesh, points, 8); MeshRenderer renderer = gameobject.AddComponent <MeshRenderer>(); renderer.receiveShadows = false; renderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; renderer.material.color = Color.red; }
private void OnTransit(Transit transit, Transit.TransitState state, float progress) { if (state == Transit.TransitState.Entering && !tubeAdded) { tubeAdded = true; GameObject tube = new GameObject("tube"); MeshFilter filter = tube.AddComponent <MeshFilter>(); TubeMesh.generateTube(filter.mesh); MeshRenderer renderer = tube.AddComponent <MeshRenderer>(); renderer.receiveShadows = false; renderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; if (TubeMaterial == null) { renderer.material.color = Color.red; } else { renderer.material = TubeMaterial; } /* * tube = GameObject.CreatePrimitive(PrimitiveType.Mes); * tube.GetComponent<MeshRenderer>().material.color = Color.red; * scale.x = DefaultDiameter; * scale.z = DefaultDiameter;*/ // position tube between transit's enter and exit positions // Assumes tube is oriented along y dimension with ends at y=0 and y=1. Vector3 offset = transit.ExitPosition - transit.EnterPosition; Vector3 scale = new Vector3(1f, offset.magnitude, 1f); Transform t = tube.transform; t.position = transit.EnterPosition; t.up = offset; t.localScale = scale; t.parent = gameObject.transform; } else if (state == Transit.TransitState.Finished) { // will be destroyed automatically at end } }
private void OnTransit(Transit transit, Transit.TransitState state, float progress) { if (state == Transit.TransitState.Entering && !tubeAdded) { tubeAdded = true; GameObject tube = new GameObject("tube"); MeshFilter filter = tube.AddComponent <MeshFilter>(); List <TubePoint> points = new List <TubePoint>(); CubicBezier curve = transit.Curve; for (float t = 0f; t < 1f; t += 0.2f) { points.Add(new TubePoint(curve.position(t), curve.derivative(t), calcRadius(t))); } points.Add(new TubePoint(curve.position(1), curve.derivative(1), calcRadius(1))); /*foreach (TubePoint p in points) { * Debug.Log(p.position + " " + p.derivative + " " + p.radius); * }*/ TubeMesh.generateTubes(filter.mesh, points, 8); MeshRenderer renderer = tube.AddComponent <MeshRenderer>(); renderer.receiveShadows = false; renderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; if (TubeMaterial == null) { renderer.material.color = Color.red; } else { renderer.material = TubeMaterial; } tube.transform.parent = gameObject.transform; } else if (state == Transit.TransitState.Finished) { // will be destroyed automatically at end } }