public CarDebugLinesObject(int id, string name, IRenderableObject renderable, Color4?color = null) { Id = id; Name = name; Renderable = renderable; Color = color ?? (renderable as DebugLinesObject)?.Color ?? (renderable as RenderableList)?.OfType <DebugLinesObject>().FirstOrDefault()?.Color ?? new Color4(1f, 0.6f, 0.3f, 0f); Transform = (renderable as DebugLinesObject)?.Transform ?? (renderable as RenderableList)?.LocalMatrix ?? Matrix.Identity; }
private static CameraOrbit CreateCamera(IRenderableObject node) { return(new CameraOrbit(32f.ToRadians()) { Alpha = 0.9f, Beta = 0.1f, Radius = node?.BoundingBox?.GetSize().Length() ?? 4.8f, Target = (node?.BoundingBox?.GetCenter() ?? Vector3.Zero) - new Vector3(0f, 0.05f, 0f) }); }
public FlatMirror(IRenderableObject mirroredObject, Plane plane) { LocalMatrix = Matrix.Reflection(plane); Add(mirroredObject.Clone()); var point = plane.Normal * plane.D; _object = new FlatMirrorObject( Matrix.Scaling(1000f, 1000f, 1000f) * Matrix.Translation(point)) { ParentMatrix = Matrix }; }
private static CameraOrbit CreateCamera(IRenderableObject node) { return(new SpecialCamera(MathF.ToRadians(32f)) { Alpha = 0.9f, Beta = 0.1f, MinBeta = -0.1f, MinY = 0.05f, NearZ = 0.1f, FarZ = 300f, Radius = node?.BoundingBox?.GetSize().Length() * 1.2f ?? 4.8f, Target = (node?.BoundingBox?.GetCenter() ?? Vector3.Zero) //- new Vector3(0f, 0.05f, 0f) - new Vector3(0f, 0.25f, 0f) }); }
public static bool SetBlurredObjects([NotNull] IRenderableObject parent, [NotNull] CarData.BlurredObject[] blurredObjects, float speed) { var getDummyByName = parent is Kn5RenderableCar c ? (Func <string, RenderableList>)c.GetDummyByName : ((RenderableList)parent).GetDummyByName; var changed = false; foreach (var o in CarData.BlurredObject.GetNamesToToggle(blurredObjects, speed)) { var node = getDummyByName(o.Item1); if (node != null && node.IsEnabled != o.Item2) { node.IsEnabled = o.Item2; changed = true; } } return(changed); }
private void Initialize(IDeviceContextHolder holder) { // TODO: errors handling! // DisposeHelper.Dispose(ref _view); DisposeHelper.Dispose(ref _obj); _dirty = false; if (AiLaneMode) { if (_lane == null) { _lane = AiLane.FromFile(GetAiLaneFastFilename(Filename)); } _obj = AiLaneObject.Create(_lane, AiLaneWidth); _obj.ParentMatrix = Matrix.Identity; _obj.UpdateBoundingBox(); if (MapSize == default(Vector2)) { var size = (_obj.BoundingBox ?? default(BoundingBox)).GetSize(); MapSize = new Vector2(size.X, size.Z); } } else { if (_view == null) { using (var map = Texture2D.FromFile(holder.Device, Filename)) { if (MapSize == default(Vector2)) { MapSize = new Vector2(map.Description.Width, map.Description.Height); } _view = new ShaderResourceView(holder.Device, map); } } } }
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) { Add(mirroredObject.Clone()); _object = new FlatMirrorObject(matrix, mode) { ParentMatrix = Matrix }; } else { _object = new FlatMirrorObject(matrix, mode) { ParentMatrix = Matrix }; } }
public void DrawSuspensionDebugStuff(DeviceContextHolder holder, ICamera camera) { if (_suspensionLines == null) { _suspensionLines = new DebugLinesObject(Matrix.Identity, GetDebugSuspensionVertices(SuspensionsPack)); } _suspensionLines.ParentMatrix = RootObject.Matrix; _suspensionLines.Draw(holder, camera, SpecialRenderMode.Simple); if (_wheelLfCon != default(Vector3)) { if (_debugNode == null) { _debugNode = new DebugObject(Matrix.Translation(_wheelLfCon), GeometryGenerator.CreateSphere(0.02f, 6, 6)); } _debugNode.Transform = Matrix.Translation(_wheelLfCon); _debugNode.ParentMatrix = RootObject.Matrix; holder.DeviceContext.OutputMerger.DepthStencilState = holder.States.DisabledDepthState; _debugNode.Draw(holder, camera, SpecialRenderMode.Simple); } }
protected bool IsVisible(IRenderableObject obj) { return(_hiddenNodes?.Contains(obj.Name) != true); }
public CarDebugLinesObject(string name, IRenderableObject renderable, Color4?color = null) : this(-1, name, renderable, color) { }
public static RenderableList GetParent([NotNull] this IRenderableObject child, [NotNull] RenderableList root) { return(root.GetAllChildren().OfType <RenderableList>().FirstOrDefault(x => x.Contains(child))); }
public Visual3D() { _renderableObject = DeviceContext.Current.CreateRenderableObject(); InvalidateRender(); //InvalidateBoundingBox(); }
private static RenderableList ToRenderableList([NotNull] IRenderableObject obj) { return(obj as RenderableList ?? new RenderableList { obj }); }
protected virtual void Render(RenderContext context, Camera camera, IRenderableObject obj) { ObjectManager.PushDebugGroup("OnRender", obj); obj.OnRender(); ObjectManager.PopDebugGroup(); }
private static bool IsAlignableNode(IRenderableObject obj) { // I’d like to use this opportunity to say hello to Virtual Simulazioni and their McLaren-Mercedes MP4/13 😅 return(obj.Name?.StartsWith("CINTURE_OFF") != true); }
public static void Add(IRenderableObject obj) { obj.AddToRenderer(); }
private static CameraOrbit CreateCamera(IRenderableObject node) { return new CameraOrbit(MathF.ToRadians(32f)) { Alpha = 0.9f, Beta = 0.1f, NearZ = 0.1f, FarZ = 300f, Radius = node?.BoundingBox?.GetSize().Length() ?? 4.8f, Target = (node?.BoundingBox?.GetCenter() ?? Vector3.Zero) - new Vector3(0f, 0.05f, 0f) }; }
public static void Remove(IRenderableObject obj) { obj.RemoveFromRenderer(); }
internal Visual() { _renderableObject = DeviceContext.Current.CreateRenderableObject(); InvalidateRender(); InvalidateBoundingBox(); }
public FlatMirror([NotNull] IRenderableObject mirroredObject, Plane plane) : this(mirroredObject, plane, FlatMirrorMode.TransparentMirror) { }
public FlatMirror([NotNull] IRenderableObject mirroredObject, Plane plane, bool noGround) : this(mirroredObject, plane, noGround ? FlatMirrorMode.ShadowOnlyGround : FlatMirrorMode.TransparentMirror) { }
private Vector2 WorldToCameraSpace(IRenderableObject pRenderable) { Vector3 cameraBaseVector = Vector3.Subtract(pRenderable.WorldPosition, mTopLeftCornerWorldPosition); return(new Vector2(cameraBaseVector.X, -cameraBaseVector.Y));; }