Esempio n. 1
0
        public static CVAngle Create(CMAngle model, Transform parent,
                                     CVLineSegment segment1, CVLineSegment segment2)
        {
            var name = string.Format("angle {0}: {1} <-> {2}", model.Id, segment1.Model.Id, segment2.Model.Id);

            return(new GameObject(name).AddComponent <CVAngle>().Init(model, parent, segment1, segment2));
        }
Esempio n. 2
0
        private CVAngle Init(CMAngle model, Transform parent,
                             CVLineSegment segment1, CVLineSegment segment2)
        {
            CVPoint point = segment1.GetCommonPoint(segment2);
            // функция вычисления направлений линий, образующих угол
            Func <CVLineSegment, Vector3> getDir
                = segment => segment.RealDirection.normalized * (point == segment.FirstPoint ? 1 : -1);
            // создание обозначения угла
            const float radius = 0.2f;

            Vector3[] positions = null;
            if (model.IsRightAngle)
            {
                positions = CalcRightAngleContour(radius, getDir(segment1), getDir(segment2));
            }
            else
            {
                positions = CalcAngleContour(radius, getDir(segment1), getDir(segment2));
            }
            CreateLineRenderer(transform, positions);

            // привязка обозначения угла к месту угла
            transform.parent        = parent;
            transform.localPosition = point.RealPosition;
            transform.localRotation = Quaternion.identity;
            transform.localScale    = Vector3.one;

            Model = model;

            return(this);
        }
Esempio n. 3
0
            public override void Do()
            {
                CMAngle model = Owner.model.CreateAngle(segment1.Value.Model, segment2.Value.Model, angle);

                createdAngle = CVAngle.Create(model, Owner.anglesObj, segment1.Value, segment2.Value);
            }