simple refactoring/fixes

This commit is contained in:
Mikhail 2023-11-15 17:47:11 +08:00
parent ab45c22d85
commit 0637aec1dc
5 changed files with 45 additions and 37 deletions

View File

@ -45,19 +45,19 @@ namespace DCFApixels.DragonECS
#if DEBUG && !DISABLE_DEBUG
for (int i = 0; i < targets.Length && targets.Length <= _markers.Length; i++)
{
_markers[i].Begin();
try
{
_markers[i].Begin();
targets[i].PreInit(pipeline);
_markers[i].End();
}
catch (Exception e)
{
#if DISABLE_CATH_EXCEPTIONS
throw;
throw e;
#endif
EcsDebug.PrintError(e);
}
_markers[i].End();
}
#else
foreach (var item in targets)
@ -66,7 +66,7 @@ namespace DCFApixels.DragonECS
catch (Exception e)
{
#if DISABLE_CATH_EXCEPTIONS
throw;
throw e;
#endif
EcsDebug.PrintError(e);
}
@ -93,19 +93,19 @@ namespace DCFApixels.DragonECS
#if DEBUG && !DISABLE_DEBUG
for (int i = 0; i < targets.Length && targets.Length <= _markers.Length; i++)
{
_markers[i].Begin();
try
{
_markers[i].Begin();
targets[i].Init(pipeline);
_markers[i].End();
}
catch (Exception e)
{
#if DISABLE_CATH_EXCEPTIONS
throw;
throw e;
#endif
EcsDebug.PrintError(e);
}
_markers[i].End();
}
#else
foreach (var item in targets)
@ -114,7 +114,7 @@ namespace DCFApixels.DragonECS
catch (Exception e)
{
#if DISABLE_CATH_EXCEPTIONS
throw;
throw e;
#endif
EcsDebug.PrintError(e);
}
@ -141,19 +141,19 @@ namespace DCFApixels.DragonECS
#if DEBUG && !DISABLE_DEBUG
for (int i = 0; i < targets.Length && targets.Length <= _markers.Length; i++)
{
_markers[i].Begin();
try
{
_markers[i].Begin();
targets[i].Run(pipeline);
_markers[i].End();
}
catch (Exception e)
{
#if DISABLE_CATH_EXCEPTIONS
throw;
throw e;
#endif
EcsDebug.PrintError(e);
}
_markers[i].End();
}
#else
foreach (var item in targets)
@ -162,7 +162,7 @@ namespace DCFApixels.DragonECS
catch (Exception e)
{
#if DISABLE_CATH_EXCEPTIONS
throw;
throw e;
#endif
EcsDebug.PrintError(e);
}
@ -189,19 +189,19 @@ namespace DCFApixels.DragonECS
#if DEBUG && !DISABLE_DEBUG
for (int i = 0; i < targets.Length && targets.Length <= _markers.Length; i++)
{
_markers[i].Begin();
try
{
_markers[i].Begin();
targets[i].Destroy(pipeline);
_markers[i].End();
}
catch (Exception e)
{
#if DISABLE_CATH_EXCEPTIONS
throw;
throw e;
#endif
EcsDebug.PrintError(e);
}
_markers[i].End();
}
#else
foreach (var item in targets)
@ -210,7 +210,7 @@ namespace DCFApixels.DragonECS
catch (Exception e)
{
#if DISABLE_CATH_EXCEPTIONS
throw;
throw e;
#endif
EcsDebug.PrintError(e);
}

View File

@ -2,7 +2,6 @@
using System.Collections.Generic;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Text.RegularExpressions;
namespace DCFApixels.DragonECS
{

View File

@ -70,7 +70,8 @@ namespace DCFApixels.DragonECS
}
private TPool CreatePool<TPool>() where TPool : IEcsPoolImplementation, new()
{
if (_poolIds.Contains(EcsTypeCode.Get<TPool>()))
int poolTypeCode = EcsTypeCode.Get<TPool>();
if (_poolIds.Contains(poolTypeCode))
throw new EcsFrameworkException("The pool has already been created.");
Type componentType = typeof(TPool).GetInterfaces().First(o => o.IsGenericType && o.GetGenericTypeDefinition() == typeof(IEcsPoolImplementation<>)).GetGenericArguments()[0];
@ -78,12 +79,12 @@ namespace DCFApixels.DragonECS
if (_componentIds.TryGetValue(componentTypeCode, out int componentID))
{
_poolIds[componentTypeCode] = componentID;
_poolIds[poolTypeCode] = componentID;
}
else
{
componentID = _poolsCount++;
_poolIds[componentTypeCode] = componentID;
_poolIds[poolTypeCode] = componentID;
_componentIds[componentTypeCode] = componentID;
}

View File

@ -1,6 +1,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Reflection;
using System.Runtime.CompilerServices;
namespace DCFApixels.DragonECS
@ -18,6 +19,18 @@ namespace DCFApixels.DragonECS
private T _fakeComponent;
private static bool _isInvalidType;
static EcsTagPool()
{
_isInvalidType = typeof(T).GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).Length > 0;
}
public EcsTagPool()
{
if (_isInvalidType)
throw new EcsFrameworkException($"{typeof(T).Name} type must not contain any data.");
}
#region Properites
public int Count => _count;
int IEcsPool.Capacity => -1;

View File

@ -137,22 +137,6 @@ namespace DCFApixels.DragonECS
}
#endregion
#region Equals
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool Equals(entlong other) => full == other.full;
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool Equals(long other) => full == other;
#endregion
#region Object
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode() => unchecked((int)full) ^ (int)(full >> 32);
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override string ToString() => $"entity(id:{id} g:{gen} w:{world} {(IsNull ? "null" : IsAlive ? "alive" : "not alive")})";
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override bool Equals(object obj) => obj is entlong other && full == other.full;
#endregion
#region operators
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool operator ==(entlong a, entlong b) => a.full == b.full;
@ -169,7 +153,18 @@ namespace DCFApixels.DragonECS
public static explicit operator int(entlong a) => a.ID;
#endregion
#region DebuggerProxy
#region Other
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode() => unchecked((int)full) ^ (int)(full >> 32);
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override string ToString() => $"entity(id:{id} g:{gen} w:{world} {(IsNull ? "null" : IsAlive ? "alive" : "not alive")})";
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override bool Equals(object obj) => obj is entlong other && full == other.full;
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool Equals(entlong other) => full == other.full;
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool Equals(long other) => full == other;
internal class DebuggerProxy
{
private List<object> _componentsList;