beginning query syntax system
parent
2abffd1cf9
commit
728109bfc6
|
@ -561,7 +561,7 @@ namespace Encompass
|
||||||
/// <param name="easeInTime">The time that will elapse before time is fully dilated, in real time.</param>
|
/// <param name="easeInTime">The time that will elapse before time is fully dilated, in real time.</param>
|
||||||
/// <param name="activeTime">The length of real time that time will be fully dilated.</param>
|
/// <param name="activeTime">The length of real time that time will be fully dilated.</param>
|
||||||
/// <param name="easeOutTime">The time that will elapse before time is fully undilated.</param>
|
/// <param name="easeOutTime">The time that will elapse before time is fully undilated.</param>
|
||||||
public void ActivateTimeDilation(double factor, double easeInTime, double activeTime, double easeOutTime)
|
protected void ActivateTimeDilation(double factor, double easeInTime, double activeTime, double easeOutTime)
|
||||||
{
|
{
|
||||||
timeManager.ActivateTimeDilation(factor, easeInTime, activeTime, easeOutTime);
|
timeManager.ActivateTimeDilation(factor, easeInTime, activeTime, easeOutTime);
|
||||||
}
|
}
|
||||||
|
@ -576,7 +576,7 @@ namespace Encompass
|
||||||
/// <param name="easeInFunction">An easing function for the easing in of time dilation.</param>
|
/// <param name="easeInFunction">An easing function for the easing in of time dilation.</param>
|
||||||
/// <param name="activeTime">The length of real time that time will be fully dilated.</param>
|
/// <param name="activeTime">The length of real time that time will be fully dilated.</param>
|
||||||
/// <param name="easeOutTime">The time that will elapse before time is fully undilated.</param>
|
/// <param name="easeOutTime">The time that will elapse before time is fully undilated.</param>
|
||||||
public void ActivateTimeDilation(double factor, double easeInTime, System.Func<double, double, double, double, double> easeInFunction, double activeTime, double easeOutTime)
|
protected void ActivateTimeDilation(double factor, double easeInTime, System.Func<double, double, double, double, double> easeInFunction, double activeTime, double easeOutTime)
|
||||||
{
|
{
|
||||||
timeManager.ActivateTimeDilation(factor, easeInTime, easeInFunction, activeTime, easeOutTime);
|
timeManager.ActivateTimeDilation(factor, easeInTime, easeInFunction, activeTime, easeOutTime);
|
||||||
}
|
}
|
||||||
|
@ -591,7 +591,7 @@ namespace Encompass
|
||||||
/// <param name="activeTime">The length of real time that time will be fully dilated.</param>
|
/// <param name="activeTime">The length of real time that time will be fully dilated.</param>
|
||||||
/// <param name="easeOutTime">The time that will elapse before time is fully undilated.</param>
|
/// <param name="easeOutTime">The time that will elapse before time is fully undilated.</param>
|
||||||
/// <param name="easeOutFunction">An easing function for the easing out of time dilation.</param>
|
/// <param name="easeOutFunction">An easing function for the easing out of time dilation.</param>
|
||||||
public void ActivateTimeDilation(double factor, double easeInTime, double activeTime, double easeOutTime, System.Func<double, double, double, double, double> easeOutFunction)
|
protected void ActivateTimeDilation(double factor, double easeInTime, double activeTime, double easeOutTime, System.Func<double, double, double, double, double> easeOutFunction)
|
||||||
{
|
{
|
||||||
timeManager.ActivateTimeDilation(factor, easeInTime, activeTime, easeOutTime, easeOutFunction);
|
timeManager.ActivateTimeDilation(factor, easeInTime, activeTime, easeOutTime, easeOutFunction);
|
||||||
}
|
}
|
||||||
|
@ -607,14 +607,14 @@ namespace Encompass
|
||||||
/// <param name="activeTime">The length of real time that time will be fully dilated.</param>
|
/// <param name="activeTime">The length of real time that time will be fully dilated.</param>
|
||||||
/// <param name="easeOutTime">The time that will elapse before time is fully undilated.</param>
|
/// <param name="easeOutTime">The time that will elapse before time is fully undilated.</param>
|
||||||
/// <param name="easeOutFunction">An easing function for the easing out of time dilation.</param>
|
/// <param name="easeOutFunction">An easing function for the easing out of time dilation.</param>
|
||||||
public void ActivateTimeDilation(double factor, double easeInTime, System.Func<double, double, double, double, double> easeInFunction, double activeTime, double easeOutTime, System.Func<double, double, double, double, double> easeOutFunction)
|
protected void ActivateTimeDilation(double factor, double easeInTime, System.Func<double, double, double, double, double> easeInFunction, double activeTime, double easeOutTime, System.Func<double, double, double, double, double> easeOutFunction)
|
||||||
{
|
{
|
||||||
timeManager.ActivateTimeDilation(factor, easeInTime, easeInFunction, activeTime, easeOutTime, easeOutFunction);
|
timeManager.ActivateTimeDilation(factor, easeInTime, easeInFunction, activeTime, easeOutTime, easeOutFunction);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<Entity> EntitiesWithComponents(IEnumerable<Type> types)
|
protected EntitySetQuery QueryEntities()
|
||||||
{
|
{
|
||||||
return componentManager.EntitiesWithComponents(types);
|
return new EntitySetQuery(componentManager);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Collections.Immutable;
|
||||||
|
|
||||||
|
namespace Encompass
|
||||||
|
{
|
||||||
|
public struct EntitySetQuery : IEnumerable<Entity>
|
||||||
|
{
|
||||||
|
private EntitySetQuery(ComponentManager componentManager, ImmutableArray<Type> includes, ImmutableArray<Type> excludes)
|
||||||
|
{
|
||||||
|
ComponentManager = componentManager;
|
||||||
|
Includes = includes;
|
||||||
|
Excludes = excludes;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal EntitySetQuery(ComponentManager componentManager)
|
||||||
|
{
|
||||||
|
ComponentManager = componentManager;
|
||||||
|
Includes = ImmutableArray.Create<Type>();
|
||||||
|
Excludes = ImmutableArray.Create<Type>();
|
||||||
|
}
|
||||||
|
|
||||||
|
private ComponentManager ComponentManager { get; }
|
||||||
|
private ImmutableArray<Type> Includes { get; }
|
||||||
|
private ImmutableArray<Type> Excludes { get; }
|
||||||
|
|
||||||
|
public EntitySetQuery With<TComponent>() where TComponent : struct, IComponent
|
||||||
|
{
|
||||||
|
return new EntitySetQuery(ComponentManager, Includes.Add(typeof(TComponent)), Excludes);
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntitySetQuery Without<TComponent>() where TComponent : struct, IComponent
|
||||||
|
{
|
||||||
|
return new EntitySetQuery(ComponentManager, Includes, Excludes.Add(typeof(TComponent)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public IEnumerator<Entity> GetEnumerator()
|
||||||
|
{
|
||||||
|
return ComponentManager.EntitiesWithComponents(Includes).GetEnumerator();
|
||||||
|
}
|
||||||
|
|
||||||
|
IEnumerator IEnumerable.GetEnumerator()
|
||||||
|
{
|
||||||
|
return GetEnumerator();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>netstandard2.0</TargetFramework>
|
<TargetFramework>netstandard2.0</TargetFramework>
|
||||||
<RootNamespace>Encompass</RootNamespace>
|
<RootNamespace>Encompass</RootNamespace>
|
||||||
|
@ -9,7 +9,7 @@
|
||||||
<Company>Moonside Games</Company>
|
<Company>Moonside Games</Company>
|
||||||
<Product>Encompass ECS</Product>
|
<Product>Encompass ECS</Product>
|
||||||
<PackageProjectUrl>https://github.com/encompass-ecs</PackageProjectUrl>
|
<PackageProjectUrl>https://github.com/encompass-ecs</PackageProjectUrl>
|
||||||
<PackageLicenseUrl />
|
<PackageLicenseUrl/>
|
||||||
<Copyright>Evan Hemsley 2019</Copyright>
|
<Copyright>Evan Hemsley 2019</Copyright>
|
||||||
<Description>Encompass is an engine-agnostic Hyper ECS framework to help you code games, or other kinds of simulations.</Description>
|
<Description>Encompass is an engine-agnostic Hyper ECS framework to help you code games, or other kinds of simulations.</Description>
|
||||||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
||||||
|
@ -19,10 +19,11 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="..\LICENSE">
|
<None Include="..\LICENSE">
|
||||||
<Pack>True</Pack>
|
<Pack>True</Pack>
|
||||||
<PackagePath />
|
<PackagePath/>
|
||||||
</None>
|
</None>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="MoonTools.Core.Graph" Version="1.0.0" />
|
<PackageReference Include="MoonTools.Core.Graph" Version="1.0.0"/>
|
||||||
|
<PackageReference Include="System.Collections.Immutable" Version="1.7.0"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
|
@ -1096,7 +1096,7 @@ namespace Tests
|
||||||
{
|
{
|
||||||
public override void Update(double dt)
|
public override void Update(double dt)
|
||||||
{
|
{
|
||||||
queriedEntities = EntitiesWithComponents(new Type[] { typeof(MockComponent), typeof(MockComponentB) }).ToArray();
|
queriedEntities = QueryEntities().With<MockComponent>().With<MockComponentB>().ToArray();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue