コード例 #1
0
ファイル: TrainManager.cs プロジェクト: s520/OpenBVE
 protected TrainManagerBase(HostInterface host, BaseRenderer renderer, BaseOptions Options, FileSystem fileSystem)
 {
     currentHost    = host;
     Renderer       = renderer;
     CurrentOptions = Options;
     FileSystem     = fileSystem;
 }
コード例 #2
0
        protected FormWrapperBase(BaseRenderer renderer, string title, int width, int height)
        {
            if (StopCurrent())
            {
                throw new Exception("Can’t have two renderers running at the same time");
            }

            _current = this;
            _title   = title;

            Form = new RenderForm(title)
            {
                ClientSize    = new Size(width, height),
                StartPosition = FormStartPosition.CenterScreen
            };

            Renderer = renderer;
            Renderer.Initialize(Form.Handle);
            Renderer.SetAssociatedWindow(Form);

            UpdateSize();

            Form.UserResized += OnResize;
            Form.KeyDown     += OnKeyDown;
            Form.KeyUp       += OnKeyUp;

            Form.GotFocus  += OnGotFocus;
            Form.LostFocus += OnLostFocus;

            renderer.Tick += OnTick;
        }
コード例 #3
0
ファイル: Patch.cs プロジェクト: Tsuguri/CadCat
        public override void Render(BaseRenderer renderer)
        {
            if (ParametrizationChanged)
            {
                RecalculateParametrizationPoints();
            }
            if (Changed)
            {
                RecalculatePoints();
            }
            base.Render(renderer);

            renderer.ModelMatrix   = GetMatrix(false, new Vector3());
            renderer.SelectedColor = IsSelected ? Colors.LimeGreen : Colors.White;
            renderer.UseIndices    = true;

            if (ShowPolygon)
            {
                renderer.Indices = Indices;
                renderer.Points  = EnumerateCatPoints().Select(x => x.Position).ToList();


                renderer.Transform();
                renderer.DrawLines();
            }


            renderer.Indices = meshIndices;
            renderer.Points  = mesh;

            renderer.Transform();
            renderer.DrawLines();
        }
コード例 #4
0
 public FormWrapperMouseBase(BaseRenderer renderer, string title, int width, int height) : base(renderer, title, width, height)
 {
     Form.MouseMove  += OnMouseMove;
     Form.MouseDown  += OnMouseDown;
     Form.MouseUp    += OnMouseUp;
     Form.MouseWheel += OnMouseWheel;
 }
コード例 #5
0
ファイル: TextureManager.cs プロジェクト: zbx1425/OpenBVE
 internal TextureManager(HostInterface CurrentHost, BaseRenderer Renderer)
 {
     currentHost             = CurrentHost;
     RegisteredTextures      = new Texture[16];
     RegisteredTexturesCount = 0;
     renderer = Renderer;
 }
コード例 #6
0
        public BakedShadowsRendererViewModel([CanBeNull] BaseRenderer renderer, [NotNull] Kn5 kn5, [NotNull] string textureName,
                                             [CanBeNull] CarObject car)
        {
            _renderer    = renderer;
            _kn5         = kn5;
            _textureName = textureName;
            _car         = car;
            _saveable    = new SaveHelper <SaveableData>("_carTextureDialog", () => new SaveableData {
                From       = From,
                To         = To,
                Brightness = Brightness,
                Gamma      = Gamma,
                Ambient    = Ambient,
                Iterations = Iterations,
                ShadowBias = ShadowBias,
            }, o => {
                From       = o.From;
                To         = o.To;
                Brightness = o.Brightness;
                Gamma      = o.Gamma;
                Ambient    = o.Ambient;
                Iterations = o.Iterations;
                ShadowBias = o.ShadowBias;
            });

            _saveable.Initialize();
        }
