예제 #1
0
        public override void Draw(UFSession session, string filename)
        {
            DrawTool drawTool = new DrawTool(session);

            drawTool.AddNewModel(filename);
            Point origin = new Point(0, 0, 0);

            Tag[] circle    = new Tag[] { drawTool.DrawCircle(origin, nutDiam / 2) };
            Tag[] outCircle = drawTool.Extrude(circle, new double[] { 0.0, 0.0, 1.0 }, "0.0", new string[] { "0", height.ToString() }, FeatureSigns.Nullsign);

            drawTool.MakeHoleZ(holeDiam, holeHeight, 120 * Math.PI / 180, new Point(0, holeDist / 2, 0), 1);
            drawTool.MakeHoleZ(holeDiam, holeHeight, 120 * Math.PI / 180, new Point(0, -holeDist / 2, 0), 1);
            drawTool.MakeHoleZ(holeDiam, holeHeight, 120 * Math.PI / 180, new Point(holeDist / 2, 0, 0), 1);
            drawTool.MakeHoleZ(holeDiam, holeHeight, 120 * Math.PI / 180, new Point(-holeDist / 2, 0, 0), 1);

            Tag[] innerCircle = new Tag[] { drawTool.DrawCircle(origin, (threadMaxDiam - 2) / 2) };
            drawTool.Extrude(innerCircle, new double[] { 0.0, 0.0, 1.0 }, "0.0", new string[] { "0", height.ToString() }, FeatureSigns.Negative);

            Tag outputTag = outCircle[0];
            Tag model;

            session.Modl.AskFeatBody(outputTag, out model);

            Tag[] edges;
            session.Modl.AskBodyEdges(model, out edges);
            List <Tag> chamfers = new List <Tag>();
            Tag        edge;

            for (int i = 0; i < 2; i++)
            {
                session.Modl.AskListItem(edges, i, out edge);
                chamfers.Add(edge);
            }
            drawTool.MakeChamfer(chamfers.ToArray(), 45, outChamfer);

            chamfers.Clear();
            for (int i = 3; i < 10; i += 2)
            {
                session.Modl.AskListItem(edges, i, out edge);
                chamfers.Add(edge);
            }
            drawTool.MakeChamfer(chamfers.ToArray(), 45, holeChamfer);

            Tag[] facesArray;
            session.Modl.AskFeatBody(outputTag, out model);
            session.Modl.AskBodyFaces(model, out facesArray);
            Tag startFace, threadFace;

            session.Modl.AskListItem(facesArray, 11, out threadFace);
            session.Modl.AskListItem(facesArray, 1, out startFace);
            drawTool.MakeThread(threadMaxDiam, threadMaxDiam - 2, threadMaxDiam - 1, height, threadStep, threadFace, startFace);

            drawTool.MakeCylHoleZ(threadMaxDiam, 45 * Math.PI / 180, origin, 1, innerChamfer);
            drawTool.MakeCylHoleZ(threadMaxDiam, 45 * Math.PI / 180, new Point(0, 0, height), -1, innerChamfer);

            drawTool.SaveModel();
        }
예제 #2
0
 void drawFrontier()
 {
     for (int i = 1; i <= layerNum; i++)
     {
         GameObject obj = new GameObject();
         obj.transform.parent = transform;
         DrawTool.DrawCircle(obj.transform, obj.transform.position, globalConfig.radius * i / layerNum);
     }
 }
예제 #3
0
        public override void Draw(UFSession session, string filename)
        {
            DrawTool drawTool = new DrawTool(session);

            drawTool.AddNewModel(filename);
            Point origin = new Point(0, 0, 0);

            Tag[] circle    = new Tag[] { drawTool.DrawCircle(origin, diam / 2) };
            Tag[] outCircle = drawTool.Extrude(circle, new double[] { 0.0, 0.0, 1.0 }, "0.0", new string[] { "0", (length - pushLength).ToString() }, FeatureSigns.Nullsign);

            drawTool.MakeCylHoleZ(innerChamferDiam, innerChamferAngle * Math.PI / 180, origin, 1);

            Tag[] hexagon = drawTool.DrawHexagon(holeDiam, holeS, origin);
            drawTool.Extrude(hexagon, new double[] { 0.0, 0.0, 1.0 }, "0.0",
                             new string[] { "0", holeHexLength.ToString() }, FeatureSigns.Negative);

            drawTool.MakeHoleZ(holeS, holeTotalLength - holeHexLength, 120 * Math.PI / 180, new Point(0, 0, holeHexLength), 1);

            Tag outputTag = outCircle[0];
            Tag model;

            session.Modl.AskFeatBody(outputTag, out model);

            Tag[] facesArray;
            session.Modl.AskFeatBody(outputTag, out model);
            session.Modl.AskBodyFaces(model, out facesArray);
            Tag startFace, threadFace;

            session.Modl.AskListItem(facesArray, 1, out threadFace);
            session.Modl.AskListItem(facesArray, 3, out startFace);
            drawTool.MakeThread(diam, diam - 2, diam - 1, length - pushLength, 1.5, threadFace, startFace);

            Tag[] edgeArray;
            session.Modl.AskBodyEdges(model, out edgeArray);
            Tag edge;

            session.Modl.AskListItem(edgeArray, 8, out edge);
            drawTool.MakeChamfer(new Tag[] { edge }, outChamferAngle, outChamfer);

            drawTool.MakeSlice(new Point(0, diam / 2, length - pushLength), (diam - pushDiam) / 2, chamferAngle * Math.PI / 180, DrawTool.FunctionType.Ctg, -1, new string[] { "0", "360" }, origin);

            Tag[] pushPart = DrawPushPart(drawTool, new Point(0, 0, length - pushLength));
            drawTool.Revolve(pushPart, new string[] { "0", "360" }, origin, new double[] { 0.0, 0.0, 1.0 }, FeatureSigns.Positive);;

            session.Modl.AskFeatBody(outputTag, out model);
            session.Modl.AskBodyEdges(model, out edgeArray);
            session.Modl.AskListItem(edgeArray, 28, out edge);
            drawTool.MakeRounding(new Tag[] { edge }, roundingRadius);

            drawTool.SaveModel();
        }
