public void Remove(Motion6D.SerializablePosition position) { positions.Remove(position); IWpfVisible visible = position.Parameters as IWpfVisible; foreach (Motion6D.Camera camera in cameras) { camera.DynamicalRemove(position); } }
void IVisibleConsumer.Add(IVisible visible) { if (source != null) { throw new Exception("Source already exists"); } source = visible as WpfShape; if (visible is IWpfVisible) { IWpfVisible sh = visible as IWpfVisible; textures = sh.Textures; } onAdd(visible); }
/// <summary> /// Dynamically removes visible /// </summary> /// <param name="position">Position of visible to add</param> public override void DynamicalRemove(SerializablePosition position) { RemoveVisible(position); IWpfVisible v = position.Parameters as IWpfVisible; Action act = () => { Visual3D vis = v.GetVisual(this); if (vis != null) { viewport.Children.Remove(vis); } dict.Remove(position); }; control.Dispatcher.Invoke(act); }
internal void Init() { int count = Count; FieldOfView = fieldOfView; viewport.Children.Clear(); dict.Clear(); for (int i = 0; i < count; i++) { SerializablePosition p = this[i] as SerializablePosition; IWpfVisible v = p.Parameters as IWpfVisible; Visual3D vis = v.GetVisual(this); if (vis != null) { dict[p] = vis; viewport.Children.Add(vis); } } }
/// <summary> /// Dynamically adds visible /// </summary> /// <param name="position">Position of visible to add</param> public override void DynamicalAdd(SerializablePosition position) { if (!show) { return; } AddVisible(position); IWpfVisible v = position.Parameters as IWpfVisible; Action act = () => { Visual3D vis = v.GetVisual(this); if (vis != null) { viewport.Children.Add(vis); } dict[position] = vis; }; control.Dispatcher.Invoke(act); }
public static void SetTransform(this IPosition position, Visual3D visual) { SerializablePosition sp = position as SerializablePosition; IWpfVisible v = sp.Parameters as IWpfVisible; SetTransform(position, visual.Transform as MatrixTransform3D); }