internal void RenderHeightMap()
        {
#if COLLIDER_ODE
            ComputeLandingHeights();
#else
            //todo is silly to lock?            lock (this)
            //if (!Monitor.TryEnter(this, 10))
            //{
            //    SimPathStore.Debug("Someone is locking? " + this);
            //}
            //lock (this)
            {
                if (!HeightMapNeedsUpdate)
                {
                    return;
                }
                HeightMapNeedsUpdate = false;
            }
            //            _HeightMap = null;
            RenderGroundPlane();
            Debug("Start RenderHeightMap: {0} for {1}", PathStore, this);
            CollisionIndex[,] MeshIndex = PathStore.MeshIndex;
            MatrixNeedsUpdate           = true;
            //byte[,] ToMatrix = ByteMatrix;
            float[,] Heights     = HeightMap;
            float[,] GroundPlane = PathStore.GroundPlane;
            PathStore.TaintMatrix();
            for (int y = MaxYPt; y >= 0; y--)
            {
                for (int x = MaxXPt; x >= 0; x--)
                {
                    Heights[x, y] = DefaultHeight(y, x, GroundPlane, Heights, MeshIndex);
                }
            }
#endif
            Debug("End RenderHeightMap: {0} for {1}", PathStore, this);
        }