 All right, so I did actually want to add on one more thing. I forgot about this in the last video. So I'm going to add on this bonus video for the top-down camera system. So welcome back. In this particular video, we are going to cover just the really kind of the sneak peek at making a reusable camera system, right? I'm going to extend this more because I'm going to make more camera types. And so what I want to do is I want to create a way for all these camera types to derive similar functionality from a base class, right? So all I'm going to be doing in this video is just setting that system up, that system of scripts up. So you guys can see how you can make this into a modular thing, modular system, right? All right, so let's jump over into Unity. All right, so here we are inside of Unity. And really all that we need to do, all right, is go into scripts here. And I'm going to create a class or a new script called IP base camera. All right, so this is going to be the base functionality that all cameras use. So you'll notice, let me pop this open, you'll notice in the camera or the top-down camera script over here, right? We could easily put some of these values onto the base, like maybe all cameras have targets. I mean, they might not, but it's pretty safe bet that most will because you're using a camera to look at something, right? So that's something we can put on the base. So what we want to do first, just like we did with everything, is put it into a namespace. So IndiePixel.cameras, all right, like so. And I like to set my regions up. One of these days, I will make that template inside of MonoDevelop here. So I don't type this for you guys every single time. It's relaxing for me. Anyways, all right, so let's start moving these things around. So what I'm going to do is actually, instead of deriving from MonoBehavior, I'm going to derive from base camera now. And you're not wanting to pick that up. You're inside of the same namespace. Oh, not inside of the same namespace. There we go. So now it's IP base camera, right? There we go. Now, I mean, this could also be an interface, right? Some of you out there might be saying, oh, this could be an interface type deal. But I want to actually include some functionality inside of the base class as well. So first thing, I'm going to move the target over here, like so. That's good. Now height and distance, it's pretty, when you're thinking about building these types of reusable systems, height and distance is pretty specific to a top-down camera. You might, there are other cameras out there that do have a height and distance, but not all cameras. So I'm going to leave that for this particular camera itself. The other thing I want to do is actually create the base handle camera function here. So let's make our other region here. So we'll say helper methods, like so. And what I want to do is create a protected virtual void handle camera. Now, protected means that all children of this class, so any class that inherits from this can access it. But nothing that doesn't inherit from this. So it protects it, OK? Perfect. And what I can do now is I can actually put this guy in here. So I can cut this out, put this guy in there, and call base.handleCamera. Now what that is doing is it's going to, when it enters in, when this particular instance of this script, when it enters into this method, it's going to hit this first. And because it's part of the base, we're going to run this functionality first. And that way, every other class, we don't have to remember to do that step anymore for all of our classes that extend this base camera. So we're saving our self time, basically. Cool. So the same thing goes for handleCamera over here. So I just want to call handleCamera from start, OK? And then I want to call handleCamera from update in the base, OK? Cool. And now that means we can actually delete these. We don't need those anymore. The only thing that we have to do now really is change this override. So we're changing it from virtual to override. So we're overriding the functionality. We're not making it again from scratch. All right, so that basically makes that work. So if we check this out, we should still have the same functionality for our camera. So we're still working nicely, which is awesome. All right. But now we've started to save ourself a little bit of time because we're not doing this stuff over and over and over again. So the other thing that we can do is put in the onDrawGizmos. That way you're not constantly drawing a sphere for transform. But I'm going to leave it like that for now. So that's really all I wanted to cover. So now we have a way of utilizing this base camera. The other cool aspect of having this type of system set up is that when you're looking for everything that is of your type of cameras, you can just look for all of the IP base cameras, because all the camera types are going to extend or inherit from the base camera script. You'll be able to find all the scripts and then use some reflection or a get type to understand which types of cameras you found, kind of thing. So it's just good practice. I find it a good practice to get into. I use it all the time. So thanks so much, guys. That was what I wanted to show. Hopefully you gained some cool ideas or some knowledge from all this. Do let me know. And I will be happy to respond if you have any questions or anything like that.