diff --git a/src/Common/Engine/Component.cs b/src/Common/Engine/Component.cs
index b7efd868..8c467fe8 100644
--- a/src/Common/Engine/Component.cs
+++ b/src/Common/Engine/Component.cs
@@ -12,19 +12,9 @@ namespace MineCase.Engine
{
internal interface IComponentIntern
{
-#if ECS_SERVER
- Task
-#else
- void
-#endif
- Attach(DependencyObject dependencyObject, ServiceProviderType serviceProvider);
+ void Attach(DependencyObject dependencyObject, ServiceProviderType serviceProvider);
-#if ECS_SERVER
- Task
-#else
- void
-#endif
- Detach();
+ void Detach();
int GetMessageOrder(object message);
}
@@ -58,61 +48,34 @@ public Component(string name)
Name = name;
}
-#if ECS_SERVER
- Task
-#else
- void
-#endif
- IComponentIntern.Attach(DependencyObject dependencyObject, ServiceProviderType serviceProvider)
+ void IComponentIntern.Attach(DependencyObject dependencyObject, ServiceProviderType serviceProvider)
{
AttachedObject = dependencyObject;
ServiceProvider = serviceProvider;
AttatchPartial(dependencyObject, serviceProvider);
-#if ECS_SERVER
- return
-#endif
OnAttached();
}
partial void AttatchPartial(DependencyObject dependencyObject, ServiceProviderType serviceProvider);
-#if ECS_SERVER
- Task
-#else
- void
-#endif
- IComponentIntern.Detach()
+ void IComponentIntern.Detach()
{
- AttachedObject = null;
-#if ECS_SERVER
- return
-#endif
OnDetached();
+ AttachedObject = null;
}
///
/// 组件被附加到实体时
///
- protected virtual
-
-#if ECS_SERVER
- Task
-#else
- void
-#endif
- OnAttached()
+ protected virtual void OnAttached()
{
-#if ECS_SERVER
- return Task.CompletedTask;
-#endif
}
///
/// 组件从实体卸载时
///
- protected virtual Task OnDetached()
+ protected virtual void OnDetached()
{
- return Task.CompletedTask;
}
///
diff --git a/src/Common/Engine/Data/DependencyValueStorage.cs b/src/Common/Engine/Data/DependencyValueStorage.cs
index e0c96203..6188bfb5 100644
--- a/src/Common/Engine/Data/DependencyValueStorage.cs
+++ b/src/Common/Engine/Data/DependencyValueStorage.cs
@@ -27,13 +27,7 @@ public IEnumerable Keys
public bool IsDirty { get; set; }
- public event
-#if ECS_SERVER
- AsyncEventHandler
-#else
- EventHandler
-#endif
- CurrentValueChanged;
+ public event EventHandler CurrentValueChanged;
public DependencyValueStorage()
{
@@ -54,12 +48,7 @@ public DependencyValueStorage(Dictionary AddOrUpdate(IDependencyValueProvider provider, DependencyProperty key, Func> addValueFactory, Func, Task>> updateValueFactory)
-#else
- IEffectiveValue AddOrUpdate(IDependencyValueProvider provider, DependencyProperty key, Func> addValueFactory, Func, IEffectiveValue> updateValueFactory)
-#endif
+ public IEffectiveValue AddOrUpdate(IDependencyValueProvider provider, DependencyProperty key, Func> addValueFactory, Func, IEffectiveValue> updateValueFactory)
{
var storage = GetStorage(provider, key);
var priority = provider.Priority;
@@ -70,43 +59,30 @@ IEffectiveValue AddOrUpdate(IDependencyValueProvider provider, DependencyProp
var value = addValueFactory(key);
storage.Add(priority, value);
value.ValueChanged = (s, e) => OnEffectiveValueChanged(priority, key, e.OldValue, e.NewValue);
+ IsDirty = true;
result = value;
var raiseChanged = storage.IndexOfKey(priority) == 0;
if (raiseChanged)
- {
-#if ECS_SERVER
- await
-#endif
OnCurrentValueChanged(key, false, null, true, value.Value);
- }
}
else
{
var oldValue = (IEffectiveValue)storage.Values[oldIdx];
- var newValue =
-#if ECS_SERVER
- await
-#endif
- updateValueFactory(key, oldValue);
+ var newValue = updateValueFactory(key, oldValue);
if (oldValue != newValue)
{
oldValue.ValueChanged = null;
newValue.ValueChanged = (s, e) => OnEffectiveValueChanged(priority, key, e.OldValue, e.NewValue);
storage[priority] = newValue;
+ IsDirty = true;
var raiseChanged = oldIdx == 0;
if (raiseChanged)
- {
-#if ECS_SERVER
- await
-#endif
OnCurrentValueChanged(key, true, oldValue.Value, true, newValue.Value);
- }
}
result = newValue;
}
- IsDirty = true;
return result;
}
@@ -149,28 +125,12 @@ public bool TryGetCurrentEffectiveValue(DependencyProperty key, out IEffectiveVa
return false;
}
- private
-#if ECS_SERVER
- Task
-#else
- void
-#endif
- OnCurrentValueChanged(DependencyProperty key, bool hasOldValue, object oldValue, bool hasNewValue, object newValue)
+ private void OnCurrentValueChanged(DependencyProperty key, bool hasOldValue, object oldValue, bool hasNewValue, object newValue)
{
- IsDirty = true;
-#if ECS_SERVER
- return
-#endif
CurrentValueChanged.InvokeSerial(this, new CurrentValueChangedEventArgs(key, hasOldValue, oldValue, hasNewValue, newValue));
}
- private
-#if ECS_SERVER
- Task
-#else
- void
-#endif
- OnEffectiveValueCleared(int index, DependencyProperty key, object oldValue)
+ private void OnEffectiveValueCleared(int index, DependencyProperty key, object oldValue)
{
IsDirty = true;
if (index == 0)
@@ -184,37 +144,18 @@ public bool TryGetCurrentEffectiveValue(DependencyProperty key, out IEffectiveVa
newValue = ((dynamic)list.Values[0]).Value;
}
-#if ECS_SERVER
- return
-#endif
OnCurrentValueChanged(key, true, oldValue, hasNewValue, newValue);
}
-
-#if ECS_SERVER
- return Task.CompletedTask;
-#endif
}
- private
-#if ECS_SERVER
- Task
-#else
- void
-#endif
- OnEffectiveValueChanged(float priority, DependencyProperty key, object oldValue, object newValue)
+ private void OnEffectiveValueChanged(float priority, DependencyProperty key, object oldValue, object newValue)
{
IsDirty = true;
SortedList list;
if (_dict.TryGetValue(key, out list) && list.IndexOfKey(priority) == 0)
{
-#if ECS_SERVER
- return
-#endif
OnCurrentValueChanged(key, true, oldValue, true, newValue);
}
-#if ECS_SERVER
- return Task.CompletedTask;
-#endif
}
public bool TryGetValue(IDependencyValueProvider provider, DependencyProperty key, out IEffectiveValue value)
@@ -231,13 +172,7 @@ public bool TryGetValue(IDependencyValueProvider provider, DependencyProperty
return false;
}
- public
-#if ECS_SERVER
- Task
-#else
- bool
-#endif
- TryRemove(IDependencyValueProvider provider, DependencyProperty key, out IEffectiveValue value)
+ public bool TryRemove(IDependencyValueProvider provider, DependencyProperty key, out IEffectiveValue value)
{
var storage = GetStorage(provider, key);
var priority = provider.Priority;
@@ -247,21 +182,12 @@ public bool TryGetValue(IDependencyValueProvider provider, DependencyProperty
value = (IEffectiveValue)eValue;
var index = storage.IndexOfKey(priority);
storage.RemoveAt(index);
-#if ECS_SERVER
- return OnEffectiveValueCleared(index, key, value.Value)
- .ContinueWith(t => true);
-#else
OnEffectiveValueCleared(index, key, value.Value);
return true;
-#endif
}
value = null;
-#if ECS_SERVER
- return Task.FromResult(false);
-#else
return false;
-#endif
}
private SortedList GetStorage(IDependencyValueProvider provider, DependencyProperty key)
diff --git a/src/Common/Engine/Data/IDependencyValueStorage.cs b/src/Common/Engine/Data/IDependencyValueStorage.cs
index 26e1f72f..39dafae7 100644
--- a/src/Common/Engine/Data/IDependencyValueStorage.cs
+++ b/src/Common/Engine/Data/IDependencyValueStorage.cs
@@ -18,13 +18,7 @@ public interface IDependencyValueStorage
///
/// 当前值变更事件
///
- event
-#if ECS_SERVER
- AsyncEventHandler
-#else
- EventHandler
-#endif
- CurrentValueChanged;
+ event EventHandler CurrentValueChanged;
///
/// 添加或更新
@@ -35,11 +29,7 @@ public interface IDependencyValueStorage
/// 添加工厂
/// 更新工厂
/// 新的值
-#if ECS_SERVER
- Task AddOrUpdate(IDependencyValueProvider provider, DependencyProperty key, Func> addValueFactory, Func, Task>> updateValueFactory);
-#else
IEffectiveValue AddOrUpdate(IDependencyValueProvider provider, DependencyProperty key, Func> addValueFactory, Func, IEffectiveValue> updateValueFactory);
-#endif
///
/// 尝试获取值
@@ -59,12 +49,7 @@ public interface IDependencyValueStorage
/// 依赖属性
/// 值
/// 是否成功删除
-#if ECS_SERVER
- Task
-#else
- bool
-#endif
- TryRemove(IDependencyValueProvider provider, DependencyProperty key, out IEffectiveValue value);
+ bool TryRemove(IDependencyValueProvider provider, DependencyProperty key, out IEffectiveValue value);
///
/// 尝试获取当前值
diff --git a/src/Common/Engine/Data/IEffectiveValue.cs b/src/Common/Engine/Data/IEffectiveValue.cs
index 00e534d3..ecf3a8c7 100644
--- a/src/Common/Engine/Data/IEffectiveValue.cs
+++ b/src/Common/Engine/Data/IEffectiveValue.cs
@@ -18,12 +18,7 @@ public interface IEffectiveValue
///
/// 获取值改变处理器
///
-#if ECS_SERVER
- AsyncEventHandler
-#else
- EventHandler
-#endif
- ValueChanged { set; }
+ EventHandler ValueChanged { set; }
}
///
@@ -46,12 +41,7 @@ public interface IEffectiveValue : IEffectiveValue
/// 设置值
///
/// 值
-#if ECS_SERVER
- Task
-#else
- void
-#endif
- SetValue(T value);
+ void SetValue(T value);
}
///
diff --git a/src/Common/Engine/Data/LocalDependencyValueExtensions.cs b/src/Common/Engine/Data/LocalDependencyValueExtensions.cs
index 995bd5c7..9ff92c19 100644
--- a/src/Common/Engine/Data/LocalDependencyValueExtensions.cs
+++ b/src/Common/Engine/Data/LocalDependencyValueExtensions.cs
@@ -31,17 +31,8 @@ public static bool TryGetLocalValue(this DependencyObject d, DependencyProper
/// 依赖对象
/// 依赖属性
/// 值
- public static
-#if ECS_SERVER
- Task
-#else
- void
-#endif
- SetLocalValue(this DependencyObject d, DependencyProperty property, T value)
+ public static void SetLocalValue(this DependencyObject d, DependencyProperty property, T value)
{
-#if ECS_SERVER
- return
-#endif
LocalDependencyValueProvider.Current.SetValue(property, d.ValueStorage, value);
}
@@ -51,17 +42,8 @@ public static
/// 值类型
/// 依赖对象
/// 依赖属性
- public static
-#if ECS_SERVER
- Task
-#else
- void
-#endif
- ClearLocalValue(this DependencyObject d, DependencyProperty property)
+ public static void ClearLocalValue(this DependencyObject d, DependencyProperty property)
{
-#if ECS_SERVER
- return
-#endif
LocalDependencyValueProvider.Current.ClearValue(property, d.ValueStorage);
}
}
diff --git a/src/Common/Engine/Data/LocalDependencyValueProvider.cs b/src/Common/Engine/Data/LocalDependencyValueProvider.cs
index f1c3652a..1bf81471 100644
--- a/src/Common/Engine/Data/LocalDependencyValueProvider.cs
+++ b/src/Common/Engine/Data/LocalDependencyValueProvider.cs
@@ -25,16 +25,6 @@ public class LocalDependencyValueProvider : IDependencyValueProvider
/// 依赖属性
/// 值存储
/// 值
-#if ECS_SERVER
- public Task SetValue(DependencyProperty property, IDependencyValueStorage storage, T value)
- {
- return storage.AddOrUpdate(this, property, o => new LocalEffectiveValue(value), async (k, o) =>
- {
- await ((LocalEffectiveValue)o).SetValue(value);
- return o;
- });
- }
-#else
public void SetValue(DependencyProperty property, IDependencyValueStorage storage, T value)
{
storage.AddOrUpdate(this, property, o => new LocalEffectiveValue(value), (k, o) =>
@@ -43,7 +33,6 @@ public void SetValue(DependencyProperty property, IDependencyValueStorage
return o;
});
}
-#endif
///
/// 尝试获取值
@@ -72,18 +61,9 @@ public bool TryGetValue(DependencyProperty property, IDependencyValueStora
/// 值类型
/// 依赖属性
/// 值存储
- public
-#if ECS_SERVER
- Task
-#else
- void
-#endif
- ClearValue(DependencyProperty property, IDependencyValueStorage storage)
+ public void ClearValue(DependencyProperty property, IDependencyValueStorage storage)
{
IEffectiveValue eValue;
-#if ECS_SERVER
- return
-#endif
storage.TryRemove(this, property, out eValue);
}
@@ -95,13 +75,7 @@ internal static IEffectiveValue FromValue(T value)
internal class LocalEffectiveValue : IEffectiveValue
{
///
- public
-#if ECS_SERVER
- AsyncEventHandler
-#else
- EventHandler
-#endif
- ValueChanged { get; set; }
+ public EventHandler ValueChanged { get; set; }
///
public bool CanSetValue => true;
@@ -119,19 +93,12 @@ public LocalEffectiveValue(T value)
}
///
-#if ECS_SERVER
- public async Task SetValue(T value)
-#else
public void SetValue(T value)
-#endif
{
if (!EqualityComparer.Default.Equals(_value, value))
{
var oldValue = _value;
_value = value;
-#if ECS_SERVER
- await
-#endif
ValueChanged.InvokeSerial(this, new EffectiveValueChangedEventArgs(oldValue, value));
}
}
diff --git a/src/Common/Engine/DependencyObject.cs b/src/Common/Engine/DependencyObject.cs
index 526646bd..1af69290 100644
--- a/src/Common/Engine/DependencyObject.cs
+++ b/src/Common/Engine/DependencyObject.cs
@@ -77,22 +77,13 @@ public T GetUnityComponent()
/// 设置组件
///
/// 组件
- public
-#if ECS_SERVER
- async Task
-#else
- void
-#endif
- SetComponent(Component component)
+ public void SetComponent(Component component)
{
var name = component.Name;
if (_components.TryGetValue(name, out var old))
{
if (old == component) return;
Unsubscribe(old);
-#if ECS_SERVER
- await
-#endif
old.Detach();
_indexes.Remove(old);
_components.Remove(name);
@@ -100,9 +91,6 @@ async Task
_components.Add(name, component);
_indexes.Add(component, _index++);
-#if ECS_SERVER
- await
-#endif
((IComponentIntern)component).Attach(this, ServiceProvider);
Subscribe(component);
}
@@ -111,22 +99,13 @@ async Task
/// 清除组件
///
/// 组件类型
- public
-#if ECS_SERVER
- async Task
-#else
- void
-#endif
- ClearComponent()
+ public void ClearComponent()
where T : Component
{
var components = _components.Where(o => o.Value is T);
foreach (var component in components)
{
Unsubscribe(component.Value);
-#if ECS_SERVER
- await
-#endif
component.Value.Detach();
_indexes.Remove(component.Value);
_components.Remove(component.Key);
@@ -142,8 +121,8 @@ async Task
///
public IDependencyValueStorage ValueStorage => _valueStorage;
- private readonly ConcurrentDictionary _propertyChangedHandlers = new ConcurrentDictionary();
- private readonly ConcurrentDictionary _propertyChangedHandlersGen = new ConcurrentDictionary();
+ private readonly Dictionary _propertyChangedHandlers = new Dictionary();
+ private readonly Dictionary _propertyChangedHandlersGen = new Dictionary();
private Delegate _anyPropertyChangedHandler;
///
@@ -167,46 +146,24 @@ public T GetValue(DependencyProperty property)
/// 值类型
/// 依赖属性
/// 值
- public
-#if ECS_SERVER
- Task
-#else
- void
-#endif
- SetCurrentValue(DependencyProperty property, T value)
+ public void SetCurrentValue(DependencyProperty property, T value)
{
IEffectiveValue eValue;
if (_valueStorage.TryGetCurrentEffectiveValue(property, out eValue) && eValue.CanSetValue)
{
-#if ECS_SERVER
- return
-#endif
eValue.SetValue(value);
}
else
{
-#if ECS_SERVER
- return
-#endif
this.SetLocalValue(property, value);
}
}
private static readonly MethodInfo _raisePropertyChangedHelper = typeof(DependencyObject).GetRuntimeMethods().Single(o => o.Name == nameof(RaisePropertyChangedHelper));
- private
-#if ECS_SERVER
- Task
-#else
- void
-#endif
- ValueStorage_CurrentValueChanged(object sender, CurrentValueChangedEventArgs e)
+ private void ValueStorage_CurrentValueChanged(object sender, CurrentValueChangedEventArgs e)
{
-#if ECS_SERVER
- return (Task)_raisePropertyChangedHelper.MakeGenericMethod(e.Property.PropertyType).Invoke(this, new object[] { e.Property, e });
-#else
_raisePropertyChangedHelper.MakeGenericMethod(e.Property.PropertyType).Invoke(this, new object[] { e.Property, e });
-#endif
}
///
@@ -215,16 +172,13 @@ public T GetValue(DependencyProperty property)
/// 值类型
/// 依赖属性
/// 处理器
- public void RegisterPropertyChangedHandler(
- DependencyProperty property,
-#if ECS_SERVER
- AsyncEventHandler>
-#else
- EventHandler>
-#endif
- handler)
+ public void RegisterPropertyChangedHandler(DependencyProperty property, EventHandler> handler)
{
- _propertyChangedHandlers.AddOrUpdate(property, handler, (k, old) => Delegate.Combine(old, handler));
+ if (_propertyChangedHandlers.TryGetValue(property, out var newHandler))
+ newHandler = Delegate.Combine(newHandler, handler);
+ else
+ newHandler = handler;
+ _propertyChangedHandlers[property] = newHandler;
}
///
@@ -233,19 +187,15 @@ public void RegisterPropertyChangedHandler(
/// 值类型
/// 依赖属性
/// 处理器
- public void RemovePropertyChangedHandler(
- DependencyProperty property,
-#if ECS_SERVER
- AsyncEventHandler>
-#else
- EventHandler>
-#endif
- handler)
+ public void RemovePropertyChangedHandler(DependencyProperty property, EventHandler> handler)
{
- Delegate d = null;
- _propertyChangedHandlers.TryRemove(property, out d);
- if (d != (Delegate)handler)
- _propertyChangedHandlers.AddOrUpdate(property, k => Delegate.Remove(d, handler), (k, old) => Delegate.Combine(old, Delegate.Remove(d, handler)));
+ if (_propertyChangedHandlers.TryGetValue(property, out var newHandler))
+ newHandler = Delegate.Remove(newHandler, handler);
+
+ if (newHandler == null)
+ _propertyChangedHandlers.Remove(property);
+ else
+ _propertyChangedHandlers[property] = newHandler;
}
///
@@ -253,16 +203,13 @@ public void RemovePropertyChangedHandler(
///
/// 依赖属性
/// 处理器
- public void RegisterPropertyChangedHandler(
- DependencyProperty property,
-#if ECS_SERVER
- AsyncEventHandler
-#else
- EventHandler
-#endif
- handler)
+ public void RegisterPropertyChangedHandler(DependencyProperty property, EventHandler handler)
{
- _propertyChangedHandlersGen.AddOrUpdate(property, handler, (k, old) => Delegate.Combine(old, handler));
+ if (_propertyChangedHandlersGen.TryGetValue(property, out var newHandler))
+ newHandler = Delegate.Combine(newHandler, handler);
+ else
+ newHandler = handler;
+ _propertyChangedHandlersGen[property] = newHandler;
}
///
@@ -270,32 +217,22 @@ public void RegisterPropertyChangedHandler(
///
/// 依赖属性
/// 处理器
- public void RemovePropertyChangedHandler(
- DependencyProperty property,
-#if ECS_SERVER
- AsyncEventHandler
-#else
- EventHandler
-#endif
- handler)
+ public void RemovePropertyChangedHandler(DependencyProperty property, EventHandler handler)
{
- Delegate d = null;
- _propertyChangedHandlersGen.TryRemove(property, out d);
- if (d != (Delegate)handler)
- _propertyChangedHandlersGen.AddOrUpdate(property, k => Delegate.Remove(d, handler), (k, old) => Delegate.Combine(old, Delegate.Remove(d, handler)));
+ if (_propertyChangedHandlersGen.TryGetValue(property, out var newHandler))
+ newHandler = Delegate.Remove(newHandler, handler);
+
+ if (newHandler == null)
+ _propertyChangedHandlersGen.Remove(property);
+ else
+ _propertyChangedHandlersGen[property] = newHandler;
}
///
/// 注册任意属性变更处理器
///
/// 处理器
- public void RegisterAnyPropertyChangedHandler(
-#if ECS_SERVER
- AsyncEventHandler
-#else
- EventHandler
-#endif
- handler)
+ public void RegisterAnyPropertyChangedHandler(EventHandler handler)
{
_anyPropertyChangedHandler = Delegate.Combine(_anyPropertyChangedHandler, handler);
}
@@ -304,24 +241,12 @@ public void RegisterAnyPropertyChangedHandler(
/// 删除任意属性变更处理器
///
/// 处理器
- public void RemoveAnyPropertyChangedHandler(
-#if ECS_SERVER
- AsyncEventHandler
-#else
- EventHandler
-#endif
- handler)
+ public void RemoveAnyPropertyChangedHandler(EventHandler handler)
{
_anyPropertyChangedHandler = Delegate.Remove(_anyPropertyChangedHandler, handler);
}
- internal
-#if ECS_SERVER
- async Task
-#else
- void
-#endif
- RaisePropertyChangedHelper(DependencyProperty property, CurrentValueChangedEventArgs e)
+ internal void RaisePropertyChangedHelper(DependencyProperty property, CurrentValueChangedEventArgs e)
{
var oldValue = e.HasOldValue ? (T)e.OldValue : GetDefaultValue(property);
var newValue = e.HasNewValue ? (T)e.NewValue : GetDefaultValue(property);
@@ -330,17 +255,8 @@ async Task
return;
var args = new PropertyChangedEventArgs(property, oldValue, newValue);
-#if ECS_SERVER
- await
-#endif
property.RaisePropertyChanged(_realType, this, args);
-#if ECS_SERVER
- await
-#endif
InvokeLocalPropertyChangedHandlers(args);
-#if ECS_SERVER
- await
-#endif
OnDependencyPropertyChanged(args);
}
@@ -349,29 +265,10 @@ async Task
///
/// 值类型
/// 参数
-#if ECS_SERVER
- public virtual Task OnDependencyPropertyChanged(PropertyChangedEventArgs args)
- {
- return Task.CompletedTask;
- }
-#else
public virtual void OnDependencyPropertyChanged(PropertyChangedEventArgs args)
{
}
-#endif
-#if ECS_SERVER
- private async Task InvokeLocalPropertyChangedHandlers(PropertyChangedEventArgs e)
- {
- Delegate d;
- if (_propertyChangedHandlers.TryGetValue(e.Property, out d))
- await ((AsyncEventHandler>)d).InvokeSerial(this, e);
-
- if (_propertyChangedHandlersGen.TryGetValue(e.Property, out d))
- await ((AsyncEventHandler)d).InvokeSerial(this, e);
- await ((AsyncEventHandler)_anyPropertyChangedHandler).InvokeSerial(this, e);
- }
-#else
private void InvokeLocalPropertyChangedHandlers(PropertyChangedEventArgs e)
{
Delegate d;
@@ -382,7 +279,6 @@ private void InvokeLocalPropertyChangedHandlers(PropertyChangedEventArgs e
((EventHandler)d).InvokeSerial(this, e);
((EventHandler)_anyPropertyChangedHandler).InvokeSerial(this, e);
}
-#endif
private T GetDefaultValue(DependencyProperty property)
{
diff --git a/src/Common/Engine/DependencyProperty.cs b/src/Common/Engine/DependencyProperty.cs
index 7bfc92a3..ab48c475 100644
--- a/src/Common/Engine/DependencyProperty.cs
+++ b/src/Common/Engine/DependencyProperty.cs
@@ -334,17 +334,8 @@ public bool TryGetDefaultValue(DependencyObject d, Type type, out T value)
return GetMetadata(type).TryGetDefaultValue(d, this, out value);
}
- internal
-#if ECS_SERVER
- Task
-#else
- void
-#endif
- RaisePropertyChanged(Type type, object sender, PropertyChangedEventArgs e)
+ internal void RaisePropertyChanged(Type type, object sender, PropertyChangedEventArgs e)
{
-#if ECS_SERVER
- return
-#endif
GetMetadata(type).RaisePropertyChanged(sender, e);
}
diff --git a/src/Common/Engine/PropertyMetadata.cs b/src/Common/Engine/PropertyMetadata.cs
index af198c94..7ff68ca1 100644
--- a/src/Common/Engine/PropertyMetadata.cs
+++ b/src/Common/Engine/PropertyMetadata.cs
@@ -27,27 +27,14 @@ public class PropertyMetadata
///
/// 属性更改事件
///
- public event
-#if ECS_SERVER
- AsyncEventHandler>
-#else
- EventHandler>
-#endif
- PropertyChanged;
+ public event EventHandler> PropertyChanged;
///
/// Initializes a new instance of the class.
///
/// 默认值
/// 属性更改处理器
- public PropertyMetadata(
- T defaultValue,
-#if ECS_SERVER
- AsyncEventHandler>
-#else
- EventHandler>
-#endif
- propertyChangedHandler = null)
+ public PropertyMetadata(T defaultValue, EventHandler> propertyChangedHandler = null)
{
_defaultValue = defaultValue;
_defaultValueSet = true;
@@ -60,14 +47,7 @@ public PropertyMetadata(
///
/// 未设置默认值
/// 属性更改处理器
- public PropertyMetadata(
- DependencyProperty.UnsetValueType unsetValue,
-#if ECS_SERVER
- AsyncEventHandler>
-#else
- EventHandler>
-#endif
- propertyChangedHandler = null)
+ public PropertyMetadata(DependencyProperty.UnsetValueType unsetValue, EventHandler> propertyChangedHandler = null)
{
_defaultValueSet = false;
if (propertyChangedHandler != null)
@@ -107,35 +87,20 @@ protected virtual bool TryGetDefaultValueOverride(DependencyObject d, Dependency
return false;
}
-#if ECS_SERVER
- internal async Task RaisePropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- await OnPropertyChanged(sender, e);
- await PropertyChanged.InvokeSerial(sender, e);
- }
-#else
internal void RaisePropertyChanged(object sender, PropertyChangedEventArgs e)
{
OnPropertyChanged(sender, e);
PropertyChanged.InvokeSerial(sender, e);
}
-#endif
///
/// 当属性修改时
///
/// 发送方
/// 参数
-#if ECS_SERVER
- protected virtual Task OnPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- return Task.CompletedTask;
- }
-#else
protected virtual void OnPropertyChanged(object sender, PropertyChangedEventArgs e)
{
}
-#endif
///
/// 合并属性元数据
@@ -155,13 +120,7 @@ internal void Merge(PropertyMetadata old, bool ownerIsDerived)
if (ownerIsDerived)
{
- PropertyChanged =
-#if ECS_SERVER
- (AsyncEventHandler>
-#else
- (EventHandler>
-#endif
-)Delegate.Combine(old.PropertyChanged, PropertyChanged);
+ PropertyChanged = (EventHandler>)Delegate.Combine(old.PropertyChanged, PropertyChanged);
}
MergeOverride(old);
diff --git a/src/MineCase.Algorithm/Game/Entity/Ai/MobAi/CreatureAi.cs b/src/MineCase.Algorithm/Game/Entity/Ai/MobAi/CreatureAi.cs
index b8b342ae..7d401edc 100644
--- a/src/MineCase.Algorithm/Game/Entity/Ai/MobAi/CreatureAi.cs
+++ b/src/MineCase.Algorithm/Game/Entity/Ai/MobAi/CreatureAi.cs
@@ -22,8 +22,8 @@ public CreatureAi(Func getter, Action setter)
_stateMachine = stateMachine;
}
- public Task FireAsync(CreatureEvent @event) =>
- _stateMachine.FireAsync(@event);
+ public void Fire(CreatureEvent @event) =>
+ _stateMachine.Fire(@event);
protected abstract void Configure(StateMachine stateMachine);
}
diff --git a/src/MineCase.Core/MineCase.Core.csproj b/src/MineCase.Core/MineCase.Core.csproj
index 55fbb0ef..37988cbc 100644
--- a/src/MineCase.Core/MineCase.Core.csproj
+++ b/src/MineCase.Core/MineCase.Core.csproj
@@ -38,6 +38,10 @@
+
+
+
+
diff --git a/src/MineCase.Core/World/GameTickArgs.cs b/src/MineCase.Core/World/GameTickArgs.cs
index a7000745..2ce1b9bc 100644
--- a/src/MineCase.Core/World/GameTickArgs.cs
+++ b/src/MineCase.Core/World/GameTickArgs.cs
@@ -4,6 +4,9 @@
namespace MineCase.World
{
+#if !NET46
+ [Orleans.Concurrency.Immutable]
+#endif
public sealed class GameTickArgs
{
public TimeSpan DeltaTime { get; set; }
diff --git a/src/MineCase.Engine/DependencyObject.Server.cs b/src/MineCase.Engine/DependencyObject.Server.cs
index b2616488..0f9b7546 100644
--- a/src/MineCase.Engine/DependencyObject.Server.cs
+++ b/src/MineCase.Engine/DependencyObject.Server.cs
@@ -5,6 +5,7 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using MineCase.Engine.Serialization;
+using Orleans.Streams;
namespace MineCase.Engine
{
@@ -18,9 +19,9 @@ public partial class DependencyObject
public override async Task OnActivateAsync()
{
Logger = ServiceProvider.GetRequiredService().CreateLogger(GetType());
- await InitializePreLoadComponent();
+ InitializePreLoadComponent();
await ReadStateAsync();
- await InitializeComponents();
+ InitializeComponents();
}
public override async Task OnDeactivateAsync()
@@ -35,14 +36,12 @@ public void Destroy()
DeactivateOnIdle();
}
- protected virtual Task InitializeComponents()
+ protected virtual void InitializeComponents()
{
- return Task.CompletedTask;
}
- protected virtual Task InitializePreLoadComponent()
+ protected virtual void InitializePreLoadComponent()
{
- return Task.CompletedTask;
}
public async Task ReadStateAsync()
@@ -115,5 +114,15 @@ public async Task ClearOperationQueue()
await _operationQueue.Dequeue()();
}
}
+
+ public IAsyncStream GetStream(string providerName, Guid streamId, string streamNamespace)
+ {
+ return GetStreamProvider(providerName).GetStream(streamId, streamNamespace);
+ }
+
+ public new IDisposable RegisterTimer(Func