Exemple #1
0
        public bool AddEntity(RuntimeTerraEntity entity)
        {
            if (_entities.Contains(entity))
            {
                return(false);
            }
            else
            {
                _entities.Add(entity);

                foreach (string label in entity.Labels)
                {
                    EntityOnLabelAdded(entity, label);
                }

                if (entity.EntityID == TerraGameResources.Instance.TerraEntityPrefabConfig.PlayerConfig.Data.EntityID)
                {
                    Player = entity;
                }

                entity.OnLabelAdded   += EntityOnLabelAdded;
                entity.OnLabelRemoved += EntityOnLabelRemoved;
                OnAddEntity?.Invoke(entity);
            }

            return(true);
        }
        private void OnPlayerLoaded(RuntimeTerraEntity[] entities)
        {
            for (int i = 0; i < entities.Length; i++)
            {
                if (entities[i].Entity.EntityID == TerraGameResources.Instance.TerraEntityPrefabConfig.PlayerConfig
                    .Data.EntityID)
                {
                    _playerEntity = entities[i];
                }
            }

            if (_playerEntity == null)
            {
                _playerEntity = _terraEntitiesService.CreateEntity(
                    TerraGameResources.Instance.TerraEntityPrefabConfig.PlayerConfig.Data);
                RuntimeTerraEntity[] tmpEntities = new RuntimeTerraEntity[entities.Length + 1];
                Array.Copy(entities, tmpEntities, 0);
                tmpEntities[tmpEntities.Length - 1] = _playerEntity;
                entities = tmpEntities;
            }

            _lastChunkLoadPosition = _playerEntity.Position.Data;
            _terraChunkService.GetChunk(new TerraArea()
            {
                height = 100, width = 100, x = (int)_playerEntity.Position.Data.x - 50, y = (int)_playerEntity.Position.Data.z - 50
            }, chunk =>
            {
                OnChunkLoaded(chunk);
                _terraEntitiesViewModel.AddEntities(entities);
            }, null);
        }
Exemple #3
0
 private void TerraEntitiesViewModelOnAddEntity(RuntimeTerraEntity obj)
 {
     if (obj.EntityTypeData.EntityID ==
         TerraGameResources.Instance.TerraEntityPrefabConfig.PlayerConfig.Data.EntityID)
     {
     }
 }
Exemple #4
0
        private void EntityOnLabelRemoved(RuntimeTerraEntity entity, string label)
        {
            _filteredEntities.TryGetValue(label, out HashSet <RuntimeTerraEntity> filterSet);

            if (filterSet != null)
            {
                filterSet.Remove(entity);
            }
        }
        public RuntimeTerraEntity CreateEntity(ITerraEntityType entityType)
        {
            TerraEntity     newEntity = new TerraEntity();
            AssembledEntity assembled = new AssembledEntity(newEntity);

            newEntity.EntityID = entityType.EntityID;
            _db.Write(newEntity, TerraEntity.Serializer, TerraEntity.WherePrimaryKey);
            RuntimeTerraEntity runtimeTerraEntity = new RuntimeTerraEntity(assembled, _db);

            return(runtimeTerraEntity);
        }
