Aurora Engine 游戏引擎入门 08(为游戏添加层 Layer)


简介

本序列由澳大利亚的一个游戏引擎爱好者整理制作,使用了前瞻的语言技术,
经常多次的修改制作,一个个小的知识点贯通,非常具有引导学习意义!

Bilibili站转载学习,非个人研究,鸣谢!

原作者Github
Bilibili直达链接
YouTube直达链接


#1 为什么要有层的概念
#2 编写层级类和管理类
#3 处理OpenGL回调事件
#4 premake5开启多线程支持
#5 编写测试实例


#1 为什么要有层的概念

Layer 可处理显示,也可以处理事件;
在一个游戏中,层级可以用于显示不同的内容,不同的层级可以接收独立的事件


// Layer.h
#pragma once
#include "Aurora/Core.h"
#include "Aurora/Events/Event.h"

namespace Aurora {
   
	/// 
	/// Layer 可处理显示,也可以处理事件;
	/// 在一个游戏中,层级可以用于显示不同的内容,不同的层级可以接收独立的事件
	/// 
	class AURORA_API Layer
	{
   
	public:
		// 当前层的名称
		Layer(const std::string& name = "Layer");
		virtual ~Layer();

		// 当层被附件到的时候
		virtual void OnAttach() {
   }
		// 当层被取消的时候
		virtual void OnDetach() {
   }
		// update
		virtual void OnUpdate() {
   }
		// 当前层有事件的时候
		virtual void OnEvent(Event& event) {
   }
		// 当前层的名字
		inline const std::string& GetName() const {
    return m_DebugName; }
	protected:
		std::string m_DebugName;
	};
}
// Layer.cpp
#include "aopch.h"
#include "Layer.h"

namespace Aurora {
   
	Layer::Layer(const std::string& debugName) : m_DebugName(debugName)
	{
   
	}

	Layer::~Layer()
	{
   

	}
}
// LayerStack.h
#pragma once

#include "Aurora/Core.h"
#include "Layer.h"

namespace Aurora {
   

	/// 
	/// 用于处理层的管理关系
	/// 
	class AURORA_API LayerStack
	{
   
	public:
		LayerStack();
		~LayerStack();
		/// 
		/// 从列表的第一个元素添加一个层级
		/// 
		/// 
		void PushLayer(Layer* layer);
		/// 
		/// 添加一个层到列表
		/// 
		/// 
		void PushOverlay(Layer* overlay);
		/// 
		/// 将最外的层取出来
		/// 
		/// 
		void PopLayer(Layer* layer);
		/// 
		/// 从列表中取出一个层
		/// 
		/// 
		void PopOverlay(Layer* overlay);

		

你可能感兴趣的:(Aurora,Aurora)