public void SetMode(IDeviceContextHolder contextHolder, FlatMirrorMode mode) { if (_material != null && _mode == mode) { return; } _mode = mode; DisposeHelper.Dispose(ref _material); switch (mode) { case FlatMirrorMode.TransparentMirror: _material = new TransparentMirrorMaterial(); break; case FlatMirrorMode.SolidGround: _material = new SolidGroundMaterial(); break; case FlatMirrorMode.TextureMirror: _material = new TextureMirrorMaterial(); break; case FlatMirrorMode.BackgroundGround: _material = new SemiTransparentGroundMaterial(); break; default: throw new ArgumentOutOfRangeException(nameof(mode), mode, null); } _material.Initialize(contextHolder); }
public void SetMode(IDeviceContextHolder contextHolder, FlatMirrorMode mode) { _object.SetMode(contextHolder, mode); }
private FlatMirror([CanBeNull] IRenderableObject mirroredObject, Plane plane, FlatMirrorMode mode) { LocalMatrix = Matrix.Reflection(plane); var point = plane.Normal * plane.D; var matrix = Matrix.Scaling(200f, 200f, 200f) * Matrix.Translation(point); if (mirroredObject != null) { MirroredObject = mirroredObject.Clone(); Add(MirroredObject); _object = new FlatMirrorObject(matrix, mode) { ParentMatrix = Matrix }; } else { _object = new FlatMirrorObject(matrix, mode) { ParentMatrix = Matrix }; } }
public FlatMirrorObject(Matrix transform, FlatMirrorMode mode) : base(null, BaseVertices, BaseIndices) { Transform = transform; _mode = mode; }