Files
TEngine/Assets/GameScripts/DotNet/Core/Entity/IGetComponentSystem.cs
ALEXTANG 336d4b2eb9 [+] 接入ET8服务端
[+] 接入ET8服务端
2023-07-13 12:23:48 +08:00

44 lines
1011 B
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
namespace ET
{
// GetComponentSystem有巨大作用比如每次保存Unit的数据不需要所有组件都保存只需要保存Unit变化过的组件
// 是否变化可以通过判断该组件是否GetComponentGet了就记录该组件
// 这样可以只保存Unit变化过的组件
// 再比如传送也可以做此类优化
public interface IGetComponent
{
}
public interface IGetComponentSystem: ISystemType
{
void Run(Entity o, Entity component);
}
[EntitySystem]
public abstract class GetComponentSystem<T> : IGetComponentSystem where T: Entity, IGetComponent
{
void IGetComponentSystem.Run(Entity o, Entity component)
{
this.GetComponent((T)o, component);
}
Type ISystemType.SystemType()
{
return typeof(IGetComponentSystem);
}
int ISystemType.GetInstanceQueueIndex()
{
return InstanceQueueIndex.None;
}
Type ISystemType.Type()
{
return typeof(T);
}
protected abstract void GetComponent(T self, Entity component);
}
}