Exemple #6
0
        private void EntityOnLabelAdded(RuntimeTerraEntity entity, string label)
        {
            _filteredEntities.TryGetValue(label, out HashSet <RuntimeTerraEntity> filterSet);

            if (filterSet == null)
            {
                filterSet = new HashSet <RuntimeTerraEntity>();
                _filteredEntities.Add(label, filterSet);
            }

            filterSet.Add(entity);
        }
        private void CreateEntity(ITerraEntityType type)
        {
            RuntimeTerraEntity     entity = Game.Instance.GetService <TerraEntitesService>().CreateEntity(type);
            TerraEntitiesViewModel vm     = Game.Instance.GetViewModel <TerraEntitiesViewModel>(0);
            RuntimeTerraEntity     player = vm.GetEntity(TerraGameResources.Instance.TerraEntityPrefabConfig.PlayerConfig.Data);

            if (player != null)
            {
                entity.Position.Set(new Vector3(player.Position.Data.x, player.Position.Data.y + 2,
                                                player.Position.Data.z));
            }

            vm.AddEntity(entity);
        }
        public void LoadEntites(Action <RuntimeTerraEntity[]> onComplete, Action <Exception> onError)
        {
            AssembledEntitySerializer serializer = new AssembledEntitySerializer();

            AssembledEntity[] entities = _db.Get <AssembledEntitySerializer, AssembledEntity>(
                serializer,
                "",
                $"SELECT {GetColumnSelectors(AssembledEntitySerializer.TerraEntitySerializer)},{GetColumnSelectors(AssembledEntitySerializer.TerraPosition3DSerializer)} " +
                $"FROM {AssembledEntitySerializer.TerraEntitySerializer.Table} " +
                $"LEFT OUTER JOIN {AssembledEntitySerializer.TerraPosition3DSerializer.Table} " +
                $"ON {AssembledEntitySerializer.TerraEntitySerializer.Table}.{TerraEntitySerializer.COLUMN_INSTNACE_ID} = {AssembledEntitySerializer.TerraPosition3DSerializer.Table}.{TerraEntitySerializer.COLUMN_INSTNACE_ID}");

            RuntimeTerraEntity[] runtimeEntities = new RuntimeTerraEntity[entities.Length];

            for (int i = 0; i < entities.Length; i++)
            {
                runtimeEntities[i] = new RuntimeTerraEntity(entities[i], _db);
            }

            onComplete(runtimeEntities);
        }
Exemple #9
0
        public bool RemoveEntity(RuntimeTerraEntity entity)
        {
            if (!_entities.Contains(entity))
            {
                return(false);
            }
            else
            {
                _entities.Remove(entity);

                foreach (string label in entity.Labels)
                {
                    EntityOnLabelRemoved(entity, label);
                }

                entity.OnLabelAdded   -= EntityOnLabelAdded;
                entity.OnLabelRemoved -= EntityOnLabelRemoved;
                OnRemoveEntity?.Invoke(entity);
            }

            return(true);
        }
        public void LoadEntities(TerraArea area, Action <RuntimeTerraEntity[]> onComplete, Action onError)
        {
            AssembledEntitySerializer serializer = new AssembledEntitySerializer();

            string posTable = AssembledEntitySerializer.TerraPosition3DSerializer.Table;

            AssembledEntity[] entities = _db.Get <AssembledEntitySerializer, AssembledEntity>(
                serializer,
                "",
                $"SELECT {GetColumnSelectors(AssembledEntitySerializer.TerraEntitySerializer)},{GetColumnSelectors(AssembledEntitySerializer.TerraPosition3DSerializer)} " +
                $"FROM {AssembledEntitySerializer.TerraEntitySerializer.Table} " +
                $"LEFT OUTER JOIN {AssembledEntitySerializer.TerraPosition3DSerializer.Table} " +
                $"ON {AssembledEntitySerializer.TerraEntitySerializer.Table}.{TerraEntitySerializer.COLUMN_INSTNACE_ID} = {AssembledEntitySerializer.TerraPosition3DSerializer.Table}.{TerraEntitySerializer.COLUMN_INSTNACE_ID} " +
                $"WHERE {posTable}.x > {area.x} AND {posTable}.x < {area.x + area.width} AND {posTable}.y > {area.y} AND {posTable}.y < {area.y + area.height}");

            RuntimeTerraEntity[] runtimeEntities = new RuntimeTerraEntity[entities.Length];

            for (int i = 0; i < entities.Length; i++)
            {
                runtimeEntities[i] = new RuntimeTerraEntity(entities[i], _db);
            }

            onComplete(runtimeEntities);
        }
        private void OnAddEntity(RuntimeTerraEntity obj)
        {
            GameObject entity = Instantiate(_terraEntityPrefabConfig.GetGameObject(obj), transform);

            entity.GetComponent <TerraEntityMonoView>().Initilize(obj);
        }
 protected override void Initialize(RuntimeTerraEntity entity)
 {
     base.Initialize(entity);
     transform.position = new Vector3(entity.Position.Data.x, entity.Position.Data.y + 0.1f, entity.Position.Data.z);
 }
 public void Initilize(RuntimeTerraEntity entity)
 {
     Entity = entity;
     OnInitialize?.Invoke(entity);
 }
 protected virtual void Initialize(RuntimeTerraEntity Entity)
 {
     Initialized = true;
     _entityMonoView.OnInitialize -= Initialize;
 }