コード例 #7
0
        public CurrentRoute(HostInterface host, BaseRenderer renderer)
        {
            currentHost   = host;
            this.renderer = renderer;

            Tracks = new Dictionary <int, Track>();
            Track t = new Track()
            {
                Elements = new TrackElement[0]
            };

            Tracks.Add(0, t);
            Sections = new Section[0];
            Stations = new RouteStation[0];
            BogusPreTrainInstructions = new BogusPreTrainInstruction[0];
            PointsOfInterest          = new PointOfInterest[0];
            CurrentBackground         = new StaticBackground(null, 6, false);
            TargetBackground          = new StaticBackground(null, 6, false);
            NoFogStart                 = 800.0f;
            NoFogEnd                   = 1600.0f;
            PreviousFog                = new Fog(NoFogStart, NoFogEnd, Color24.Grey, 0.0);
            CurrentFog                 = new Fog(NoFogStart, NoFogEnd, Color24.Grey, 0.5);
            NextFog                    = new Fog(NoFogStart, NoFogEnd, Color24.Grey, 1.0);
            Atmosphere                 = new Atmosphere();
            SecondsSinceMidnight       = 0.0;
            Information                = new RouteInformation();
            Illustrations.CurrentRoute = this;
        }
コード例 #8
0
ファイル: BaseFormWrapper.cs プロジェクト: WildGenie/actools
        public BaseFormWrapper(BaseRenderer renderer, string title, int width, int height)
        {
            _title = title;

            Form = new RenderForm(title)
            {
                Width         = width,
                Height        = height,
                StartPosition = FormStartPosition.CenterScreen
            };

            Renderer = renderer;
            Renderer.Initialize(Form.Handle);
            Renderer.SetAssociatedWindow(Form);

            Renderer.Width  = Form.ClientSize.Width;
            Renderer.Height = Form.ClientSize.Height;

            Form.UserResized += OnResize;
            Form.KeyDown     += OnKeyDown;
            Form.KeyUp       += OnKeyUp;

            Form.GotFocus  += OnGotFocus;
            Form.LostFocus += OnLostFocus;

            renderer.Tick += OnTick;
        }
コード例 #9
0
        public CarTextureDialog([CanBeNull] BaseRenderer renderer, [CanBeNull] CarSkinObject activeSkin, [NotNull] Kn5 kn5, [NotNull] string textureName)
        {
            DataContext = new CarTextureDialogViewModel(renderer, activeSkin, kn5, textureName);
            InitializeComponent();

            Buttons = new[] { CloseButton };
        }
コード例 #10
0
            private static LoadedImage LoadImageUsingDirectX(BaseRenderer renderer, byte[] imageData)
            {
                if (imageData == null || imageData.Length == 0)
                {
                    return(null);
                }

                try {
                    Format format;
                    var    pngData = TextureReader.ToPng(renderer.DeviceContextHolder, imageData, true, out format);

                    var image = new BitmapImage();
                    using (var stream = new MemoryStream(pngData)
                    {
                        Position = 0
                    }) {
                        image.BeginInit();
                        image.CreateOptions = BitmapCreateOptions.PreservePixelFormat;
                        image.CacheOption   = BitmapCacheOption.OnLoad;
                        image.UriSource     = null;
                        image.StreamSource  = stream;
                        image.EndInit();
                    }
                    image.Freeze();

                    return(new LoadedImage {
                        Image = image,
                        FormatDescription = format.ToString()
                    });
                } catch (Exception e) {
                    Logging.Warning(e);
                    return(null);
                }
            }
コード例 #11
0
ファイル: TextBox.cs プロジェクト: 2max968/Kritzelv2
        public override void Render(BaseRenderer g, float quality = 1, int start = 0, bool simple = false)
        {
            if (Points.Count < 0)
            {
                return;
            }
            float x = (Points[0].X - size.Width / 2);
            float y = (Points[0].Y - size.Height / 2);
            float w = (size.Width);
            float h = (size.Height);

            //g.DrawText(Text, Brush,
            //    new System.Drawing.RectangleF(x, y, 1000, 1000), FontSize);
            g.DrawText(Text, Brush.GetColor(), x, y, FontFamily, FontSize, Align);
            if (Selected && g is GPURenderer)
            {
                var renderer = (GPURenderer)g;
                renderer.DrawDashPolygon(new PointF[]
                {
                    new PointF(x, y),
                    new PointF(x + w, y),
                    new PointF(x + w, y + h),
                    new PointF(x, y + h),
                    new PointF(x, y)
                });
            }
        }
コード例 #12
0
ファイル: TextureMessage.cs プロジェクト: xfleet/OpenBVE
        public TextureMessage(BaseRenderer Renderer)
        {
            renderer = Renderer;

            Timeout     = 10000;
            TriggerOnce = true;
            Direction   = MessageDirection.Forwards;
        }
