public void ChangeScene(ScenegraphViewModel scene) { if (scene != null) { ReleaseCurrentScene(); } this.scene = scene; }
/// <summary> /// /// </summary> /// <param name="d"></param> /// <param name="e"></param> private static void OnSceneGraphChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { Aegir.Util.DebugUtil.LogWithLocation("ScenegraphDP Callback triggered"); RenderView view = d as RenderView; ScenegraphViewModel newScene = e.NewValue as ScenegraphViewModel; ScenegraphViewModel oldScene = e.OldValue as ScenegraphViewModel; if (newScene != null) { view.OnSceneGraphInstanceChanged(newScene, oldScene); } }
public void OnSceneGraphInstanceChanged(ScenegraphViewModel newScene, ScenegraphViewModel oldScene) { Aegir.Util.DebugUtil.LogWithLocation("Scene Instance changed"); //unlisten old if (oldScene != null) { oldScene.ScenegraphChanged -= OnSceneGraphChanged; oldScene.InvalidateChildren -= OnInvalidateChildren; } if (newScene == null) { throw new ArgumentNullException("newScene", "Argument newScene cannot be set to a null reference"); } newScene.ScenegraphChanged += OnSceneGraphChanged; newScene.InvalidateChildren += OnInvalidateChildren; RenderHandler.ChangeScene(newScene); }