基于约束的物理求解

本文述说了基于约束的物理求解器,这是很多游戏物理引擎的核心。

EnTT源码分析【四】:storage

本文分析了开源项目EnTT v3.12.2的原理和实现。述说了ECS中的核心数据结构storage。

storage

storage是在sparse_set上进行封装的类,主要用于将组件(component)和实体(entity)关联起来。

引用折叠和完美转发

模板参数推导

模板参数有三种写法:

1
2
3
4
5
6
7
8
template <typename T>
void Foo(T) { static_assert(false); } // 直接使用T

template <typename T>
void FooWithRRef(T&) { static_assert(false); } // 使用T&

template <typename T>
void FooWithLRef(T&&) { static_assert(false); } // 使用T&&

根据《C++ Templates 2》的说法,第一种写法会decay(等同于调用std::decay),即:

EnTT源码分析【二】:Entity

本文分析了开源项目EnTT v3.12.2的原理和实现。述说了ECS中的Entity部分。

Entity

Entity的本质

EnTT中的Entity是正整数,或者更严谨一点,是enum class

EnTT源码分析【三】:sparse set

本文分析了开源项目EnTT v3.12.2的原理和实现。述说了ECS中的核心数据结构sparse set。

sparse set

结构介绍

sparse set是一个数据结构,用于极快速地对正整数进行增删改查并能够较好地利用CPU Cache。而EnTT中的Entity部分正式用正整数实现的。

EnTT源码分析【一】:什么是ECS

本文分析了开源项目EnTT v3.12.2的原理和实现。述说了ECS架构。

ECS架构

ECS的用法

ECS是一个典型的组合优于继承的架构。