예제 #4
0
 public void Execute()
 {
     if (master && !master.IsAlive)
     {
         return;
     }
     if (targetRound)
     {
         DrawTool.DrawCircle(transform, transform.position, targetRound.fRange, Color.red);
     }
     if (targetCone)
     {
         DrawTool.DrawSector(transform, transform.position, targetCone.fAngle, targetCone.fRange / 2, Color.red);
     }
 }
예제 #5
0
    void Update()
    {
        if ((go != null) && (time != 0))
        {
            animator.Play(animationName, 0, time);
        }

        switch (drawType)
        {
        case DrawType.DrawSector:
            DrawTool.DrawSector(go.transform, go.transform.position, angle, radius);
            break;

        case DrawType.DrawCircle:
            DrawTool.DrawCircle(go.transform, go.transform.position, radius);
            break;

        case DrawType.DrawRectangle:
            DrawTool.DrawRectangle(go.transform, go.transform.position, length, width);
            break;

        case DrawType.DrawRectangle2D:
            DrawTool.DrawRectangle2D(go.transform, distance, length, width);
            break;

        case DrawType.DrawSectorSolid:
            DrawTool.DrawSectorSolid(go.transform, go.transform.position, angle, radius);
            break;

        case DrawType.DrawCircleSolid:
            DrawTool.DrawCircleSolid(go.transform, go.transform.position, radius);
            break;

        case DrawType.DrawRectangleSolid:
            DrawTool.DrawRectangleSolid(go.transform, go.transform.position, length, width);
            break;

        case DrawType.DrawRectangleSolid2D:
            DrawTool.DrawRectangleSolid2D(go.transform, distance, length, width);
            break;

        default:
            break;
        }
    }
