コード例 #1
0
ファイル: VertexUnit.cs プロジェクト: Y-dc/GeoSpace
    public override void Move(Ray ray, Transform camera, bool snap = false)
    {
        Plane facePlane = new Plane(faceNormal, position);

        float distance = 0;

        if (facePlane.Raycast(ray, out distance))
        {
            position = ray.GetPoint(distance);
            RestrictPosition();
        }

        if (snap)
        {
            Vector3 snapPosition;
            if (SnapPosition(position, out snapPosition))
            {
                float snapDistance = facePlane.GetDistanceToPoint(snapPosition);
                if (Math.AboutEqualsZero(snapDistance))
                {
                    position = snapPosition;
                }
            }
        }

        base.PositionChanged();
    }