Vesper 0.5.1
Vesper is short form for the Latin word for "Bat", as Vesper is designed to be small, lightweight, and easily handle things like particles and flocking behaviors in accordance with the nature of bats. \n It is meant to be a particle simulation, VFX editor, and CAN be used secondarily as a small game engine.
GitHub | Vesper Updates | Creator
Loading...
Searching...
No Matches
Color.h
Go to the documentation of this file.
1#pragma once
2
3#include <glm/glm.hpp>
4
5/// @file Color.h
6/// @author Damon S. Green II
7/// @brief Provides commonly used colors and color manipulation functions.
8
9namespace Vesper {
10
11 /// @namespace Vesper::Color
12 /// @brief Provides commonly used colors and color manipulation functions.
13 namespace Color {
14
15 /// @brief Returns a vec4 representing the color white.
16 static glm::vec4 White() { return glm::vec4(1.0f, 1.0f, 1.0f, 1.0f); }
17 /// @brief Returns a vec4 representing the color black.
18 static glm::vec4 Black() { return glm::vec4(0.0f, 0.0f, 0.0f, 1.0f); }
19 /// @brief Returns a vec4 representing the color gray.
20 static glm::vec4 Gray() { return glm::vec4(0.5f, 0.5f, 0.5f, 1.0f); }
21
22 /// @brief Returns a vec4 representing the color red.
23 static glm::vec4 Red() { return glm::vec4(1.0f, 0.0f, 0.0f, 1.0f); }
24 /// @brief Returns a vec4 representing the color orange.
25 static glm::vec4 Orange() { return glm::vec4(1.0f, 0.5f, 0.0f, 1.0f); }
26 /// @brief Returns a vec4 representing the color yellow.
27 static glm::vec4 Yellow() { return glm::vec4(1.0f, 1.0f, 0.0f, 1.0f); }
28 /// @brief Returns a vec4 representing the color green.
29 static glm::vec4 Green() { return glm::vec4(0.0f, 1.0f, 0.0f, 1.0f); }
30 /// @brief Returns a vec4 representing the color blue.
31 static glm::vec4 Blue() { return glm::vec4(0.0f, 0.0f, 1.0f, 1.0f); }
32 /// @brief Returns a vec4 representing the color indigo.
33 static glm::vec4 Indigo() { return glm::vec4(0.29f, 0.0f, 0.51f, 1.0f); }
34 /// @brief Returns a vec4 representing the color purple.
35 static glm::vec4 Purple() { return glm::vec4(0.5f, 0.0f, 0.5f, 1.0f); }
36
37 /// @brief Returns a vec4 representing the color cyan.
38 static glm::vec4 Cyan() { return glm::vec4(0.0f, 1.0f, 1.0f, 1.0f); }
39 /// @brief Returns a vec4 representing the color magenta.
40 static glm::vec4 Magenta() { return glm::vec4(1.0f, 0.0f, 1.0f, 1.0f); }
41 /// @brief Returns a vec4 representing the color pink.
42 static glm::vec4 Pink() { return glm::vec4(1.0f, 0.75f, 0.8f, 1.0f); }
43 /// @brief Returns a vec4 representing the color brown.
44 static glm::vec4 Brown() { return glm::vec4(0.6f, 0.4f, 0.2f, 1.0f); }
45 /// @brief Returns a vec4 representing a fully transparent color.
46 static glm::vec4 Transparent() { return glm::vec4(0.0f, 0.0f, 0.0f, 0.0f); }
47
48 /// @brief Strips the alpha component from the given color, setting it to 1.0 (fully opaque).
49 static glm::vec4 StripAlpha(const glm::vec4& color) { return glm::vec4(color.x, color.y, color.z, 1.0f); }
50 /// @brief Sets the alpha component of the given color to the specified value.
51 static glm::vec4 SetAlpha(const glm::vec4& color, float alpha = 0.0f) { return glm::vec4(color.x, color.y, color.z, alpha);}
52 }
53
54}
#define VZ_CORE_ASSERT(x,...)
Definition Asserts.h:20
#define VZ_BIND_EVENT_FN(fn)
Binds a member function as an event handler.
Definition Defines_Macros.h:17
#define EVENT_CLASS_TYPE(type)
Macro to define event type in event subclasses.
Definition Defines_Macros.h:25
#define EVENT_CLASS_CATEGORY(category)
Macro to define event category in event subclasses.
Definition Defines_Macros.h:31
#define BIT(x)
Macro to shift 1 by x positions to create a bitmask.
Definition Defines_Macros.h:13
static const uint32_t s_MapHeight
Definition EditorLayer.cpp:13
static const char * s_MapTiles
Definition EditorLayer.cpp:14
static const uint32_t s_MapWidth
Definition EditorLayer.cpp:12
#define VZ_PROFILE
Definition Instrumentor.h:211
#define VZ_FUNC_SIG
Definition Instrumentor.h:231
#define VZ_PROFILE_SCOPE_LINE2(name, line)
Definition Instrumentor.h:236
#define VZ_PROFILE_FUNCTION()
Definition Instrumentor.h:240
#define VZ_PROFILE_SCOPE(name)
Definition Instrumentor.h:239
#define VZ_PROFILE_SCOPE_LINE(name, line)
Definition Instrumentor.h:238
#define VZ_CORE_INFO(...)
info: general information about application flow
Definition Log.h:37
#define VZ_CORE_ERROR(...)
error: indicates an error that has occurred
Definition Log.h:41
Event for registering application render.
Definition ApplicationEvent.h:82
AppRenderEvent()
Definition ApplicationEvent.h:84
Event for registering application tick.
Definition ApplicationEvent.h:60
AppTickEvent()
Definition ApplicationEvent.h:62
Event for registering application update.
Definition ApplicationEvent.h:71
AppUpdateEvent()
Definition ApplicationEvent.h:73
The core application class that manages the main loop, window, layers, and event handling.
Definition Application.h:35
static Application * s_Instance
Definition Application.h:92
void OnEvent(Event &e)
Handles incoming events and dispatches them to the appropriate handlers.
Definition Application.cpp:60
float m_LastFrameTime
Time of the last frame, used for calculating timestep.
Definition Application.h:89
bool OnWindowResize(WindowResizeEvent &e)
Event handler for window resize events.
Definition Application.cpp:118
static Application & Get()
Retrieves the singleton instance of the Application.
Definition Application.h:67
ImGuiLayer * m_ImGuiLayer
ImGui layer for rendering GUI elements.
Definition Application.h:81
bool m_Running
Flag indicating whether the application is running.
Definition Application.h:83
bool OnWindowClose(WindowCloseEvent &e)
Event handler for window close events.
Definition Application.cpp:111
ImGuiLayer * GetImGuiLayer()
Retrieves the ImGui layer.
Definition Application.h:64
void Run()
Starts the main application loop.
Definition Application.cpp:77
void PushLayer(Layer *layer)
Adds a layer to the application layer stack.
Definition Application.cpp:41
Application(const std::string &name="")
Constructs the Application with the given name.
Definition Application.cpp:17
LayerStack m_LayerStack
Stack of layers managed by the application.
Definition Application.h:87
void PushOverlay(Layer *overlay)
Adds an overlay layer to the application layer stack.
Definition Application.cpp:48
virtual ~Application()
Definition Application.cpp:37
Scope< Window > m_Window
Scoped pointer to the applications underlying window.
Definition Application.h:79
bool m_Minimized
Flag indicating whether the application is minimized.
Definition Application.h:85
void Close()
Closes the application.
Definition Application.cpp:55
Window & GetWindow()
Retrieves the application window.
Definition Application.h:70
Represents the layout of a buffer, consisting of multiple BufferElements.
Definition Buffer.h:84
uint32_t m_Stride
Definition Buffer.h:125
const std::vector< BufferElement > & GetElements() const
Returns the list of BufferElements in the layout.
Definition Buffer.h:100
uint32_t GetStride() const
Returns the stride (total size in bytes) of the buffer layout.
Definition Buffer.h:102
BufferLayout(const std::initializer_list< BufferElement > &elements)
Constructs a BufferLayout with the given list of BufferElements.
Definition Buffer.h:92
BufferLayout()
Definition Buffer.h:86
Definition EditorCamera.h:13
Definition EditorLayer.h:14
glm::vec4 m_SpecialQuadColor
Definition EditorLayer.h:98
bool m_ViewportFocused
Definition EditorLayer.h:44
float m_RotationSnap
Definition EditorLayer.h:51
std::unordered_map< char, Ref< SubTexture2D > > s_TextureMap
Definition EditorLayer.h:101
Ref< Shader > m_FlatColorShader
Definition EditorLayer.h:60
void OpenScene()
Definition EditorLayer.cpp:728
glm::vec4 m_TextureTintColor1
Definition EditorLayer.h:94
float lastFrameTime
Definition EditorLayer.h:55
ParticleProps m_ParticleProps
Definition EditorLayer.h:87
glm::vec4 m_ClearColor
Definition EditorLayer.h:97
SceneState
Definition EditorLayer.h:39
@ Simulate
Definition EditorLayer.h:40
@ Edit
Definition EditorLayer.h:40
@ Play
Definition EditorLayer.h:40
bool scene3
Definition EditorLayer.h:90
Ref< SubTexture2D > m_SubTextureSmoke
Definition EditorLayer.h:71
Ref< Texture2D > m_SpriteSheetCursedLands
Definition EditorLayer.h:68
int m_GizmoType
Definition EditorLayer.h:50
bool scene4
Definition EditorLayer.h:90
ParticleSystem m_ParticleSystem
Definition EditorLayer.h:86
EditorLayer()
Definition EditorLayer.cpp:37
EditorCamera m_EditorCamera
Definition EditorLayer.h:79
Ref< Texture2D > m_SpriteSheetCrystals
Definition EditorLayer.h:66
float m_ScaleSnap
Definition EditorLayer.h:51
void NewScene()
Definition EditorLayer.cpp:721
float m_TranslationSnap
Definition EditorLayer.h:51
glm::vec4 m_SquareColor
Definition EditorLayer.h:93
glm::vec2 m_ViewportSize
Definition EditorLayer.h:45
bool OnKeyPressed(KeyPressedEvent &e)
Definition EditorLayer.cpp:669
bool m_PrimaryCamera
Definition EditorLayer.h:47
float m_squareRotation
Definition EditorLayer.h:82
OrthographicCameraController m_CameraController
Definition EditorLayer.h:53
Ref< Scene > m_ActiveScene
Definition EditorLayer.h:35
glm::vec4 m_TextureTintColor2
Definition EditorLayer.h:95
Ref< SubTexture2D > m_SubTextureTown
Definition EditorLayer.h:72
bool m_UseSpecialQuadColor
Definition EditorLayer.h:99
Ref< Scene > m_EditorScene
Definition EditorLayer.h:36
glm::vec4 m_BackgroundColor
Definition EditorLayer.h:96
Ref< Texture2D > m_CheckerboardTexture
Definition EditorLayer.h:61
Entity m_CameraEntity
Definition EditorLayer.h:48
Ref< VertexArray > m_SquareVA
Definition EditorLayer.h:59
virtual void OnEvent(Event &e) override
Called when an event is dispatched to the layer.
Definition EditorLayer.cpp:657
int ParticleEmitCount
Definition EditorLayer.h:84
SceneState m_SceneState
Definition EditorLayer.h:42
virtual void OnUpdate(Timestep ts) override
Called every frame to update the layer with the given timestep.
Definition EditorLayer.cpp:234
float m_textureScale
Definition EditorLayer.h:81
SceneHierarchyPanel m_SceneHierarchyPanel
Definition EditorLayer.h:33
Ref< Texture2D > m_SpriteSheetRocks
Definition EditorLayer.h:67
Ref< SubTexture2D > m_SubTextureFire
Definition EditorLayer.h:70
float m_specialQuadRotation
Definition EditorLayer.h:83
virtual void OnAttach() override
Called when the layer is attached to the application.
Definition EditorLayer.cpp:45
bool scene1
Definition EditorLayer.h:90
void SaveSceneAs()
Definition EditorLayer.cpp:744
bool useEntityScene
Definition EditorLayer.h:91
Entity m_SmokeEntity
Definition EditorLayer.h:56
bool scene2
Definition EditorLayer.h:90
Entity m_FireEntity
Definition EditorLayer.h:56
Ref< Framebuffer > m_Framebuffer
Definition EditorLayer.h:77
bool m_ViewportHovered
Definition EditorLayer.h:44
Ref< Texture2D > m_SpriteSheetFire
Definition EditorLayer.h:63
virtual ~EditorLayer()=default
Ref< Texture2D > m_SpriteSheetSmoke
Definition EditorLayer.h:64
virtual void OnDetach() override
Called when the layer is detached from the application.
Definition EditorLayer.cpp:229
virtual void OnImGuiRender() override
Called when the layer should render its ImGui components.
Definition EditorLayer.cpp:425
Ref< Texture2D > m_SpriteSheetTown
Definition EditorLayer.h:65
void ResetScene()
Definition EditorLayer.cpp:755
Represents an entity in a scene.
Definition Entity.h:14
Stack-based templated event dispatcher.
Definition Event.h:68
EventDispatcher(Event &event)
Construct an EventDispatcher for a specific event.
Definition Event.h:78
Event & m_Event
The event to be dispatched.
Definition Event.h:100
bool Dispatch(EventFn< T > func)
Dispatch the event to the appropriate handler if the types match.
Definition Event.h:89
Abstract base class for all events.
Definition Event.h:37
bool IsInCategory(EventCategory category)
Check if the event is in a specific category.
Definition Event.h:55
virtual ~Event()=default
virtual int GetCategoryFlags() const =0
Get the category flags of the event.
virtual EventType GetEventType() const =0
Get the type of the event.
virtual std::string ToString() const
Convert the event to a string representation.
Definition Event.h:52
bool Handled
Indicates whether the event has been handled.
Definition Event.h:62
virtual const char * GetName() const =0
Get the name of the event.
Cross-platform file dialog utilities.
Definition PlatformUtils.h:10
static std::string SaveFile(const char *filter)
Opens a file dialog to select a location to save a file.
Definition WindowsPlatformUtils.cpp:29
static std::string OpenFile(const char *filter)
Opens a file dialog to select a file to open.
Definition WindowsPlatformUtils.cpp:12
Definition PlatformUtils.h:28
static void Initialize()
Definition WindowsPlatformUtils.cpp:66
static std::string m_RootEditorDirectory
Definition PlatformUtils.h:38
static std::string m_ProjectsDirectory
Definition PlatformUtils.h:41
static std::string GetCurrentWorkingDirectory()
Definition WindowsPlatformUtils.cpp:97
static std::string m_AssetsDirectory
Definition PlatformUtils.h:40
static std::string m_ResourcesDirectory
Definition PlatformUtils.h:39
static std::string GetTravelingUpPath(const std::string &path)
Definition WindowsPlatformUtils.cpp:112
static std::string m_RootEngineDirectory
Definition PlatformUtils.h:37
static std::string m_CurrentProjectDirectory
Definition PlatformUtils.h:42
static std::string GetAbsolutePath(const std::string &relativePath)
Definition WindowsPlatformUtils.cpp:104
static bool m_Initialized
Definition PlatformUtils.h:36
static bool IsInitialized()
Definition PlatformUtils.h:34
Definition ImGuiLayer.h:13
~ImGuiLayer()
Definition ImGuiLayer.cpp:25
virtual void OnEvent(Event &e) override
Called when an event is dispatched to the layer.
Definition ImGuiLayer.cpp:86
ImGuiLayer()
Definition ImGuiLayer.cpp:21
virtual void Begin()
Definition ImGuiLayer.cpp:95
virtual void OnDetach() override
Called when the layer is detached from the application.
Definition ImGuiLayer.cpp:69
virtual void OnImGuiRender() override
Called when the layer should render its ImGui components.
Definition ImGuiLayer.cpp:81
virtual void SetDarkThemeColors()
Definition ImGuiLayer.cpp:120
float m_Time
Definition ImGuiLayer.h:30
bool m_BlockEvents
Definition ImGuiLayer.h:29
virtual void End()
Definition ImGuiLayer.cpp:104
virtual void OnAttach() override
Called when the layer is attached to the application.
Definition ImGuiLayer.cpp:29
virtual void SetBlockEvents(bool block)
Definition ImGuiLayer.h:26
Abstract base class for an index buffer.
Definition Buffer.h:154
virtual void Bind() const =0
virtual uint32_t GetCount() const =0
virtual void Unbind() const =0
virtual ~IndexBuffer()
Definition Buffer.h:156
static Ref< IndexBuffer > Create(uint32_t *indices, uint32_t count)
Definition Buffer.cpp:33
Base input class for querying input states.
Definition Input.h:12
static bool IsMouseButtonPressed(int button)
Checks if the specified mouse button is currently pressed.
Definition WindowsInput.cpp:16
static bool IsKeyPressed(int keycode)
Checks if the specified key is currently pressed.
Definition WindowsInput.cpp:9
Base class for keyboard events.
Definition KeyEvent.h:16
int m_KeyCode
Definition KeyEvent.h:31
int GetKeyCode() const
Get the key code associated with the event.
Definition KeyEvent.h:20
KeyEvent(int keycode)
Construct a KeyEvent with the specified key code.
Definition KeyEvent.h:29
Event for registering key press.
Definition KeyEvent.h:37
int m_RepeatCount
Definition KeyEvent.h:60
int GetRepeatCount() const
Get the repeat count of the key press event.
Definition KeyEvent.h:48
std::string ToString() const override
Convert the event to a string representation.
Definition KeyEvent.h:51
KeyPressedEvent(int keycode, int repeatCount)
Construct a KeyPressedEvent with the specified key code and repeat count.
Definition KeyEvent.h:44
Event for registering key release.
Definition KeyEvent.h:66
std::string ToString() const override
Convert the event to a string representation.
Definition KeyEvent.h:75
KeyReleasedEvent(int keycode)
Construct a KeyReleasedEvent with the specified key code.
Definition KeyEvent.h:71
Event for registering key typing.
Definition KeyEvent.h:88
KeyTypedEvent(int keycode)
Construct a KeyTypedEvent with the specified key code.
Definition KeyEvent.h:93
std::string ToString() const override
Convert the event to a string representation.
Definition KeyEvent.h:98
Represents a reusable application layer that receives lifecycle callbacks (attach,...
Definition Layer.h:17
virtual void OnEvent(Event &event)
Called when an event is dispatched to the layer.
Definition Layer.h:41
const std::string & GetName() const
Retrieves the name of the layer for debugging purposes.
Definition Layer.h:53
virtual void OnDetach()
Called when the layer is detached from the application.
Definition Layer.h:31
virtual void OnUpdate(Timestep ts)
Called every frame to update the layer with the given timestep.
Definition Layer.h:36
virtual void OnImGuiRender()
Called when the layer should render its ImGui components.
Definition Layer.h:50
Layer(const std::string &name="Layer")
Constructs a Layer with an optional name for debugging purposes.
Definition Layer.cpp:6
virtual ~Layer()
Definition Layer.cpp:11
std::string m_DebugName
The name of the layer assigned at creation, used for debugging.
Definition Layer.h:57
virtual void OnAttach()
Called when the layer is attached to the application.
Definition Layer.h:28
virtual void OnRender()
Called when the layer should render its contents.
Definition Layer.h:47
Manages an ordered stack of Layer pointers. Layers can be pushed or popped and the stack can be itera...
Definition LayerStack.h:16
LayerStack()
Definition LayerStack.cpp:6
void PopOverlay(Layer *overlay)
Removes the specified overlay layer from the stack.
Definition LayerStack.cpp:42
unsigned int m_LayerInsertIndex
Index indicating where to insert new layers (before overlays).
Definition LayerStack.h:55
void PushLayer(Layer *layer)
Adds the layer to the stack at the position before the first overlay.
Definition LayerStack.cpp:19
void PushOverlay(Layer *overlay)
Pushes the overlay layer on top of all other layers.
Definition LayerStack.cpp:26
~LayerStack()
Definition LayerStack.cpp:10
void PopLayer(Layer *layer)
Removes the specified layer from the stack.
Definition LayerStack.cpp:32
Base class for mouse button events.
Definition MouseEvent.h:81
int m_Button
Definition MouseEvent.h:95
int GetMouseButton() const
Get the mouse button associated with the event.
Definition MouseEvent.h:84
MouseButtonEvent(int button)
Construct a MouseButtonEvent with the specified button.
Definition MouseEvent.h:92
Event for registering mouse button presses.
Definition MouseEvent.h:101
MouseButtonPressedEvent(int button)
Construct a MouseButtonPressedEvent with the specified button.
Definition MouseEvent.h:106
std::string ToString() const override
Convert the event to a string representation.
Definition MouseEvent.h:111
Event for registering mouse button releases.
Definition MouseEvent.h:124
MouseButtonReleasedEvent(int button)
Construct a MouseButtonReleasedEvent with the specified button.
Definition MouseEvent.h:130
std::string ToString() const override
Convert the event to a string representation.
Definition MouseEvent.h:135
Event for registering mouse movement.
Definition MouseEvent.h:16
std::string ToString() const override
Convert the event to a string representation.
Definition MouseEvent.h:33
float m_MouseX
Definition MouseEvent.h:43
float m_MouseY
Definition MouseEvent.h:43
float GetX() const
Get the x coordinate of the mouse.
Definition MouseEvent.h:28
MouseMovedEvent(float x, float y)
Construct a MouseMovedEvent with the specified x and y coordinates.
Definition MouseEvent.h:23
float GetY() const
Get the y coordinate of the mouse.
Definition MouseEvent.h:30
Event for registering mouse scroll wheel movement.
Definition MouseEvent.h:49
float m_XOffset
Definition MouseEvent.h:75
float GetXOffset() const
Get the x offset of the mouse scroll.
Definition MouseEvent.h:60
MouseScrolledEvent(float xOffset, float yOffset)
Construct a MouseScrolledEvent with the specified x and y offsets.
Definition MouseEvent.h:55
float GetYOffset() const
Get the y offset of the mouse scroll.
Definition MouseEvent.h:62
std::string ToString() const override
Convert the event to a string representation.
Definition MouseEvent.h:65
float m_YOffset
Definition MouseEvent.h:75
Definition OrthographicCameraController.h:26
Definition ParticleSystem.h:25
A static class that provides an interface for issuing rendering commands.
Definition RenderCommand.h:10
static void Clear()
Clears the rendering buffers.
Definition RenderCommand.h:32
A 2D renderer for drawing quads and sprites.
Definition Renderer2D.h:17
static void ResetStats()
Resets the rendering statistics.
Definition Renderer2D.cpp:497
static void EndScene()
Ends the current scene.
Definition Renderer2D.cpp:160
static Statistics GetStats()
Retrieves the current rendering statistics.
Definition Renderer2D.cpp:502
An abstract class defining the interface for a rendering API.
Definition RendererAPI.h:11
static API s_API
Definition RendererAPI.h:36
virtual void DrawIndexed(const Ref< VertexArray > &vertexArray, uint32_t indexCount=0)=0
Draws indexed geometry using the provided vertex array.
virtual void SetViewport(uint32_t x, uint32_t y, uint32_t width, uint32_t height)=0
Sets the viewport dimensions.
virtual void SetClearColor(const glm::vec4 &color)=0
Sets the clear color for the rendering API.
virtual void Clear()=0
Clears the rendering buffers.
virtual void Init()=0
Initializes the rendering API.
virtual ~RendererAPI()=default
API
API.
Definition RendererAPI.h:14
@ None
Definition RendererAPI.h:15
@ OpenGL
Definition RendererAPI.h:16
static API GetAPI()
Returns the current rendering API.
Definition RendererAPI.h:34
Definition SceneSerializer.h:7
bool Deserialize(const std::string &filepath)
Definition SceneSerializer.cpp:206
void Serialize(const std::string &filepath)
Definition SceneSerializer.cpp:179
Represents a time step in seconds.
Definition Timestep.h:12
float GetSeconds() const
Returns the time in seconds.
Definition Timestep.h:26
float m_Time
Definition Timestep.h:30
float GetMilliseconds() const
Returns the time in milliseconds.
Definition Timestep.h:28
operator float() const
Definition Timestep.h:23
Timestep(float time=0.0f)
Constructs a Timestep with the given time in seconds.
Definition Timestep.h:18
An abstraction for a vertex array object (VAO).
Definition VertexArray.h:11
virtual void SetIndexBuffer(const Ref< IndexBuffer > &indexBuffer)=0
Sets the index buffer for the vertex array.
virtual const std::vector< Ref< VertexBuffer > > & GetVertexBuffers()=0
static Ref< VertexArray > Create()
Definition VertexArray.cpp:7
virtual void AddVertexBuffer(const Ref< VertexBuffer > &vertexBuffer)=0
Adds a vertex buffer to the vertex array.
virtual const Ref< IndexBuffer > & GetIndexBuffer() const =0
virtual ~VertexArray()
Definition VertexArray.h:13
virtual void Unbind() const =0
virtual void Bind() const =0
Abstract base class for a vertex buffer.
Definition Buffer.h:132
virtual ~VertexBuffer()
Definition Buffer.h:134
virtual void SetLayout(const BufferLayout &layout)=0
static Ref< VertexBuffer > Create(float *vertices, uint32_t size)
Definition Buffer.cpp:22
virtual void Bind() const =0
virtual void Unbind() const =0
virtual const BufferLayout & GetLayout() const =0
virtual void SetData(const void *data, uint32_t size)=0
static Ref< VertexBuffer > Create(uint32_t size)
Definition Buffer.cpp:11
Event for registering window close.
Definition ApplicationEvent.h:49
WindowCloseEvent()
Definition ApplicationEvent.h:51
Abstract interface representing an application window.
Definition Window.h:43
virtual uint32_t GetWidth() const =0
Retrieves the width of the window.
virtual ~Window()
Definition Window.h:47
virtual void * GetNativeWindow() const =0
Retrieves the native window handle.
static Scope< Window > Create(const WindowProps &props=WindowProps())
Creates a window instance with the specified properties.
Definition WindowsWindow.cpp:20
virtual void SetEventCallback(const EventCallbackFn &callback)=0
Sets the callback function for window events.
virtual void OnUpdate()=0
Called every frame to update the window.
virtual bool IsVSync() const =0
Checks if vertical synchronization (VSync) is enabled.
virtual void SetVSync(bool enabled)=0
Sets whether vertical synchronization (VSync) is enabled.
virtual uint32_t GetHeight() const =0
Retrieves the height of the window.
Event for registering window resize.
Definition ApplicationEvent.h:16
unsigned int GetHeight() const
Get the new height of the window.
Definition ApplicationEvent.h:29
unsigned int m_Height
Definition ApplicationEvent.h:43
WindowResizeEvent(unsigned int width, unsigned int height)
Construct a WindowResizeEvent with the specified width and height.
Definition ApplicationEvent.h:23
std::string ToString() const override
Convert the event to a string representation.
Definition ApplicationEvent.h:32
unsigned int GetWidth() const
Get the new width of the window.
Definition ApplicationEvent.h:27
unsigned int m_Width
Definition ApplicationEvent.h:43
static glm::vec4 Blue()
Returns a vec4 representing the color blue.
Definition Color.h:31
static glm::vec4 Pink()
Returns a vec4 representing the color pink.
Definition Color.h:42
static glm::vec4 Black()
Returns a vec4 representing the color black.
Definition Color.h:18
static glm::vec4 Indigo()
Returns a vec4 representing the color indigo.
Definition Color.h:33
static glm::vec4 White()
Returns a vec4 representing the color white.
Definition Color.h:16
static glm::vec4 Yellow()
Returns a vec4 representing the color yellow.
Definition Color.h:27
static glm::vec4 Magenta()
Returns a vec4 representing the color magenta.
Definition Color.h:40
static glm::vec4 Cyan()
Returns a vec4 representing the color cyan.
Definition Color.h:38
static glm::vec4 Brown()
Returns a vec4 representing the color brown.
Definition Color.h:44
static glm::vec4 Green()
Returns a vec4 representing the color green.
Definition Color.h:29
static glm::vec4 Transparent()
Returns a vec4 representing a fully transparent color.
Definition Color.h:46
static glm::vec4 Orange()
Returns a vec4 representing the color orange.
Definition Color.h:25
static glm::vec4 StripAlpha(const glm::vec4 &color)
Strips the alpha component from the given color, setting it to 1.0 (fully opaque).
Definition Color.h:49
static glm::vec4 SetAlpha(const glm::vec4 &color, float alpha=0.0f)
Sets the alpha component of the given color to the specified value.
Definition Color.h:51
static glm::vec4 Purple()
Returns a vec4 representing the color purple.
Definition Color.h:35
static glm::vec4 Red()
Returns a vec4 representing the color red.
Definition Color.h:23
static glm::vec4 Gray()
Returns a vec4 representing the color gray.
Definition Color.h:20
@ RightShift
Definition KeyCodes.h:143
@ RightControl
Definition KeyCodes.h:144
@ Q
Definition KeyCodes.h:54
@ O
Definition KeyCodes.h:52
@ LeftShift
Definition KeyCodes.h:139
@ LeftControl
Definition KeyCodes.h:140
@ N
Definition KeyCodes.h:51
@ S
Definition KeyCodes.h:56
Definition Math.cpp:7
bool DecomposeTransform(const glm::mat4 &transform, glm::vec3 &translation, glm::vec3 &rotation, glm::vec3 &scale)
Decomposes a transformation matrix into its translation, rotation, and scale components.
Definition Math.cpp:10
@ ButtonLeft
Definition MouseButtonCodes.h:26
Definition Random.h:14
glm::vec3 Float3()
Definition Random.h:121
std::string HexString(size_t length)
Definition Random.h:57
glm::vec3 RangeF3(const glm::vec2 &range1, const glm::vec2 &range2, const glm::vec2 &range3)
Definition Random.h:136
float RangeF1_Inclusive(float min, float max)
Definition Random.h:92
glm::vec2 RangeF2(const glm::vec2 &minRange, const glm::vec2 &maxRange)
Definition Random.h:115
std::mt19937 & GetRNG()
Definition Random.h:16
bool Bool1(float trueChance)
Definition Random.h:31
glm::vec4 Float4()
Definition Random.h:141
glm::vec2 RangeF2(float min, float max)
Definition Random.h:105
float Float1()
Definition Random.h:76
void Seed(uint32_t seed)
Definition Random.h:21
float RangeF1(float min, float max)
Definition Random.h:84
glm::vec4 RangeF4(float min, float max)
Definition Random.h:146
std::string UUID()
Definition Random.h:70
glm::vec2 RangeF2(float min1, float max1, float min2, float max2)
Definition Random.h:110
unsigned char Char()
Definition Random.h:37
glm::vec3 RangeF3(float min, float max)
Definition Random.h:126
glm::vec2 Float2()
Definition Random.h:100
glm::vec3 RangeF3(float min1, float max1, float min2, float max2, float min3, float max3)
Definition Random.h:131
std::string String(size_t length)
Definition Random.h:43
uint32_t UInt1(uint32_t max)
Definition Random.h:25
TEMPORARY.
Definition WindowsInput.cpp:7
std::string WorkingDirectory
Definition Application.h:22
WindowMode Mode
Definition Application.h:26
std::string format_as(const Event &e)
Format an event as a string.
Definition Event.h:104
constexpr Ref< T > CreateRef(Args &&... args)
Creates a Ref (shared_ptr) for the given type and constructor arguments.
Definition Defines_Macros.h:72
uint32_t Width
Definition Application.h:24
constexpr Scope< T > CreateScope(Args &&... args)
Creates a Scope (unique_ptr) for the given type and constructor arguments.
Definition Defines_Macros.h:52
Application * CreateApplication()
Definition VesperEditorApp.cpp:23
bool EnableImGui
Definition Application.h:27
WindowMode
WIP.
Definition Window.h:16
@ Fullscreen
Definition Window.h:18
@ Borderless
Definition Window.h:19
@ Windowed
Definition Window.h:17
uint32_t Height
Definition Framebuffer.h:10
uint32_t Width
Definition Framebuffer.h:10
bool EnableVSync
Definition Application.h:28
std::string ApplicationName
Definition Application.h:21
static void DisplayVesperInfo_ImGui()
Definition VesperImGui.h:7
static uint32_t ShaderDataTypeSize(ShaderDataType type)
Returns the size in bytes of the given ShaderDataType.
Definition Buffer.h:19
uint32_t Height
Definition Application.h:25
EventCategory
Enumeration of event categories.
Definition Event.h:24
@ EventCategoryMouseButton
Definition Event.h:30
@ EventCategoryMouse
Definition Event.h:29
@ EventCategoryApplication
Definition Event.h:26
@ None
Definition Event.h:25
@ EventCategoryInput
Definition Event.h:27
@ EventCategoryKeyboard
Definition Event.h:28
EventType
Enumeration of event types.
Definition Event.h:14
@ WindowLostFocus
Definition Event.h:16
@ WindowFocus
Definition Event.h:16
@ KeyReleased
Definition Event.h:18
@ AppRender
Definition Event.h:17
@ MouseScrolled
Definition Event.h:19
@ AppTick
Definition Event.h:17
@ None
Definition Event.h:15
@ MouseButtonPressed
Definition Event.h:19
@ MouseButtonReleased
Definition Event.h:19
@ KeyTyped
Definition Event.h:18
@ WindowResize
Definition Event.h:16
@ WindowMoved
Definition Event.h:16
@ AppUpdate
Definition Event.h:17
@ KeyPressed
Definition Event.h:18
@ MouseMoved
Definition Event.h:19
@ WindowClose
Definition Event.h:16
ShaderDataType
The different data types that can be used in shaders.
Definition Buffer.h:6
@ Int
Definition Buffer.h:10
@ Int4
Definition Buffer.h:10
@ Float
Definition Buffer.h:8
@ Mat3
Definition Buffer.h:9
@ Float4
Definition Buffer.h:8
@ Int2
Definition Buffer.h:10
@ Int3
Definition Buffer.h:10
@ Float2
Definition Buffer.h:8
@ None
Definition Buffer.h:7
@ Mat4
Definition Buffer.h:9
@ Float3
Definition Buffer.h:8
@ Bool
Definition Buffer.h:11
WIP.
Definition Application.h:20
Specification for creating a Framebuffer.
Definition Framebuffer.h:9
Definition ParticleSystem.h:9
Represents a single element in a buffer layout.
Definition Buffer.h:39
BufferElement()
Definition Buffer.h:51
ShaderDataType Type
The data type of the buffer element.
Definition Buffer.h:43
std::string Name
The name of the buffer element.
Definition Buffer.h:41
BufferElement(ShaderDataType type, const std::string &name, bool normalized=false)
Constructs a BufferElement with the given type, name, and normalization flag.
Definition Buffer.h:57
uint32_t GetComponentCount() const
Returns the number of components in the buffer element based on its ShaderDataType.
Definition Buffer.h:63
uint32_t Size
The size in bytes of the buffer element.
Definition Buffer.h:45
uint32_t Offset
The offset in bytes of the buffer element from the start of the buffer.
Definition Buffer.h:47
bool Normalized
Whether the buffer element is normalized.
Definition Buffer.h:49
Holds the data for window configuration.
Definition Window.h:23
uint32_t Height
Definition Window.h:26
uint32_t Width
Definition Window.h:25
std::string Title
Definition Window.h:24