In the Roblox world, there is a thing called enumeration. Enumeration or enum can be described as the data type that can take one of the set of values. For instance, the SurfaceType enum is used in order to select what type of surface a BasePart has on a certain side that can take the values “Glue”, “Hinge”, “Inlet” or a few more. Those value act as constants in place of using ambiguous numbers or strings to set a value.
Talking about enumeration or enum, there is a thing called Roblox Renderpriority. Apparently, the Roblox Renderpriority enum has 5 items. The first one is called First. The value of this one is 0. This one should run first. The second one is Input. The value of this one is 100. This one should run second. The third one is Camera. The value of this one is 200. This one should run after Input. The fourth one is Character. The value of this one is 300. This one should run after Camera. The last one is Last. The value of this one is 2000. This one should run as last, right after Character.
Roblox Renderpriority consist of the list of standard reserved values in BindToRenderStep. In order to prevent the gameplay from looking choopy to players, the Roblxo graphics engine will redraw or render what players see around 60 times every single second. When the engine renders, every graphical components of the game such as moving parts or particle effects are updated. In fact, some game systems rely on knowing exactly when this rendering happens. For instance, it is important for any camera code to finish running before the game renders, as the position of the camera will determine what parts of the place should be drawn at all. You have to know that the Roblox engine reserves a small bit of time before rendering happens called the render step.
The BindToRenderStep function binds the custom function to be named at the certain time during the render step. There are three main arguments for BindToRenderStep. Those are name, priority and what function to call. The name parameter can be described as the label for the binding and can be used with UnbindFromRenderStep if the binding is no longer needed. As for the priority, it is the integer and can determine when during the render step to call the custom function. The lower this number means the sooner the custom function will be called. If the two binding share the same priority, the Roblox engine will randomly choose one to run first. the default Roblox controls scripts run with player input 100 and camera controls 200. For convenience, you can use the RenderPriority to determine the integer value to set the binding. For instance, if you want to make the binding right before the default camera update, you can just simply subtract 1 from the camera priority level. When you are using Enum.RenderPriority, do not forget to use .Value at the end of the enum that you want.