Exemple #1
0
        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"]);
                }
            }
        }
Exemple #2
0
    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;
    }