예제 #1
0
    public void AddGizmoArea(Gizmo gizmo)
    {
        if (!(gizmo is GizmoArea))
        {
            return;
        }
        GizmoArea gizmoArea = (GizmoArea)gizmo;

        GameObject gizmoObject = new GameObject("area");

        gizmoObject.transform.SetParent(gizmoWrapper.transform);

        AreaBehaviour areaBehaviour = gizmoObject.AddComponent <AreaBehaviour>();

        areaBehaviour.Init(geoCamera);

        FaceRefer face   = gizmoArea.face;
        Vector3   center = geometry.Center();

        Vector3[] vectors = new Vector3[face.ids.Length];
        for (int i = 0; i < face.ids.Length; i++)
        {
            vectors[i] = geometry.UnitVector(face.ids[i]);
        }
        float area = geometry.FaceArea(face.ids);

        areaBehaviour.SetData(center, vectors, area);

        gizmoMap.Add(gizmoArea, areaBehaviour);
    }
예제 #2
0
    public void RemoveGizmoArea(Gizmo gizmo)
    {
        if (!(gizmo is GizmoArea))
        {
            return;
        }
        GizmoArea gizmoArea = (GizmoArea)gizmo;

        AreaBehaviour areaBehaviour = (AreaBehaviour)gizmoMap[gizmoArea];

        Destroy(areaBehaviour.gameObject);

        gizmoMap.Remove(gizmoArea);
    }
예제 #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);


        GizmoArea gizmoArea = new GizmoArea(face);

        gizmos = new Gizmo[] { gizmoArea };
    }
예제 #4
0
    public void UpdateGizmoArea(Gizmo gizmo)
    {
        if (!(gizmo is GizmoArea))
        {
            return;
        }
        GizmoArea gizmoArea = (GizmoArea)gizmo;

        AreaBehaviour areaBehaviour = (AreaBehaviour)gizmoMap[gizmoArea];

        FaceRefer face   = gizmoArea.face;
        Vector3   center = geometry.Center();

        Vector3[] vectors = new Vector3[face.ids.Length];
        for (int i = 0; i < face.ids.Length; i++)
        {
            vectors[i] = geometry.UnitVector(face.ids[i]);
        }
        float area = geometry.FaceArea(face.ids);

        areaBehaviour.SetData(center, vectors, area);
    }