From 653a7de56216e48da78394f68b3017a3cbf3bc75 Mon Sep 17 00:00:00 2001 From: Recrown Date: Mon, 25 Feb 2019 21:40:07 -0600 Subject: [PATCH] Integrating the functioning camera and rectangle renderer. --- References/RecrownedAthenaeum.dll | Bin 47616 -> 48128 bytes References/RecrownedAthenaeum.xml | 55 +++++++++++++++--- .../ReflectedHorizontalVisualizer.cs | 15 +++-- RhythmBullet/Screens/MainMenu/MainPage.cs | 10 +--- 4 files changed, 54 insertions(+), 26 deletions(-) diff --git a/References/RecrownedAthenaeum.dll b/References/RecrownedAthenaeum.dll index 1ec75b177c234646ce2b9b019d6ebb9686201e2a..37272de9c191106d062e7e012d8b0c0a694921cd 100644 GIT binary patch literal 48128 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 H*aCk6VskH) literal 47616 zcmd443w&HvwLiYkIWuP-NhX=et4)(ODYQ(}r1k|u0o(LRpzjwg6x(SsZHJ^e>CA+- zOoNGH`3(VIN8RH$;NbFPh+a5aqf~8ja!}0`Hn}4U{KWeJ zkSA?*^#&%NMx{1PN@vm?z(lu~kYGnWfS;nzEOghTbh6t4BXw2EwSm`}LX$q7?I!b& zO4=14>Sijxx*Ret>J|w?|KA0p%>h*IYu^WEb9h));rNr8wzVmq%y&oKr?!hCVgM)ubE1d&{_5>y~jN(*2Si>APiI zoyfQ)-gE>ZV?l5J5^ARzpMl*+#g75W!N3hW;{dF93`*a|9BHSezUey4KWS%6NqR5T zI6^yfu&z%xcDkVMa*wVSgv@bNDh@F5*kZavrkd;mV6S_^zrG*KP z<)97W=G~_B#1IW#SMWI#$uZWfjhC=%zjWkQ*3t`XGv2}i|7Oz`Fko$`m7HqSWK%^w8`g-B0|7H$j?5RKo-z=}Fho=+q|hl!%{SR4b_;mW2)nta zx!H`PYwW5I4Dwe_wiMdSXb?4X=q+E^E(uuiNf4ODI511iU8DvBaj;Ab+kt7nK3ciS zM=OWc!7je$srs422=z6epb@KIFfR)OwJ1xl8D>pCMzPO~Ljk+_70a1|%F-Q{>UE|f z)lzE3r{Nh#`zJQ1GoV}X8Ys1%u&!D7{QEVCJ1Z)HO&ufIEI}$iKH0-{S?q# zIoYokK_XOv?O8HxxA^VaNr*Xg3>zbh)c8l(UK5yTloR!G)HU9UoH)FGDC;HW2bDQ^ ziO)G1m9Zd#tB-wZe^A-ajOJ03ZFLQL6wx!9`4KY0zW6C%c1{H-k>FTbQyH2#Iv9wC zu5&&Hsw8HThhr-ms$EkViiQH8O-=oepp_eBbsY0?h@4m!4COxIQATEFfnFK*N5k

u+S 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 mT`wng%_*f6iks2eY6E + +

+ The basic effect that contains the transformations. + + Constructs 3D camera with an orthographic projection matrix with dimensions of graphics devices viewport. All changes to matrices should have apply called after changes. @@ -60,10 +65,11 @@ Applies the changes to the fields and properties of the camera. - + - Centers the camera to middle of width and height of game window. + Moves camera by the given amount. + A that contains how much in each direction to move. @@ -75,12 +81,23 @@ The 2D position. + + + Places camera in the center given the corner position. + + A 2D camera from the generic . The graphics device to use if not using the one in . + + + Applies for 2D. + Sets where the camera is looking for the view matrix to the position of the camera. + + Lerps to the given position. @@ -89,6 +106,13 @@ The target position to lerp to. Time between this frame and the previous frame. + + + Moves the camera. + Apply needs to be called. + + Magnitude of how much to move per axis. + Wrapper for the content manager that helps with controlling it by adding automated multithreaded content loading. @@ -742,24 +766,36 @@ The used. Needs to be disposed. - + Creates a rectangle renderer with the given . - + Camera to use for . Default will use . + Graphics device to use. Default will use . + + + + Disposes the rectangle renderer. + + + + + Overridable for dispose. + + True when its a player calling the dispose. - Begins the render batch. + Begins a batch for rectangles. - Whether or not to fill the rectangle. + Whether or not this batch should be filled rectangles. Ends the batch. - + Draws a basic rectangle given bottom left and top right. @@ -775,9 +811,9 @@ A batch used to draw primitive shapes by batching together vertices. - + - The maximum vertices expected. The further off this expectancy is from the true value, the less efficient. + Amount of primitives. @@ -809,6 +845,7 @@ Flushes the batch. Automatically called if required if using or . Otherwise, manual flushing is required. + is used if not zero. Is reset to zero every flush. diff --git a/RhythmBullet/Audio/Visualizer/ReflectedHorizontalVisualizer.cs b/RhythmBullet/Audio/Visualizer/ReflectedHorizontalVisualizer.cs index d084ccc..01e77dd 100644 --- a/RhythmBullet/Audio/Visualizer/ReflectedHorizontalVisualizer.cs +++ b/RhythmBullet/Audio/Visualizer/ReflectedHorizontalVisualizer.cs @@ -10,8 +10,7 @@ namespace RhythmBullet.Audio.Visualizer internal class HorizontalVisualizer : UIModule, IDisposable { bool disposed; - private PrimitiveBatch primitiveBatch; - private RectangleRenderer renderer; + private RectangleRenderer rectangleRenderer; private const int BAR_COUNT = 70; private const int SMOOTH_RANGE = 3; private readonly int binsPerBar; @@ -29,8 +28,7 @@ namespace RhythmBullet.Audio.Visualizer binsPerBar = tsp.GetCurrentSpectrum().Length / BAR_COUNT; barValue = new int[BAR_COUNT]; - primitiveBatch = new PrimitiveBatch(camera2D); - renderer = new RectangleRenderer(primitiveBatch); + rectangleRenderer = new RectangleRenderer(); } public override void Update(GameTime gameTime) @@ -44,18 +42,19 @@ namespace RhythmBullet.Audio.Visualizer public override void Draw(SpriteBatch batch) { if (disposed) throw new ObjectDisposedException(this.Name); + rectangleRenderer.Begin(true); for (int i = 0; i < BAR_COUNT; i++) { bar.X = (i * (bar.Width + spaceBetweenBars)) + bounds.X; bar.Y = bounds.Y; - renderer.Begin(true); bar.Height = barValue[i]; - renderer.DrawRectangle(bar.X, bar.Y, bar.Width, bar.Height, color); + rectangleRenderer.Draw(bar.X, bar.Y, bar.Width, bar.Height, color); bar.Height = -barValue[BAR_COUNT - i - 1]; - renderer.DrawRectangle(bar.X, bar.Y, bar.Width, bar.Height, color); + rectangleRenderer.Draw(bar.X, bar.Y, bar.Width, bar.Height, color); } + rectangleRenderer.End(); base.Draw(batch); } @@ -112,7 +111,7 @@ namespace RhythmBullet.Audio.Visualizer { if (disposing && !disposed) { - primitiveBatch.Dispose(); + rectangleRenderer.Dispose(); } disposed = true; } diff --git a/RhythmBullet/Screens/MainMenu/MainPage.cs b/RhythmBullet/Screens/MainMenu/MainPage.cs index d454913..d732602 100644 --- a/RhythmBullet/Screens/MainMenu/MainPage.cs +++ b/RhythmBullet/Screens/MainMenu/MainPage.cs @@ -16,10 +16,9 @@ namespace RhythmBullet.Screens.MainMenu TextButton playButton; TextButton quitButton; - PrimitiveBatch primitiveBatch = new PrimitiveBatch(); - internal MainPage() : base(0, 0) { + Debugging = true; } protected override void Initialize(ContentManagerController assets, ISkin skin) @@ -39,9 +38,6 @@ namespace RhythmBullet.Screens.MainMenu public override void ApplySize(int width, int height) { title.Scale = (width - 40) / title.Texture.Width; - title.CenterOrigin(); - title.bounds.X = (int)(width / 2f); - title.bounds.Y = (int)(height / 2f); base.ApplySize(width, height); } @@ -49,10 +45,6 @@ namespace RhythmBullet.Screens.MainMenu public override void Draw(SpriteBatch batch) { base.Draw(batch); - primitiveBatch.Begin(PrimitiveType.LineList); - primitiveBatch.AddVertex(new Vector2(20, 20), Color.Red); - primitiveBatch.AddVertex(new Vector2(50, 60), Color.Red); - primitiveBatch.End(); } } }