mirror of
https://github.com/DCFApixels/DragonECS.git
synced 2025-09-19 02:24:37 +08:00
remove EcsWhereResult
This commit is contained in:
parent
7951cf27a8
commit
1c5ce4561b
@ -170,23 +170,23 @@ namespace DCFApixels.DragonECS
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Where Query
|
#region Where Query
|
||||||
public EcsWhereResult<TSubject> WhereFor<TSubject>(EcsReadonlyGroup sourceGroup, out TSubject subject) where TSubject : EcsSubject
|
public EcsReadonlyGroup WhereFor<TSubject>(EcsReadonlyGroup sourceGroup, out TSubject subject) where TSubject : EcsSubject
|
||||||
{
|
{
|
||||||
var executor = GetExecutor<EcsWhereExecutor<TSubject>>();
|
var executor = GetExecutor<EcsWhereExecutor<TSubject>>();
|
||||||
subject = executor.Subject;
|
subject = executor.Subject;
|
||||||
return executor.ExecuteFor(sourceGroup);
|
return executor.ExecuteFor(sourceGroup);
|
||||||
}
|
}
|
||||||
public EcsWhereResult<TSubject> WhereFor<TSubject>(EcsReadonlyGroup sourceGroup) where TSubject : EcsSubject
|
public EcsReadonlyGroup WhereFor<TSubject>(EcsReadonlyGroup sourceGroup) where TSubject : EcsSubject
|
||||||
{
|
{
|
||||||
return GetExecutor<EcsWhereExecutor<TSubject>>().ExecuteFor(sourceGroup);
|
return GetExecutor<EcsWhereExecutor<TSubject>>().ExecuteFor(sourceGroup);
|
||||||
}
|
}
|
||||||
public EcsWhereResult<TSubject> Where<TSubject>(out TSubject subject) where TSubject : EcsSubject
|
public EcsReadonlyGroup Where<TSubject>(out TSubject subject) where TSubject : EcsSubject
|
||||||
{
|
{
|
||||||
var executor = GetExecutor<EcsWhereExecutor<TSubject>>();
|
var executor = GetExecutor<EcsWhereExecutor<TSubject>>();
|
||||||
subject = executor.Subject;
|
subject = executor.Subject;
|
||||||
return executor.Execute();
|
return executor.Execute();
|
||||||
}
|
}
|
||||||
public EcsWhereResult<TSubject> Where<TSubject>() where TSubject : EcsSubject
|
public EcsReadonlyGroup Where<TSubject>() where TSubject : EcsSubject
|
||||||
{
|
{
|
||||||
return GetExecutor<EcsWhereExecutor<TSubject>>().Execute();
|
return GetExecutor<EcsWhereExecutor<TSubject>>().Execute();
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,9 @@
|
|||||||
|
|
||||||
private long _executeVersion;
|
private long _executeVersion;
|
||||||
|
|
||||||
|
#if (DEBUG && !DISABLE_DEBUG) || ENABLE_DRAGONECS_ASSERT_CHEKS
|
||||||
private EcsProfilerMarker _executeWhere = new EcsProfilerMarker("Where");
|
private EcsProfilerMarker _executeWhere = new EcsProfilerMarker("Where");
|
||||||
|
#endif
|
||||||
|
|
||||||
#region Properties
|
#region Properties
|
||||||
public TSubject Subject => _subject;
|
public TSubject Subject => _subject;
|
||||||
@ -27,47 +29,20 @@
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Methods
|
#region Methods
|
||||||
public EcsWhereResult<TSubject> Execute() => ExecuteFor(_subject.World.Entities);
|
public EcsReadonlyGroup Execute() => ExecuteFor(_subject.World.Entities);
|
||||||
public EcsWhereResult<TSubject> ExecuteFor(EcsReadonlyGroup sourceGroup)
|
public EcsReadonlyGroup ExecuteFor(EcsReadonlyGroup sourceGroup)
|
||||||
{
|
{
|
||||||
|
#if (DEBUG && !DISABLE_DEBUG) || ENABLE_DRAGONECS_ASSERT_CHEKS
|
||||||
using (_executeWhere.Auto())
|
using (_executeWhere.Auto())
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
#if (DEBUG && !DISABLE_DEBUG) || ENABLE_DRAGONECS_ASSERT_CHEKS
|
#if (DEBUG && !DISABLE_DEBUG) || ENABLE_DRAGONECS_ASSERT_CHEKS
|
||||||
if (sourceGroup.IsNull) throw new System.ArgumentNullException();//TODO составить текст исключения.
|
if (sourceGroup.IsNull) throw new System.ArgumentNullException();//TODO составить текст исключения.
|
||||||
#endif
|
#endif
|
||||||
_subject.GetIteratorFor(sourceGroup).CopyTo(_filteredGroup);
|
_subject.GetIteratorFor(sourceGroup).CopyTo(_filteredGroup);
|
||||||
return new EcsWhereResult<TSubject>(this, _filteredGroup.Readonly);
|
return _filteredGroup.Readonly;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|
||||||
#region WhereExecuter Results
|
|
||||||
public readonly ref struct EcsWhereResult<TSubject> where TSubject : EcsSubject
|
|
||||||
{
|
|
||||||
public readonly TSubject s;
|
|
||||||
private readonly EcsWhereExecutor<TSubject> _executer;
|
|
||||||
public readonly EcsReadonlyGroup group;
|
|
||||||
private readonly long _version;
|
|
||||||
public bool IsRelevant => _version == _executer.ExecuteVersion;
|
|
||||||
public EcsWhereResult(EcsWhereExecutor<TSubject> executer, EcsReadonlyGroup group)
|
|
||||||
{
|
|
||||||
_executer = executer;
|
|
||||||
_version = executer.ExecuteVersion;
|
|
||||||
s = executer.Subject;
|
|
||||||
this.group = group;
|
|
||||||
}
|
|
||||||
public EcsGroup.Enumerator GetEnumerator()
|
|
||||||
{
|
|
||||||
#if (DEBUG && !DISABLE_DEBUG) || ENABLE_DRAGONECS_ASSERT_CHEKS
|
|
||||||
if (!IsRelevant) throw new System.InvalidOperationException();//TODO составить текст исключения.
|
|
||||||
#endif
|
|
||||||
return group.GetEnumerator();
|
|
||||||
}
|
|
||||||
public override string ToString()
|
|
||||||
{
|
|
||||||
return group.ToString();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user