예제 #1
0
        protected virtual void OnSceneGUI()
        {
            var targ = this.target as VisualAspect;

            if (targ == null)
            {
                return;
            }
            if (!targ.enabled)
            {
                return;
            }

            VisualAspectInspector.Material.SetColor("_colorSolid", Color.black);
            VisualAspectInspector.Material.SetFloat("_colorAlpha", 0.4f);

            Matrix4x4 mat = Matrix4x4.TRS(targ.transform.position, Quaternion.identity, Vector3.one * 0.1f);

            for (int i = 0; i < VisualAspectInspector.Material.passCount; ++i)
            {
                VisualAspectInspector.Material.SetPass(i);
                Graphics.DrawMeshNow(PrimitiveUtil.GetMesh(PrimitiveType.Sphere), mat);
            }

            VisualAspectInspector.Material.SetColor("_colorSolid", targ.AspectColor);
            VisualAspectInspector.Material.SetFloat("_colorAlpha", 0.8f);

            mat = Matrix4x4.TRS(targ.transform.position, Quaternion.identity, Vector3.one * 0.08f);

            for (int i = 0; i < VisualAspectInspector.Material.passCount; ++i)
            {
                VisualAspectInspector.Material.SetPass(i);
                Graphics.DrawMeshNow(PrimitiveUtil.GetMesh(PrimitiveType.Sphere), mat);
            }
        }
        static void CreateQuadAsChild()
        {
            var go = PrimitiveUtil.CreatePrimitive(PrimitiveType.Quad);

            go.transform.parent = Selection.activeTransform;
            go.transform.ZeroOut(false);
        }
        static void CreatePlaneTriggerAsChild()
        {
            var go = PrimitiveUtil.CreatePrimitive(PrimitiveType.Plane, true, true);

            go.transform.parent = Selection.activeTransform;
            go.transform.ZeroOut(false);
        }
        static void CreateCubeTriggerAsChild()
        {
            var go = PrimitiveUtil.CreatePrimitive(PrimitiveType.Cube, true, true);

            go.GetComponent <Collider>().isTrigger = true;
            go.transform.parent = Selection.activeTransform;
            go.transform.ZeroOut(false);
        }
예제 #5
0
    public void Build()
    {
        var renderer = GetComponent <MeshRenderer> ();
        var filter   = GetComponent <MeshFilter> ();


        var cubeMesh = PrimitiveUtil.GetPrimitiveMesh(PrimitiveType.Cube);

        var vertexList = new List <Vector3>(cubeMesh.vertices);
        var indexList  = new List <int>(cubeMesh.triangles);

        for (var i = 0; i < detailLevel; i++)
        {
            GeometryUtil.Subdivide(vertexList, indexList, true);
        }

        // compute UV coords
        var uvList = new List <Vector2> ();

        for (var i = 0; i < vertexList.Count; i++)
        {
            //var v = vertexList [i] = Vector3.Normalize (vertexList [i]);
            uvList.Add(V3toUV(vertexList[i]));
        }

        var vertices = vertexList.ToArray();

        //FlipWinding (indexList);

        var mesh = filter.mesh = new Mesh();

        mesh.vertices = vertices;
        mesh.uv       = uvList.ToArray();
        mesh.SetTriangles(indexList, 0, true);

        mesh.RecalculateNormals();
        mesh.RecalculateTangents();
    }
예제 #6
0
        private static void DrawIcon(VisualAspect targ)
        {
            SensorRenderUtil.AspectMaterial.SetColor("_colorSolid", Color.black);
            SensorRenderUtil.AspectMaterial.SetFloat("_colorAlpha", 0.4f);

            Matrix4x4 mat = Matrix4x4.TRS(targ.transform.position, Quaternion.identity, Vector3.one * 0.1f);

            for (int i = 0; i < SensorRenderUtil.AspectMaterial.passCount; ++i)
            {
                SensorRenderUtil.AspectMaterial.SetPass(i);
                Graphics.DrawMeshNow(PrimitiveUtil.GetMesh(PrimitiveType.Sphere), mat);
            }

            SensorRenderUtil.AspectMaterial.SetColor("_colorSolid", targ.AspectColor);
            SensorRenderUtil.AspectMaterial.SetFloat("_colorAlpha", 0.8f);

            mat = Matrix4x4.TRS(targ.transform.position, Quaternion.identity, Vector3.one * 0.08f);

            for (int i = 0; i < SensorRenderUtil.AspectMaterial.passCount; ++i)
            {
                SensorRenderUtil.AspectMaterial.SetPass(i);
                Graphics.DrawMeshNow(PrimitiveUtil.GetMesh(PrimitiveType.Sphere), mat);
            }
        }