public void Execute(ref ActorAttribute3 <T> attribute3)
            {
#if ENABLE_UNITY_COLLECTIONS_CHECKS
                if (attribute3.regain < 0f)
                {
                    throw new System.Exception("attribute3.regain < 0f");
                }
#endif
                //value
                attribute3.value += attribute3.regain * fixedDeltaTime;
                attribute3.value  = math.clamp(attribute3.value, 0f, attribute3.max);
            }
            public void Execute(Entity entity, int index, DynamicBuffer <KillersOnActorDeath> actorDeathByKillers, [ChangedFilter, ReadOnly] DynamicBuffer <ActorAttribute3Modifys <T> > attribute3Modifys, ref ActorAttribute3 <T> attribute3)
            {
                //value
                for (var i = 0; i < attribute3Modifys.Length; ++i)
                {
                    var attribute3Modify = attribute3Modifys[i];
                    if (attribute3Modify.attribute3ModifyType == Attribute3SubModifyType.ValueOffset)
                    {
                        attribute3.value += attribute3Modify.value;

                        //
                        if (attribute3Modify.value < 0f)
                        {
                            actorDeathByKillers.Add(new KillersOnActorDeath {
                                playerEntity = attribute3Modify.player, type = attribute3Modify.type
                            });
                        }
                    }
#if ENABLE_UNITY_COLLECTIONS_CHECKS
                    else
                    {
                        throw new System.Exception($"attribute3Modifys[i].attribute3ModifyType={attribute3Modifys[i].attribute3ModifyType}");
                    }
#endif
                }
                if (attribute3.value > attribute3.max)
                {
                    attribute3.value = attribute3.max;
                }

                //dead
                if (attribute3.value <= 0f)
                {
                    endCommandBuffer.AddComponent(index, entity, OnDestroyMessage);
                }
            }
            public void Execute(Entity entity, int index, [ChangedFilter, ReadOnly] DynamicBuffer <ActorAttribute3Modifys <T> > attribute3Modifys, ref ActorAttribute3 <T> attribute3)
            {
                for (var i = 0; i < attribute3Modifys.Length; ++i)
                {
                    if (attribute3Modifys[i].attribute3ModifyType == Attribute3SubModifyType.ValueOffset)
                    {
                        attribute3.value += attribute3Modifys[i].value;
                    }
#if ENABLE_UNITY_COLLECTIONS_CHECKS
                    else
                    {
                        throw new System.Exception($"attribute3Modifys[i].attribute3ModifyType={attribute3Modifys[i].attribute3ModifyType}");
                    }
#endif
                }
                if (attribute3.value > attribute3.max)
                {
                    attribute3.value = attribute3.max;
                }
            }
            public void Execute(Entity entity, int index, DynamicBuffer <KillersOnActorDeath> actorDeathByKillers, [ChangedFilter, ReadOnly] DynamicBuffer <ActorAttribute3Modifys <T> > attribute3Modifys, ref ActorAttribute3Base <T> attribute3Base, ref ActorAttribute3 <T> attribute3)
            {
                //max
                attribute3.max = attribute3Base.max;
                for (var i = 0; i < attribute3Modifys.Length; ++i)
                {
                    if (attribute3Modifys[i].attribute3ModifyType == Attribute3SubModifyType.MaxOffset)
                    {
                        attribute3.max += attribute3Modifys[i].value;
                    }
                }

                //regain
                attribute3.regain = attribute3Base.regain;
                for (var i = 0; i < attribute3Modifys.Length; ++i)
                {
                    if (attribute3Modifys[i].attribute3ModifyType == Attribute3SubModifyType.RegainOffset)
                    {
                        attribute3.regain += attribute3Modifys[i].value;
                    }
                }
                if (attribute3.regain < 0f)
                {
                    attribute3.regain = 0f;
                }

                //value
                for (var i = 0; i < attribute3Modifys.Length; ++i)
                {
                    var attribute3Modify = attribute3Modifys[i];
                    if (attribute3Modify.attribute3ModifyType == Attribute3SubModifyType.ValueOffset)
                    {
                        attribute3.value += attribute3Modify.value;

                        //
                        if (attribute3Modify.value < 0f)
                        {
                            actorDeathByKillers.Add(new KillersOnActorDeath {
                                playerEntity = attribute3Modify.player, type = attribute3Modify.type
                            });
                        }
                    }
                }
                if (attribute3.value > attribute3.max)
                {
                    attribute3.value = attribute3.max;
                }

                //dead
                if (attribute3.value <= 0f)
                {
                    endCommandBuffer.AddComponent(index, entity, OnDestroyMessage);
                }
            }
            public void Execute(Entity entity, int index, [ChangedFilter, ReadOnly] DynamicBuffer <ActorAttribute3Modifys <T> > attribute3Modifys, [ReadOnly] ref ActorAttribute3Base <T> attribute3Base, ref ActorAttribute3 <T> attribute3)
            {
                //max
                attribute3.max = attribute3Base.max;
                for (var i = 0; i < attribute3Modifys.Length; ++i)
                {
                    if (attribute3Modifys[i].attribute3ModifyType == Attribute3SubModifyType.MaxOffset)
                    {
                        attribute3.max += attribute3Modifys[i].value;
                    }
                }

                //regain
                attribute3.regain = attribute3Base.regain;
                for (var i = 0; i < attribute3Modifys.Length; ++i)
                {
                    if (attribute3Modifys[i].attribute3ModifyType == Attribute3SubModifyType.RegainOffset)
                    {
                        attribute3.regain += attribute3Modifys[i].value;
                    }
                }
                if (attribute3.regain < 0f)
                {
                    attribute3.regain = 0f;
                }


                //value
                for (var i = 0; i < attribute3Modifys.Length; ++i)
                {
                    if (attribute3Modifys[i].attribute3ModifyType == Attribute3SubModifyType.ValueOffset)
                    {
                        attribute3.value += attribute3Modifys[i].value;
                    }
                }
                if (attribute3.value > attribute3.max)
                {
                    attribute3.value = attribute3.max;
                }
            }