static EntityObjectsMap() { var entityObjects = SyncTypesMap.InterestingAssemblies .SelectMany(x => x.GetTypes()) .Where(x => typeof(IEntityObject).IsAssignableFrom(x) && x.IsAbstract) .ToDictionary(x => SyncTypesMap.GetNameWithoutGenericArity(x)); var defs = SyncTypesMap.InterestingAssemblies .SelectMany(x => x.GetTypes()) .Where(x => typeof(IEntityObjectDef).IsAssignableFrom(x)) .ToDictionary(x => SyncTypesMap.GetNameWithoutGenericArity(x)); var sceneDefs = SyncTypesMap.InterestingAssemblies .SelectMany(x => x.GetTypes()) .Where(x => typeof(ISceneDef).IsAssignableFrom(x)) .ToDictionary(x => SyncTypesMap.GetNameWithoutGenericArity(x)); foreach (var eObj in entityObjects) { if (defs.ContainsKey(eObj.Key + "Def")) { _defToInstanceType.Add(defs[eObj.Key + "Def"], eObj.Value); _instanceTypeToDef.Add(eObj.Value, defs[eObj.Key + "Def"]); } } foreach (var eObj in entityObjects) { if (sceneDefs.ContainsKey(eObj.Key + "SceneDef")) { _sceneDefToInstanceType.Add(sceneDefs[eObj.Key + "SceneDef"], eObj.Value); _instanceTypeToSceneDef.Add(eObj.Value, sceneDefs[eObj.Key + "SceneDef"]); } } }
void Start() { #if UNITY_EDITOR UnityEditor.EditorApplication.pauseStateChanged += EditorApplication_pauseStateChanged; #endif Definitions.Logger.LogError += (s) => Debug.LogError(s); Definitions.Logger.Log += (s) => Debug.LogError(s); SyncTypesMap.Init(); EnvironmentAPI.Curve = new UnityCurveApi(); DefsHolder.Instance = new Defs(new FolderLoader(Application.dataPath + "/../../Yogollag/Defs")); Debug.LogError(DefsHolder.Instance.Deserializer.Loader.GetRoot()); foreach (var root in DefsHolder.Instance.Deserializer.Loader.AllPossibleRoots) { //Debug.LogError(root); DefsHolder.Instance.LoadDef <BaseDef>(root); } server = new SimpleServer(); server.Start(9043); client = new SimpleClient(); client.Start(new RemoteConnectionToken() { IP = "127.0.0.1", Port = 9043 }, false); _source = new CancellationTokenSource(); Yogollag.EnvironmentAPI.Input = new UnityInputImpl(); Yogollag.EnvironmentAPI.Time = new UnityTimeImpl(); EnvironmentAPI.Draw = new UnityDrawImpl() { material = SimpleDrawMaterial }; EnvironmentAPI.Win = new UnityWindowApi(); EnvironmentAPI.Imgui = new UnityImguiApi(); Task.Run(async() => { while (!_source.Token.IsCancellationRequested) { UnityEngine.Profiling.Profiler.BeginSample("SERVER TICK"); server.Update(); UnityEngine.Profiling.Profiler.EndSample(); await Task.Delay(5); } }); client._node.LostEntity += _node_LostEntity; }