コード例 #13
0
ファイル: BackgroundBorder.cs プロジェクト: 2max968/Kritzelv2
        public override void Draw(BaseRenderer r, PageFormat format, float border, Color mainColor, Color secondaryColor)
        {
            float      borderpx = Util.MmToPoint(border);
            SizeF      bsize    = format.GetPixelSize();
            RectangleF bounds   = new RectangleF(borderpx, borderpx, bsize.Width - 2 * borderpx, bsize.Height - 2 * borderpx);

            r.DrawRect(secondaryColor, 1, bounds);
        }
コード例 #14
0
 public BaseKn5FormWrapper(BaseRenderer renderer, string title, int width, int height) : base(renderer, title, width, height)
 {
     Kn5ObjectRenderer = (IKn5ObjectRenderer)renderer;
     Form.MouseMove   += OnMouseMove;
     Form.MouseDown   += OnMouseDown;
     Form.MouseUp     += OnMouseUp;
     Form.MouseWheel  += OnMouseWheel;
 }
コード例 #15
0
 internal TextureManager(HostInterface CurrentHost, BaseRenderer Renderer)
 {
     currentHost             = CurrentHost;
     RegisteredTextures      = new Texture[16];
     RegisteredTexturesCount = 0;
     renderer         = Renderer;
     animatedTextures = new Dictionary <TextureOrigin, Texture>();
 }
コード例 #16
0
ファイル: FXImageFunction.cs プロジェクト: yarwelp/tooll
        public OperatorPartContext PrepareAndEvalOnChange(OperatorPartContext context, EvalFunctionOnChange functionOnChange)
        {
            //pirx: workaround to compile the shader for the first time. this should be done some where outside.
            if (_firstEval)
            {
                for (int i = 0; i < NumCodes(); ++i)
                {
                    Compile(i);
                }
                _firstEval = false;
                Changed    = true;
            }

            if (_effect == null)
            {
                return(context);
            }

            if (_renderer == null)
            {
                _renderer = new BaseRenderer();
            }

            var viewport = GetViewport(context);

            if (_usedViewport.Width != viewport.Width || _usedViewport.Height != viewport.Height)
            {
                _usedViewport = viewport;
                Changed       = true;
            }

            if (BuildRenderTarget(GetColorBufferFormat(context)))
            {
                Changed = true;
            }

            if (Changed)
            {
                try
                {
                    functionOnChange();
                }
                catch (Exception exception)
                {
                    Logger.Error("Render error: {0}/{1}: {2}", OperatorPart.Parent.Parent, OperatorPart.Parent, exception.Message);
                }
                Changed = false;
            }

            context.Image = _renderTargetResource.Texture;
            if (_renderDepthResource != null)
            {
                context.DepthImage = _renderDepthResource.Texture;
            }

            return(context);
        }
コード例 #17
0
ファイル: Shader.cs プロジェクト: perhenrik90/OpenBVE
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="Renderer">A reference to the base renderer</param>
        /// <param name="VertexShaderName">file path and name to vertex shader source</param>
        /// <param name="FragmentShaderName">file path and name to fragment shader source</param>
        /// <param name="IsFromStream"></param>
        public Shader(BaseRenderer Renderer, string VertexShaderName, string FragmentShaderName, bool IsFromStream = false)
        {
            renderer = Renderer;
            int status;

            handle = GL.CreateProgram();

            if (IsFromStream)
            {
                Assembly thisAssembly = Assembly.GetExecutingAssembly();
                using (Stream stream = thisAssembly.GetManifestResourceStream($"LibRender2.{VertexShaderName}.vert"))
                {
                    if (stream != null)
                    {
                        using (StreamReader reader = new StreamReader(stream))
                        {
                            LoadShader(reader.ReadToEnd(), ShaderType.VertexShader);
                        }
                    }
                }
                using (Stream stream = thisAssembly.GetManifestResourceStream($"LibRender2.{FragmentShaderName}.frag"))
                {
                    if (stream != null)
                    {
                        using (StreamReader reader = new StreamReader(stream))
                        {
                            LoadShader(reader.ReadToEnd(), ShaderType.FragmentShader);
                        }
                    }
                }
            }
            else
            {
                LoadShader(File.ReadAllText(VertexShaderName, Encoding.UTF8), ShaderType.VertexShader);
                LoadShader(File.ReadAllText(FragmentShaderName, Encoding.UTF8), ShaderType.FragmentShader);
            }

            GL.AttachShader(handle, vertexShader);
            GL.AttachShader(handle, fragmentShader);

            GL.DeleteShader(vertexShader);
            GL.DeleteShader(fragmentShader);

            GL.LinkProgram(handle);
            GL.GetProgram(handle, GetProgramParameterName.LinkStatus, out status);

            if (status == 0)
            {
                throw new ApplicationException(GL.GetProgramInfoLog(handle));
            }

            VertexLayout  = GetVertexLayout();
            UniformLayout = GetUniformLayout();

            Disposable.Add(this);
        }
