protected override void OnRender(Camera camera)
        {
            base.OnRender(camera);

            Vec3 offset = new Vec3(0, 0, .2f);

            if (pathTest)
            {
                camera.DebugGeometry.Color = new ColorValue(0, 0, 1);
                AddArrow(camera, startPosition + new Vec3(0, 0, 4), startPosition + offset, .07f, 1.2f);
            }

            Vec3 endPosition;

            if (GetPositionByCursor(out endPosition))
            {
                camera.DebugGeometry.Color = new ColorValue(1, 0, 0);
                AddArrow(camera, endPosition + new Vec3(0, 0, 4), endPosition + offset, .07f, 1.2f);

                found = false;

                if (pathTest)
                {
                    //find the path

                    List <Vec2> path = new List <Vec2>();

                    float startTime = EngineApp.Instance.Time;

                    float unitSize          = system.GridCellSize * .8f;
                    int   maxFieldsDistance = 1000000;                 // extendedFunctionalityDescriptor.MaxFieldsDistance;
                    int   maxFieldsToCheck  = 1000000;                 // extendedFunctionalityDescriptor.MaxFieldsToCheck;
                    bool  smooth            = extendedFunctionalityDescriptor.Smooth;
                    bool  visualize         = extendedFunctionalityDescriptor.Visualize;

                    found = system.FindPath(unitSize, startPosition.ToVec2(), endPosition.ToVec2(), maxFieldsDistance,
                                            maxFieldsToCheck, smooth, visualize, path);
                    time      = EngineApp.Instance.Time - startTime;
                    pathCount = path.Count;

                    if (found)
                    {
                        system.DebugDrawPath(camera, startPosition.ToVec2(), path);
                    }
                    //else
                    //{
                    //   List<Vec2> list = new List<Vec2>();
                    //   list.Add( endPosition.ToVec2() );
                    //   system.DebugDrawPath( camera, startPosition.ToVec2(), list, new ColorValue( 1, 0, 0 ) );
                    //}
                }
            }
        }