public async Task TransformSceneObject(SceneObjectModel sceneObject)
        {
            var infoModel = new SceneObjectInfoModel(sceneObject.Id, _sceneId);

            infoModel.Transformation = new TransformationInfoModel()
            {
                TranslateX = sceneObject.Transformation.TranslateX,
                TranslateY = sceneObject.Transformation.TranslateY,
                TranslateZ = sceneObject.Transformation.TranslateZ,
                RotateX    = sceneObject.Transformation.RotateX,
                RotateY    = sceneObject.Transformation.RotateY,
                RotateZ    = sceneObject.Transformation.RotateZ,
                ScaleX     = sceneObject.Transformation.ScaleX,
                ScaleY     = sceneObject.Transformation.ScaleY,
                ScaleZ     = sceneObject.Transformation.ScaleZ
            };

            try
            {
                await _proxy.Invoke("TransformSceneObject", infoModel);
            }
            catch (InvalidOperationException)
            {
                throw new UserNotAuthorizedException(string.Format(CultureInfo.CurrentUICulture, "The user '{0}' is not authorized or known in the system.", LoggedInUserName), LoggedInUserName);
            }
        }
        public async Task CreateSceneObject(SceneObjectModel sceneObject)
        {
            var type = SceneObjectType.Light;

            if (sceneObject.SceneElement is Teapot)
            {
                type = SceneObjectType.Teapot;
            }
            else if (sceneObject.SceneElement is Cube)
            {
                type = SceneObjectType.Cube;
            }
            else if (sceneObject.SceneElement is Cylinder)
            {
                type = SceneObjectType.Cylinder;
            }
            else if (sceneObject.SceneElement is Disk)
            {
                type = SceneObjectType.Disk;
            }
            else if (sceneObject.SceneElement is Sphere)
            {
                type = SceneObjectType.Sphere;
            }

            var infoModel = new SceneObjectInfoModel(sceneObject.Id, _sceneId)
            {
                SceneObjectType = type
            };

            try
            {
                await _proxy.Invoke("CreateSceneObject", infoModel);
            }
            catch (InvalidOperationException)
            {
                throw new UserNotAuthorizedException(string.Format(CultureInfo.CurrentUICulture, "The user '{0}' is not authorized or known in the system.", LoggedInUserName), LoggedInUserName);
            }
        }