// Start is called before the first frame update
    void Start()
    {
        m_DrawableLine    = GetComponent <RealtimeDrawableLine>();
        m_DrawableArea    = GetComponent <RealtimeDrawableArea>();
        m_DrawableVolume  = GetComponent <RealtimeDrawableVolume>();
        m_DrawableSphere  = GetComponent <RealtimeDrawableSphere>();
        m_DrawablePolygon = GetComponent <DrawablePolygon>();

        // For introduction
        m_DrawableVolume.AddListener(() => { mIntroductionScript.CheckVolume(m_DrawableVolume.m_LastCreatedShape.transform, RealtimeDrawableVolume.m_SubdivisionScale); },
                                     RealtimeDrawableVolume.ListenerType.PostFinish);


        m_CurrentTool = Tool.None;
        //        m_ToolText = GameObject.Find("ActiveToolText").GetComponent<Text>();

        mIntroductionScript = FindObjectOfType <IntroductionScript>();

        UpdateGridScale();
        GlobalGridScale.AddScaleListener(UpdateGridScale);

        m_Line   = m_Shape.transform.Find("Line").gameObject;
        m_Area   = m_Shape.transform.Find("Area").gameObject;
        m_Volume = m_Shape.transform.Find("Volume").gameObject;
        m_Mesh   = m_Shape.transform.Find("Mesh").gameObject;

        m_PointerController = m_Pointer.GetComponent <PointerController>();

        penInput           = FindObjectOfType <NetworkPenInputController>();
        initialPenPosition = penInput.transform.position;

        deleteTool = FindObjectOfType <DeleteToolOld>();
        initialDeleteToolPosition = deleteTool.transform.position;
    }
    public void Start()
    {
        mInputController  = FindObjectOfType <InputController>();
        pointerController = FindObjectOfType <PointerController>();
        deleteTool        = FindObjectOfType <DeleteToolOld>();

        m_MeshRenderer = GetComponent <MeshRenderer>();
        m_Mat          = m_MeshRenderer.material;
        shaderVariant  = ShaderVariant.Factory(transparent, m_Mat);
    }