实体Entity[]¶
E1:Light | E2:AudioSrc/Mesh¶
对于面向对象¶
class Entity
{
mat4 Transform;
string tag;
}
class Light : public Entity
{
vec3 Color;
float Intensity;
Type
};
class AudioMesh : public Entity
{
AudioClip* Clip;
Mesh* mesh;
}
class Player : public AuioMesh
{
}
为了player,我们已经需要创建四个实体了。
实体组件系统¶
因为CPU缓存的原因, 如果有100万的数据,显然一个连续的内存则更容易存储,性能也更好 。
```c++
class Scene
{
std::vector
for(Entity* e : Entities)
{
e->OnUpdate()
}
}
class Entity { mat4 Transform; string Tag;
std::vector<Component*> Components;
virtual void OnUpdate(float ts);
}
struct Component {
};
struct Light : public Component { vec Color; float Intensity; Type Type; }
struct AudioComponent { AudioClip* clip; }
struct MeshComponent { MEsh* Mesh; } ```