// info: mit sealed override kann überschreiben verhindert werden
        public override void Animation_Update(object sender, FrameUpdateEventArgs e)
        {
            // mixupProperties in Animation Thread
            //  nicht Threadsafe !
            //TimeAlive += e.ElapsedMilliseconds;
            // try
            //  {
            //     mixupProperties();
            //}
            //catch (Exception ex)
            //{

            //    //throw;
            //}
            if (IsAlive)
            {
                AnimLinTrans.Update(this, e);
                AnimAirDrag.Update(this, e);
            }
        }
        // info: mit sealed override kann überschreiben verhindert werden
        public override void Animation_Update(object sender, FrameUpdateEventArgs e)
        {
            mixupProperties();
            // Alternative: count time alive in Animation frame
            // Warning: implementation not thread safe
            //TimeAlive += e.ElapsedMilliseconds;  // here because Frame_Update can be dropped
            //try
            //{
            //    mixupProperties();
            //}
            //catch (Exception ex)
            //{

            //    //throw;
            //}
            if (IsAlive)
            {
                AnimLinTrans.Update(this, e);
                AnimAirDrag.Update(this, e);
            }
        }