コード例 #1
0
    // Update is called once per frame
    void Update()
    {
        rotateRayDir     = Quaternion.AngleAxis(degPerSec * Time.deltaTime, crossProduct) * rotateRayDir;
        rotRay.origin    = transform.position;
        rotRay.direction = rotateRayDir;

        SetCrossProduct();

        FlagRenderer.DrawRay(crossProductRayObj, cpRay, cpRayColor);
        FlagRenderer.DrawRay(rotateRayObj, rotRay);
    }
コード例 #2
0
    public override void Decorate()
    {
        // Find Centerline Bend Marks
        var centerline    = m_Conduit.centerline;
        var indices       = m_Conduit.centerlineBendIndices;
        var conduitRadius = Engine.conduitDiameterM * 0.5f;
        var bi            = 0;

        for (int i = 0; i < indices.Count; ++i)
        {
            if (indices[i].type == BendMarkType.Start || indices[i].type == BendMarkType.End)
            {
                bendIndices[bi++] = indices[i].index;
            }
        }

        if (bi < 6)
        {
            // Rays Off
            ToggleRays(false);
            return;
        }
        ToggleRays(true);

        // Arrow locations are dependent on Bend Method
        var bend        = m_Conduit.bend;
        var centerAngle = (float)bend.GetInputParameter(EBendParameterName.CenterAngleDegrees).value;
        //var bendMethod = (GlobalEnum.ESaddle3BendMethod) bend.GetInputParameter(EBendParameterName.Saddle3Method).value;

        //if(bendMethod == GlobalEnum.ESaddle3BendMethod.Notch)
        //{
        // Determine Points
        int     centerOfCenterBend = (bendIndices[3] - bendIndices[2]) / 2 + bendIndices[2];
        Vector3 bend1Dir           = centerline[bendIndices[1]].radialDir;
        Vector3 bend2Dir           = transform.up;
        Vector3 bend3Dir           = centerline[bendIndices[4]].radialDir;

        bendPoints[0] = m_Conduit.transform.TransformPoint(centerline[bendIndices[1]].point) + bend1Dir * conduitRadius;
        bendPoints[1] = m_Conduit.transform.TransformPoint(centerline[centerOfCenterBend].point) + bend2Dir * conduitRadius;
        bendPoints[2] = m_Conduit.transform.TransformPoint(centerline[bendIndices[4]].point) + bend3Dir * conduitRadius;

        // Draw Arrows
        FlagRenderer.DrawRay(rays[0], -bend1Dir, bendPoints[0]);
        FlagRenderer.DrawRay(rays[1], -bend2Dir, bendPoints[1]);
        FlagRenderer.DrawRay(rays[2], -bend3Dir, bendPoints[2]);
        //}
        //else if(bendMethod == GlobalEnum.ESaddle3BendMethod.Arrow)
        //{
        //    // Determine Points
        //    Vector3 bend1Dir = centerline[ bendIndices[ 1 ] ].radialDir;
        //    Vector3 bend2Dir = -centerline[ bendIndices[ 2 ] ].radialDir;
        //    Vector3 bend3Dir = centerline[ bendIndices[ 4 ] ].radialDir;

        //    bendPoints[ 0 ] = m_Conduit.transform.TransformPoint( centerline[ bendIndices[ 1 ] ].point ) + bend1Dir * conduitRadius;
        //    bendPoints[ 1 ] = m_Conduit.transform.TransformPoint( centerline[ bendIndices[ 2 ] ].point ) + bend2Dir * conduitRadius;
        //    bendPoints[ 2 ] = m_Conduit.transform.TransformPoint( centerline[ bendIndices[ 4 ] ].point ) + bend3Dir * conduitRadius;

        //    // Draw Arrows
        //    FlagRenderer.DrawRay( rays[ 0 ], -bend1Dir, bendPoints[ 0 ] );
        //    FlagRenderer.DrawRay( rays[ 1 ], -bend2Dir, bendPoints[ 1 ] );
        //    FlagRenderer.DrawRay( rays[ 2 ], -bend3Dir, bendPoints[ 2 ] );
        //}
    }