コード例 #18
0
 public override void Load(HostInterface host, FileSystem fileSystem, BaseOptions Options, object rendererReference)
 {
     currentHost    = host;
     FileSystem     = fileSystem;
     CurrentOptions = Options;
     if (rendererReference is BaseRenderer)
     {
         Renderer = rendererReference as BaseRenderer;
     }
 }
コード例 #19
0
 public override void Render(BaseRenderer renderer)
 {
     base.Render(renderer);
     renderer.UseIndices  = true;
     renderer.Points      = points;
     renderer.Indices     = indices;
     renderer.ModelMatrix = Transform.CreateTransformMatrix();
     renderer.Transform();
     renderer.DrawLines();
 }
コード例 #20
0
ファイル: BaseCommon.cs プロジェクト: ihatevim/Divine.Plugins
 public BaseCommon()
 {
     UpdateManager.BeginInvoke(() =>
     {
         if (Renderer == null)
         {
             Renderer = new BaseRenderer(this);
         }
     });
 }
コード例 #21
0
        public OperatorPartContext PrepareAndEvalOnChange(OperatorPartContext context)
        {
            if (_effect == null)
            {
                for (int i = 0; i < NumCodes(); ++i)
                {
                    Compile(i);
                }

                if (_effect == null)
                {
                    return(context);
                }

                Changed = true;
            }

            if (_renderer == null)
            {
                _renderer = new BaseRenderer();
            }

            if (_usedViewport.Width != context.Viewport.Width || _usedViewport.Height != context.Viewport.Height)
            {
                _usedViewport = context.Viewport;
                Changed       = true;
            }

            if (BuildRenderTarget())
            {
                Changed = true;
            }

            if (Changed)
            {
                try
                {
                    SetupEffectParams();
                    UpdateOnChange(context);
                }
                catch (Exception exception)
                {
                    Logger.Error("Render error: {0}/{1}: {2}", OperatorPart.Parent.Parent, OperatorPart.Parent, exception.Message);
                }
                Changed = false;
            }

            context.Image = _renderTargetResource.Texture;
            if (_renderDepthResource != null)
            {
                context.DepthImage = _renderDepthResource.Texture;
            }

            return(context);
        }
コード例 #22
0
        public void Draw(BaseRenderer renderer)
        {
            if (numJoints == -1)
            {
                numJoints = _skeleton.Count;
            }
            if (Input.GetKeyDown(Keys.O))
            {
                numJoints--;
                Console.WriteLine("numJoins: " + numJoints);
            }
            if (Input.GetKeyDown(Keys.P))
            {
                numJoints++;
                Console.WriteLine("numJoins: " + numJoints);
            }

            _skeleCopy = new SkeletonJoint[_skeleton.Count];
            _skeleton.CopyTo(_skeleCopy);
            for (int i = 0; i < Math.Min(Math.Max(0, numJoints), _skeleton.Count); i++)
            {
                SkeletonJoint joint = _skeleCopy[i];
                if (joint.ParentId >= 0)
                {
                    SkeletonJoint parentJoint = _skeleCopy[joint.ParentId];

                    Vector3 rotPos = Vector3.Transform(joint.Position, parentJoint.Rotation);
                    joint.Position = parentJoint.Position + rotPos;
                    joint.Rotation = joint.Rotation * parentJoint.Rotation;
                    joint.Rotation.Normalize();
                    _skeleCopy[i] = joint;

                    DebugRenderer.DrawLine(parentJoint.Position, joint.Position, Color.YellowGreen);
                }
            }

            /* Recursively iterate through the J3D scene graph to bind and draw all
             * of the batches within the J3D model. */
            Matrix4[] root = new Matrix4[_file.Joints.GetJointCount()];
            for (int i = 0; i < root.Length; i++)
            {
                root[i] = Matrix4.Identity;
            }

            Matrix4 ident = Matrix4.Identity;

            //WalkModelJointRecursive(ref root, ref ident, _root, 0);
            DrawModelRecursive(ref root, _root, renderer, false);

            if (Selected)
            {
                Matrix4 root2 = Matrix4.Identity;
                //DrawModelRecursive(ref root2, _root, renderer, true);
            }
        }
