public void AddEngine(IEngine engine) { #if ENGINE_PROFILER_ENABLED && UNITY_EDITOR EngineProfiler.AddEngine(engine); #endif var queryableNodeEngine = engine as IQueryableNodeEngine; if (queryableNodeEngine != null) { queryableNodeEngine.nodesDB = new EngineNodeDB(_nodesDB, _nodesDBdic, _metaNodesDB); } var engineType = engine.GetType(); var implementedInterfaces = engineType.GetInterfaces(); CollectImplementedInterfaces(implementedInterfaces); var engineAdded = CheckGenericEngines(engine); if (CheckLegacyNodesEngine(engine, ref engineAdded) == false) { CheckNodesEngine(engine, engineType, ref engineAdded); } if (engineAdded == false) { _otherEngines.Add(engine); } var callBackOnAddEngine = engine as ICallBackOnAddEngine; if (callBackOnAddEngine != null) { callBackOnAddEngine.Ready(); } }
public void AddEngine(IEngine engine) { #if ENGINE_PROFILER_ENABLED && UNITY_EDITOR EngineProfiler.AddEngine(engine); #endif if (engine is IQueryableNodeEngine) { (engine as IQueryableNodeEngine).nodesDB = new EngineNodeDB(_nodesDB, _nodesDBdic, _nodesDBgroups); } if (engine is INodesEngine) { var nodesEngine = engine as INodesEngine; AddEngine(nodesEngine, nodesEngine.AcceptedNodes(), _nodeEngines); } else { var engineType = engine.GetType(); // Type baseInterface = null; #if !NETFX_CORE var baseType = engineType.BaseType; if (baseType.IsGenericType #else var baseType = engineType.GetTypeInfo().BaseType; if (baseType.IsConstructedGenericType #endif && baseType.GetGenericTypeDefinition() == typeof(SingleNodeEngine <>)) { AddEngine(engine as INodeEngine <INode>, baseType.GetGenericArguments(), _nodeEngines); } else { _otherEnginesReferences.Add(engine); } } if (engine is ICallBackOnAddEngine) { (engine as ICallBackOnAddEngine).Ready(); } }
public void AddEngine(IEngine engine) { #if ENGINE_PROFILER_ENABLED && UNITY_EDITOR EngineProfiler.AddEngine(engine); #endif if (engine is IQueryableNodeEngine) { (engine as IQueryableNodeEngine).nodesDB = new EngineNodeDB(_nodesDB, _nodesDBdic, _nodesDBgroups); } if (engine is INodesEngine) { var nodesEngine = engine as INodesEngine; AddEngine(nodesEngine, nodesEngine.AcceptedNodes(), _nodeEngines); return; } #if !NETFX_CORE var baseType = engine.GetType().BaseType; if (baseType.IsGenericType) #else var baseType = engine.GetType().GetTypeInfo().BaseType; if (baseType.IsConstructedGenericType) #endif { var genericType = baseType.GetGenericTypeDefinition(); if (genericType == typeof(SingleNodeEngine <>)) { AddEngine(engine as INodeEngine <INode>, baseType.GetGenericArguments(), _nodeEngines); return; } } _otherEnginesReferences.Add(engine); }