1"use strict";(self.webpackChunkmonogame_extended_website=self.webpackChunkmonogame_extended_website||[]).push([[5506],{1274:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>d,contentTitle:()=>r,default:()=>h,frontMatter:()=>a,metadata:()=>s,toc:()=>l});var n=i(4848),o=i(8453);const a={slug:"version-5-1-0",title:"Version 5.1.0 Released",authors:"aris",tags:["updates","releases","five-oh"],enableComments:!0},r=void 0,s={permalink:"/blog/version-5-1-0",editUrl:"https://github.com/monogame-extended/monogame-extended.github.io/tree/develop/blog/2025-09-19/version-5.1.0/version-5.1.0.md",source:"@site/blog/2025-09-19/version-5.1.0/version-5.1.0.md",title:"Version 5.1.0 Released",description:"Hi everyone,",date:"2025-09-19T00:00:00.000Z",tags:[{inline:!1,label:"Updates",permalink:"/blog/tags/updates",description:"Updates to the MonoGame.Extended library."},{inline:!1,label:"Releases",permalink:"/blog/tags/releases",description:"New releases of MonoGame.Extended."},{inline:!0,label:"five-oh",permalink:"/blog/tags/five-oh"}],readingTime:2.65,hasTruncateMarker:!1,authors:[{name:"Christopher Whitley (AristurtleDev)",title:"MonoGame.Extended Maintainer",url:"https://github.com/aristurtledev",imageURL:"https://github.com/aristurtledev.png",key:"aris"}],frontMatter:{slug:"version-5-1-0",title:"Version 5.1.0 Released",authors:"aris",tags:["updates","releases","five-oh"],enableComments:!0},unlisted:!1,prevItem:{title:"Version 5.1.1 Released - Ember Is Here!",permalink:"/blog/version-5-1-1"},nextItem:{title:"The Next Chapter for MonoGame Extended",permalink:"/blog/the-next-chapter-for-monogame-extended"}},d={authorsImageUrls:[void 0]},l=[{value:"What's Changed",id:"whats-changed",level:2},{value:"Load Ember Particle Effects From File/Stream",id:"load-ember-particle-effects-from-filestream",level:3},{value:"Modifier Frequency",id:"modifier-frequency",level:3},{value:"Line Profile Radiation Modes",id:"line-profile-radiation-modes",level:3},{value:"Vortex Modifier",id:"vortex-modifier",level:3},{value:"Conclusion",id:"conclusion",level:2}];function c(e){const t={a:"a",code:"code",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,o.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.p,{children:"Hi everyone,"}),"\n",(0,n.jsx)(t.p,{children:"Quick update that MonoGame Extended version 5.1.0 has been released. This release brings some updates to the particle system refactor that was done as part of the 5.0.0 release. After working through through updating the particle documentation, I noticed that some of the implementations seemed off or didn't work as expected, so in tandem with documenting, I also did some updates."}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["GitHub: ",(0,n.jsx)(t.a,{href:"https://github.com/monogame-extended/monogame-extended",children:"https://github.com/monogame-extended/monogame-extended"})]}),"\n",(0,n.jsxs)(t.li,{children:["Release Notes: ",(0,n.jsx)(t.a,{href:"https://github.com/MonoGame-Extended/Monogame-Extended/releases/tag/v5.1.0",children:"https://github.com/MonoGame-Extended/Monogame-Extended/releases/tag/v5.1.0"})]}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"whats-changed",children:"What's Changed"}),"\n",(0,n.jsx)(t.h3,{id:"load-ember-particle-effects-from-filestream",children:"Load Ember Particle Effects From File/Stream"}),"\n",(0,n.jsxs)(t.p,{children:["The ",(0,n.jsx)(t.code,{children:"ParticleEffect.FromFile"})," and ",(0,n.jsx)(t.code,{children:"ParticleEffect.FromStream"})," methods have been implemented. This is in preparation for the full release of the Ember Particle Editor that will be coming very soon to visually create particle effects."]}),"\n",(0,n.jsxs)(t.p,{children:["Reference: ",(0,n.jsx)(t.a,{href:"https://github.com/MonoGame-Extended/Monogame-Extended/pull/1023",children:"https://github.com/MonoGame-Extended/Monogame-Extended/pull/1023"})]}),"\n",(0,n.jsx)(t.h3,{id:"modifier-frequency",children:"Modifier Frequency"}),"\n",(0,n.jsxs)(t.p,{children:["There was a bug in the core implementation of the modifiers where the ",(0,n.jsx)(t.code,{children:"Frequency"})," property was not actually being used. The purpose of this property is to control the frequency in which the modifier updates particles so you can fine tune the system in performance heavy scenarios. This was a property that was in the original Mercury Particle Engine, but when that was ported over to MonoGame Extended, it was left unused."]}),"\n",(0,n.jsxs)(t.p,{children:["Reference: ",(0,n.jsx)(t.a,{href:"https://github.com/MonoGame-Extended/Monogame-Extended/pull/1025",children:"https://github.com/MonoGame-Extended/Monogame-Extended/pull/1025"})]}),"\n",(0,n.jsx)(t.h3,{id:"line-profile-radiation-modes",children:"Line Profile Radiation Modes"}),"\n",(0,n.jsxs)(t.p,{children:["When using the ",(0,n.jsx)(t.code,{children:"LineProfile"})," in the particle system, there is now a ",(0,n.jsx)(t.code,{children:"Radiation"})," property that can be set. This property allows you as the user to control how particles emissions radiate from the line itself. The default behavior before this was that particles would emit with a randomly chosen velocity from the line. This is still the default behavior for backwards compatability and is what happens when using the ",(0,n.jsx)(t.code,{children:"LineRadiation.None"})," value. See the table below for what each radiation mode does"]}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Line Radiation"}),(0,n.jsx)(t.th,{children:"Description"}),(0,n.jsx)(t.th,{children:"Visual Effect"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.code,{children:"LineRadiation.None"})}),(0,n.jsx)(t.td,{children:"Random directions regardless of line angle"}),(0,n.jsx)(t.td,{children:(0,n.jsx)(t.img,{alt:"LineRadiation.None Example",src:i(1782).A+"",width:"7
177",height:"384"})})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.code,{children:"LineRadiation.Directional"})}),(0,n.jsx)(t.td,{children:"All particles move in the specified direction"}),(0,n.jsx)(t.td,{children:(0,n.jsx)(t.img,{alt:"LineRadiation.Directional Example",src:i(2768).A+"",width:"777",height:"384"})})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.code,{children:"LineRadiation.PerpendicularUp"})}),(0,n.jsx)(t.td,{children:"Particles move perpendicular upward from line"}),(0,n.jsx)(t.td,{children:(0,n.jsx)(t.img,{alt:"LineRadiation.PerpendicularUp Example",src:i(7895).A+"",width:"777",height:"384"})})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.code,{children:"LineRadiation.PerpendicularDown"})}),(0,n.jsx)(t.td,{children:"Particles move perpendicular downward from line"}),(0,n.jsx)(t.td,{children:(0,n.jsx)(t.img,{alt:"LineRadiation.PerpendicularDown Example",src:i(6744).A+"",width:"777",height:"384"})})]})]})]}),"\n",(0,n.jsxs)(t.p,{children:["Reference: ",(0,n.jsx)(t.a,{href:"https://github.com/MonoGame-Extended/Monogame-Extended/pull/1027",children:"https://github.com/MonoGame-Extended/Monogame-Extended/pull/1027"})]}),"\n",(0,n.jsx)(t.h3,{id:"vortex-modifier",children:"Vortex Modifier"}),"\n",(0,n.jsxs)(t.p,{children:["While documenting the various modifiers, I noticed something strange about the ",(0,n.jsx)(t.code,{children:"VortexModifier"}),"....it didn't actually create or simulate any type of vortex. Instead it acted as a gravity well, or an acctractor that just pulled particles into its center mass and expelled them out. We can't have this, if we're going to call it a ",(0,n.jsx)(t.code,{children:"VortexModifier"})," it needs to create a vortex. So this modifier was updated to do what it says now"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"VortexModifier Example",src:i(8953).A+"",width:"781",height:"414"})}),"\n",(0,n.jsxs)(t.p,{children:["Reference: ",(0,n.jsx)(t.a,{href:"https://github.com/MonoGame-Extended/Monogame-Extended/pull/1031",children:"https://github.com/MonoGame-Extended/Monogame-Extended/pull/1031"})]}),"\n",(0,n.jsx)(t.h2,{id:"conclusion",children:"Conclusion"}),"\n",(0,n.jsxs)(t.p,{children:["With this release done and the documentation completed for the particle system, I can now focus on finishing up the documentation for the Ember Particle Editor to so we can do an official release of it. If you want to read the new documentation on particles, you can start with the ",(0,n.jsx)(t.a,{href:"../../../docs/features/particles/quick_start",children:"Quick Start Guide"}),"."]}),"\n",(0,n.jsx)(t.p,{children:"Once Ember documentation is completed and a full release made, the particle system will go into maintenance mode while focus is shifted to work on tne tile map system in MonoGame Extended. Hope you all are looking forward to that."}),"\n",(0,n.jsx)(t.p,{children:"Happy Coding,"}),"\n",(0,n.jsxs)(t.p,{children:["- \u2764\ufe0f Chris Whitley (",(0,n.jsx)(t.a,{href:"https://github.com/aristurtledev",children:"AristurtleDev"}),")"]})]})}function h(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(c,{...e})}):c(e)}},2768:(e,t,i)=>{i.d(t,{A:()=>n});const n=i.p+"assets/images/line_directional-ae7a45efd7ba1f56c9abdccc4b428014.gif"},1782:(e,t,i)=>{i.d(t,{A:()=>n});const n=i.p+"assets/images/line_none-251c579b37d31de40e8d297011b60008.gif"},6744:(e,t,i)=>{i.d(t,{A:()=>n});const n=i.p+"assets/images/line_perpendiculardown-9e21ee7b14643817832dd90e1e8f6b1e.gif"},7895:(e,t,i)=>{i.d(t,{A:()=>n});const n=i.p+"assets/images/line_perpendicularup-d5c6fcd535fa0a90b01ef6e3cc7522be.gif"},8953:(e,t,i)=>{i.d(t,{A:()=>n});const n=i.p+"assets/images/vortex_modifier-0e15d5412e4cc1b5bf80d737055ef122.gif"},8453:(e,t,i)=>{i.d(t,{R:()=>r,x:()=>s});var n=i(6540);const o={},a=n.createContext(o);function r(e){const t=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),n.createElement(a.Provider,{value:t},e.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.