public void Check()
        {
            using (ListComponent <long> list = EntityFactory.Create <ListComponent <long> >(Domain))
            {
                long timeNow = TimeHelper.CurrentLocalMilliseconds();
                foreach ((long key, Entity value) in Children)
                {
                    ActorLocationSender actorLocationMessageSender = (ActorLocationSender)value;

                    if (timeNow > actorLocationMessageSender.LastSendOrRecvTime + TIMEOUT_TIME)
                    {
                        list.List.Add(key);
                    }
                }

                foreach (long id in list.List)
                {
                    Remove(id);
                }
            }
        }
Exemplo n.º 2
0
        public static BehaviorTree Create(Entity domain, string name)
        {
            string path = $"../Config/BehaviorDesigner/{name}.json";

            try
            {
                var behavior = Behavior.Create(path);

                if (behavior != null)
                {
                    var behaviorTree = EntityFactory.Create <BehaviorTree, Behavior>(domain, behavior);
                    behaviorTree.AddComponent <BehaviorTreeVariableComponent>();
                    return(behaviorTree);
                }

                return(null);
            }
            catch (Exception e)
            {
                throw new Exception($"load behavior file fail, path: {path} {e}");
            }
        }
Exemplo n.º 3
0
        public async void Lock(long key, long instanceId, int time = 0)
        {
            CoroutineLock coroutineLock = await CoroutineLockComponent.Instance.Wait(CoroutineLockType.Location, key);

            LockInfo lockInfo = EntityFactory.Create <LockInfo, long, CoroutineLock>(this.Domain, instanceId, coroutineLock);

            lockInfo.Parent = this;
            this.lockInfos.Add(key, lockInfo);

            Log.Info($"location lock key: {key} instanceId: {instanceId}");

            if (time > 0)
            {
                long lockInfoInstanceId = lockInfo.InstanceId;
                await TimerComponent.Instance.WaitAsync(time);

                if (lockInfo.InstanceId != lockInfoInstanceId)
                {
                    return;
                }
                UnLock(key, instanceId, instanceId);
            }
        }
Exemplo n.º 4
0
 public static FUITitleButton Create(Entity domain, GObject go)
 {
     return(EntityFactory.Create <FUITitleButton, GObject>(domain, go));
 }
Exemplo n.º 5
0
 public static FUITitleButton CreateInstance(Entity domain)
 {
     return(EntityFactory.Create <FUITitleButton, GObject>(domain, CreateGObject()));
 }
Exemplo n.º 6
0
        public async Task LoadOneBundleAsync(string assetBundleName)
        {
            ABInfo abInfo;

            if (bundles.TryGetValue(assetBundleName, out abInfo))
            {
                ++abInfo.RefCount;
                return;
            }

            if (Define.IsAsync)
            {
                string p = Path.Combine(PathHelper.AppHotfixResPath, assetBundleName);

                AssetBundle assetBundle = null;

                if (!File.Exists(p))
                {
                    p = Path.Combine(PathHelper.AppResPath, assetBundleName);
                }

                using (AssetsBundleLoaderAsync assetsBundleLoaderAsync = EntityFactory.Create <AssetsBundleLoaderAsync>(Domain))
                {
                    assetBundle = await assetsBundleLoaderAsync.LoadAsync(p);
                }

                if (assetBundle == null)
                {
                    throw new Exception($"assets bundle not found: {assetBundleName}");
                }

                if (!assetBundle.isStreamedSceneAssetBundle)
                {
                    // 异步load资源到内存cache住
                    UnityEngine.Object[] assets;

                    using (AssetsLoaderAsync assetsLoaderAsync = EntityFactory.Create <AssetsLoaderAsync, AssetBundle>(Domain, assetBundle))
                    {
                        assets = await assetsLoaderAsync.LoadAllAssetsAsync();
                    }

                    foreach (UnityEngine.Object asset in assets)
                    {
                        AddResource(assetBundleName, asset.name, asset);
                    }
                }

                abInfo = EntityFactory.CreateWithParent <ABInfo, string, AssetBundle>(this, assetBundleName, assetBundle);
                bundles[assetBundleName] = abInfo;
            }
            else
            {
                var assetPaths = AssetDatabaseHelper.GetAssetPathsFromAssetBundle(assetBundleName);

                if (assetPaths != null)
                {
                    foreach (string s in assetPaths)
                    {
                        string             assetName = Path.GetFileNameWithoutExtension(s);
                        UnityEngine.Object resource  = AssetDatabaseHelper.LoadAssetAtPath(s);
                        AddResource(assetBundleName, assetName, resource);
                    }
                }

                abInfo = EntityFactory.CreateWithParent <ABInfo, string, AssetBundle>(this, assetBundleName, null);
                bundles[assetBundleName] = abInfo;
            }
        }
Exemplo n.º 7
0
 public static FUILogin Create(Entity domain, GObject go)
 {
     return(EntityFactory.Create <FUILogin, GObject>(domain, go));
 }
Exemplo n.º 8
0
 public static FUILobby CreateInstance(Entity domain)
 {
     return(EntityFactory.Create <FUILobby, GObject>(domain, CreateGObject()));
 }
Exemplo n.º 9
0
 public override void Awake(FUIComponent self)
 {
     self.Root = EntityFactory.Create <FUI, GObject>(Game.Scene, GRoot.inst);
 }