// coorMap = null case for use when loading rocks from database
        public RockViewModel(Rock aRock, Canvas canvas, CoordinateMapper coorMap = null)
        {
            MyRock       = aRock;
            BCanvas      = canvas;
            BoulderShape = CreateBoulderShape();

            CameraSpacePoint csp = new CameraSpacePoint();

            csp.X = (float)aRock.CoorX.GetValueOrDefault(0);
            csp.Y = (float)aRock.CoorY.GetValueOrDefault(0);
            csp.Z = (float)aRock.CoorZ.GetValueOrDefault(0);

            if (coorMap != null)
            {
                bCanvasPoint = coorMap.MapCameraSpacePointToPointOnCanvas(csp, canvas, SpaceMode.Color);
                bPoint       = canvas.GetNormalisedPoint(bCanvasPoint);
            }
        }