예제 #6
0
    // Update is called once per frame
    void Update()
    {
        //進入CD
        CDing();


        //獲取範圍內敵人
        hitColliders = Physics.OverlapSphere(transform.position, _distance, 1 << LayerMask.NameToLayer("Enemy"));


        if (CanUseSkill && Input.GetKey(KeyCode.Alpha3))
        {
            DrawTool.DrawCircle(Rectangle_p, Rectangle_p.localPosition, _distance);
        }                                                                          //攻擊範圍標示

        if (Input.GetKeyUp(KeyCode.Alpha3))
        {
            UseSkill();
        }

        if (CanUseSkill && isUse && isAnimation)
        {
            CostMP();
            _particle.Play(true);
            targetColliders = hitColliders;
            HitAnimatiom();
            settle();
            StartCD();
        }
        if (isAnimation)
        {
            DrawTool.EndDraw(Rectangle_p, false);
            isUse       = false;
            isAnimation = false;
        }
    }
    public override void OnInspectorGUI()
    {
        DebugDistanceAngle d = target as DebugDistanceAngle;

        EditorGUILayout.LabelField("请把角色放在Resources文件夹中,点击Play之后将通过Resources进行加载");
        canGetDragEvent = EditorGUILayout.Toggle("通过拖拽获取角色路径", canGetDragEvent);
        EditorGUILayout.LabelField("角色路径");
        if (canGetDragEvent)
        {
            if (Event.current.type == EventType.DragExited)
            {
                if (DragAndDrop.paths != null && DragAndDrop.paths.Length > 0)
                {
                    string s = DragAndDrop.paths[0];
                    s           = s.Substring(s.IndexOf("Resources/"));
                    s           = s.Remove(0, "Resources/".Length);
                    s           = s.Substring(0, s.IndexOf('.'));
                    d.modelName = s;
                }
            }
        }
        d.modelName = EditorGUILayout.TextArea(d.modelName);

        // d.animationName = EditorGUILayout.TextField("动画名字", d.animationName);

        EditorGUILayout.LabelField("播放进度");
        d.time = EditorGUILayout.Slider(d.time, 0, 1);

        d.drawType = (DrawType)EditorGUILayout.EnumPopup("绘制类型", d.drawType);
        Debug.Log(d.drawType);
        switch (d.drawType)
        {
        case DrawType.DrawSector:
            EditorGUILayout.LabelField("绘制空心扇形");
            EditorGUILayout.LabelField("角度");
            d.angle = EditorGUILayout.Slider(d.angle, 0, 180);
            EditorGUILayout.LabelField("半径");
            d.radius = EditorGUILayout.Slider(d.radius, 0, 10);
            break;


        case DrawType.DrawCircle:
            EditorGUILayout.LabelField("绘制空心圆");
            EditorGUILayout.LabelField("半径");
            d.radius = EditorGUILayout.Slider(d.radius, 0, 10);
            break;


        case DrawType.DrawRectangle:
            EditorGUILayout.LabelField("绘制空心长方形");
            EditorGUILayout.LabelField("长度");
            d.length = EditorGUILayout.Slider(d.length, 0, 10);
            EditorGUILayout.LabelField("宽度");
            d.width = EditorGUILayout.Slider(d.width, 0, 10);
            break;


        case DrawType.DrawRectangle2D:
            EditorGUILayout.LabelField("绘制空心长方形2D");
            EditorGUILayout.LabelField("距离");
            d.distance = EditorGUILayout.Slider(d.distance, 0, 10);
            EditorGUILayout.LabelField("长度");
            d.length = EditorGUILayout.Slider(d.length, 0, 10);
            EditorGUILayout.LabelField("宽度");
            d.width = EditorGUILayout.Slider(d.width, 0, 10);
            break;


        case DrawType.DrawSectorSolid:
            EditorGUILayout.LabelField("绘制实心扇形");
            EditorGUILayout.LabelField("角度");
            d.angle = EditorGUILayout.Slider(d.angle, 0, 180);
            EditorGUILayout.LabelField("半径");
            d.radius = EditorGUILayout.Slider(d.radius, 0, 10);
            break;


        case DrawType.DrawCircleSolid:
            EditorGUILayout.LabelField("绘制实心圆");
            EditorGUILayout.LabelField("半径");
            d.radius = EditorGUILayout.Slider(d.radius, 0, 10);
            break;


        case DrawType.DrawRectangleSolid:
            EditorGUILayout.LabelField("绘制实心长方形");
            EditorGUILayout.LabelField("长度");
            d.length = EditorGUILayout.Slider(d.length, 0, 10);
            EditorGUILayout.LabelField("宽度");
            d.width = EditorGUILayout.Slider(d.width, 0, 10);
            break;


        case DrawType.DrawRectangleSolid2D:
            EditorGUILayout.LabelField("绘制实心长方形2D");
            EditorGUILayout.LabelField("距离");
            d.distance = EditorGUILayout.Slider(d.distance, 0, 10);
            EditorGUILayout.LabelField("长度");
            d.length = EditorGUILayout.Slider(d.length, 0, 10);
            EditorGUILayout.LabelField("宽度");
            d.width = EditorGUILayout.Slider(d.width, 0, 10);
            break;


        default:
            break;
        }

        if (tempGo != null)
        {
            DestroyImmediate(tempGo);
        }


        GameObject go = d.gameObject;

        tempGo = null;
        switch (d.drawType)
        {
        case DrawType.DrawSector:
            DrawTool.DrawSector(go.transform, go.transform.position, d.angle, d.radius);
            break;

        case DrawType.DrawCircle:
            DrawTool.DrawCircle(go.transform, go.transform.position, d.radius);
            break;

        case DrawType.DrawRectangle:
            DrawTool.DrawRectangle(go.transform, go.transform.position, d.length, d.width);
            break;

        case DrawType.DrawRectangle2D:
            DrawTool.DrawRectangle2D(go.transform, d.distance, d.length, d.width);
            break;

        case DrawType.DrawSectorSolid:
            tempGo = DrawTool.DrawSectorSolid(go.transform, go.transform.position, d.angle, d.radius);
            break;

        case DrawType.DrawCircleSolid:
            tempGo = DrawTool.DrawCircleSolid(go.transform, go.transform.position, d.radius);
            break;

        case DrawType.DrawRectangleSolid:
            tempGo = DrawTool.DrawRectangleSolid(go.transform, go.transform.position, d.length, d.width);
            break;

        case DrawType.DrawRectangleSolid2D:
            //  DrawTool.DrawRectangleSolid2D(go.transform, d.distance, d.length, d.width);
            break;

        default:
            break;
        }
    }