コード例 #1
0
    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;
    }
コード例 #2
0
    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();
    }
コード例 #3
0
    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;
    }
コード例 #4
0
    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
        }
    }
コード例 #5
0
    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
        }
    }