コード例 #1
0
        // Use this for initialization
        private void Start()
        {
            volumeLineRenderer = GetComponentInChildren <LineRenderer>();
            TMPro         = GetComponentInChildren <TextMeshPro>();
            myAudioSource = GetComponent <AudioSource>();

            xLen          = .1f;
            controllPoint = GeoObjConstruction.iPoint(this.transform.position);
            prismBase.Add(controllPoint);
            prismBase.Add(GeoObjConstruction.dPoint(controllPoint.Position3 + Vector3.right * (sideLength1 - 2 * xLen)));
            prismBase.Add(GeoObjConstruction.dPoint(controllPoint.Position3 + Vector3.right * (sideLength1 - 2 * xLen) + Vector3.forward * (sideLength2 - 2 * xLen)));
            prismBase.Add(GeoObjConstruction.dPoint(controllPoint.Position3 + Vector3.forward * (sideLength2 - 2 * xLen)));

            List <AbstractLineSegment> prismBaseLines = new List <AbstractLineSegment>();

            for (int i = 0; i < 3; i++)
            {
                prismBaseLines.Add(GeoObjConstruction.dLineSegment(prismBase[i], prismBase[i + 1]));
            }
            prismBaseLines.Add(GeoObjConstruction.dLineSegment(prismBase[prismBase.Count - 1], prismBase[0]));

            prismBasePoly = GeoObjConstruction.dPolygon(prismBaseLines, prismBase);
            prism         = GeoObjConstruction.dPrism(prismBasePoly, prismBasePoly.center + Vector3.up * xLen);
            prismTopPoly  = prism.bases[1];

            cutoutRectangle.Add(prismBase[0]);
            cutoutRectangle.Add(GeoObjConstruction.dPoint(prismBase[0].Position3 + Vector3.back * xLen));
            cutoutRectangle.Add(GeoObjConstruction.dPoint(prismBase[1].Position3 + Vector3.back * xLen));
            cutoutRectangle.Add(prismBase[1]);
            cutoutRectangle.Add(GeoObjConstruction.dPoint(prismBase[1].Position3 + Vector3.right * xLen));
            cutoutRectangle.Add(GeoObjConstruction.dPoint(prismBase[2].Position3 + Vector3.right * xLen));
            cutoutRectangle.Add(prismBase[2]);
            cutoutRectangle.Add(GeoObjConstruction.dPoint(prismBase[2].Position3 + Vector3.forward * xLen));
            cutoutRectangle.Add(GeoObjConstruction.dPoint(prismBase[3].Position3 + Vector3.forward * xLen));
            cutoutRectangle.Add(prismBase[3]);
            cutoutRectangle.Add(GeoObjConstruction.dPoint(prismBase[3].Position3 + Vector3.left * xLen));
            cutoutRectangle.Add(GeoObjConstruction.dPoint(prismBase[0].Position3 + Vector3.left * xLen));

            List <AbstractLineSegment> cutoutLines = new List <AbstractLineSegment>();

            for (int i = 0; i < cutoutRectangle.Count - 1; i++)
            {
                cutoutLines.Add(GeoObjConstruction.dLineSegment(cutoutRectangle[i], cutoutRectangle[i + 1]));
            }
            cutoutLines.Add(GeoObjConstruction.dLineSegment(cutoutRectangle[0], cutoutRectangle[cutoutRectangle.Count - 1]));

            cutoutRectanglePoly = GeoObjConstruction.dPolygon(cutoutLines, cutoutRectangle);

            foreach (MasterGeoObj mgo in prism.transform.parent.GetComponentsInChildren <MasterGeoObj>())
            {
                if (mgo != controllPoint)
                {
                    mgo.LeapInteraction = false;
                }
            }

            controllPoint.GetComponent <Leap.Unity.Interaction.InteractionBehaviour>().OnGraspedMovement += updateDiagram;
            controllPoint.GetComponent <Leap.Unity.Interaction.InteractionBehaviour>().OnGraspEnd        += updateDiagram;
            volumeLineRenderer.useWorldSpace = false;

            Color tmp = Color.blue;

            tmp.a = .5f;

            cutoutRectanglePoly.figColor = tmp;
            foreach (AbstractPolygon poly in prism.allfaces)
            {
                tmp           = Color.red;
                tmp.a         = .5f;
                poly.figColor = tmp;
            }
            prism.bases[0].figColor = Color.clear;
        }