public void AddMessage(Message message)
            {
                if (!VisualizationUtils.AssertMessageType <T>(message, m_Topic))
                {
                    return;
                }

                this.message = (T)message;
                this.meta    = new MessageMetadata(m_Topic, Time.time, DateTime.Now);
                m_GUIAction  = null;
            }
            public void AddMessage(Message message)
            {
                if (!VisualizationUtils.AssertMessageType <T>(message, m_Topic))
                {
                    return;
                }

                this.message = (T)message;
                this.meta    = meta;
                m_Texture2D  = null;
                m_GUIAction  = null;

                // notify anyone who requested updates when the texture changes
                foreach (Action <Texture2D> callback in m_OnChangeCallbacks)
                {
                    callback(GetTexture());
                }
            }
            public virtual void AddMessage(Message message)
            {
                MessageMetadata meta = new MessageMetadata(m_Topic, Time.time, DateTime.Now);

                if (!VisualizationUtils.AssertMessageType <T>(message, m_Topic))
                {
                    return;
                }

                m_Message   = (T)message;
                m_Meta      = meta;
                m_GUIAction = null;

                // If messages are coming in faster than 1 per frame, we only update the drawing once per frame
                if (m_IsDrawingEnabled && Time.time > m_LastDrawingFrameTime)
                {
                    Redraw();
                }

                m_LastDrawingFrameTime = Time.time;
            }