Пример #1
0
    public void RemoveGizmoVolume(Gizmo gizmo)
    {
        if (!(gizmo is GizmoVolume))
        {
            return;
        }
        GizmoVolume gizmoVolume = (GizmoVolume)gizmo;

        VolumeBehaviour volumeBehaviour = (VolumeBehaviour)gizmoMap[gizmoVolume];

        Destroy(volumeBehaviour.gameObject);

        gizmoMap.Remove(gizmoVolume);
    }
Пример #2
0
    public void AddGizmoVolume(Gizmo gizmo)
    {
        if (!(gizmo is GizmoVolume))
        {
            return;
        }
        GizmoVolume gizmoVolume = (GizmoVolume)gizmo;

        GameObject gizmoObject = new GameObject("volume");

        gizmoObject.transform.SetParent(gizmoWrapper.transform);

        VolumeBehaviour volumeBehaviour = gizmoObject.AddComponent <VolumeBehaviour>();

        volumeBehaviour.Init(geoCamera);

        FaceRefer face = gizmoVolume.face;

        if (face.ids.Length < 3)
        {
            return;
        }
        Vector3 center     = geometry.Center();
        Vector3 v1         = geometry.UnitVector(face.ids[0]);
        Vector3 v2         = geometry.UnitVector(face.ids[1]);
        Vector3 v3         = geometry.UnitVector(face.ids[2]);
        float   radius     = v3.z - v2.z;
        int     pointCount = 4;

        Vector3[] vectors     = new Vector3[pointCount];
        float     angledegree = 360.0f;
        float     angleRad    = Mathf.Deg2Rad * angledegree;
        float     angleCur    = angleRad;
        float     angledelta  = angleRad / pointCount;

        for (int i = 0; i < pointCount; i++)
        {
            float cosA = Mathf.Cos(angleCur);
            float sinA = Mathf.Sin(angleCur);
            vectors[i] = new Vector3(radius * cosA, v1.y, radius * sinA);
            angleCur  -= angledelta;
        }

        string area = geometry.Volume(face.ids);

        volumeBehaviour.SetData(center, vectors, area);

        gizmoMap.Add(gizmoVolume, volumeBehaviour);
    }
Пример #3
0
    public override void InitWithGeometry(Geometry geometry)
    {
        int count = face.ids.Length;

        VertexUnit[] vertexUnits = new VertexUnit[count];
        for (int i = 0; i < count; i++)
        {
            vertexUnits[i] = geometry.VertexUnit(face.ids[i]);
        }

        dependencies = new List <VertexUnit>(vertexUnits);

        GizmoVolume gizmoVolume = new GizmoVolume(face);

        gizmos = new Gizmo[] { gizmoVolume };
    }