コード例 #23
0
ファイル: ImageObject.cs プロジェクト: 2max968/Kritzelv2
 public override void Render(BaseRenderer g, float quality = 1, int start = 0, bool simple = false)
 {
     if (Points.Count >= 4 && image != null)
     {
         float x = Points[0].X;
         float y = Points[0].Y;
         float w = Points[2].X - x;
         float h = Points[2].Y - y;
         g.DrawImage(image, new RectangleF(x, y, w, h));
     }
 }
コード例 #24
0
        public override void Draw(BaseRenderer r, PageFormat format, float border, Color mainColor, Color secondaryColor)
        {
            float borderpx = Util.MmToPoint(border);
            float x2       = format.GetPixelSize().Width - borderpx;

            for (float y = border; y < format.Height - border; y += 15)
            {
                float pt = Util.MmToPoint(y);
                r.DrawLine(mainColor, 1, new PointF(borderpx, pt), new PointF(x2, pt));
            }
        }
コード例 #25
0
 public Textbox(BaseRenderer Renderer, OpenGlFont Font, Color128 FontColor, Color128 backgroundColor)
 {
     renderer          = Renderer;
     myFont            = Font;
     myFontColor       = FontColor;
     Border            = 5;
     topLine           = 0;
     BackgroundTexture = null;
     BackgroundColor   = backgroundColor;
     myScrollbarColor  = new Color128(1.0f, 0.69f, 0.0f, 1.0f);
 }
コード例 #26
0
        public Kn5ObjectDialog([CanBeNull] BaseRenderer renderer, [CanBeNull] CarObject car, [CanBeNull] CarSkinObject activeSkin, [NotNull] IKn5 kn5,
                               [NotNull] IKn5RenderableObject renderableObject)
        {
            DataContext = new ViewModel(renderer, car, activeSkin, kn5, renderableObject)
            {
                Close = () => Close()
            };
            InitializeComponent();

            Buttons = new[] { CloseButton };
        }
コード例 #27
0
        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                var renderContext = StageRenderer.RenderContext;
                (Stage as IDrawable)?.OnLostContext(renderContext);
                BaseRenderer.Dispose();
            }

            base.Dispose(disposing);
        }
コード例 #28
0
 public override void Load(HostInterface host, FileSystem fileSystem, BaseOptions Options, object rendererReference)
 {
     currentHost    = host;
     FileSystem     = fileSystem;
     CurrentOptions = Options;
     // ReSharper disable once MergeCastWithTypeCheck
     if (rendererReference is BaseRenderer)
     {
         Renderer = (BaseRenderer)rendererReference;
     }
 }
コード例 #29
0
        public Kn5TextureDialog([CanBeNull] BaseRenderer renderer, [CanBeNull] CarObject car, [CanBeNull] CarSkinObject activeSkin, [NotNull] Kn5 kn5,
                                [NotNull] string textureName, uint materialId, string slotName)
        {
            DataContext = new ViewModel(renderer, car, activeSkin, kn5, textureName, materialId, slotName)
            {
                Close = () => Close()
            };
            InitializeComponent();

            Buttons = new[] { CloseButton };
        }
コード例 #30
0
ファイル: Rectangle.cs プロジェクト: TetsuOtter/OpenBVE
 internal Rectangle(BaseRenderer renderer)
 {
     this.renderer = renderer;
     try
     {
         Shader = new Shader(renderer, "rectangle", "rectangle", true);
     }
     catch
     {
         renderer.ForceLegacyOpenGL = true;
     }
 }