Exemple #1
0
        public DtoActionResult Update(EntityAsset asset)
        {
            var u = GetAsset(asset.Id);

            if (u == null)
            {
                return new DtoActionResult {
                           ErrorMessage = "Asset Not Found", Id = 0
                }
            }
            ;

            var actionResult = new DtoActionResult();

            var validationResult = Validate(asset, false);

            if (validationResult.Success)
            {
                _uow.AssetRepository.Update(asset, u.Id);

                _uow.Save();
                actionResult.Success = true;
                actionResult.Id      = asset.Id;
            }
            else
            {
                return(new DtoActionResult()
                {
                    ErrorMessage = validationResult.ErrorMessage
                });
            }
            return(actionResult);
        }
Exemple #2
0
        public void TestEntitySerialization()
        {
            var entityAsset = new EntityAsset();

            var entity1 = new Entity {
                Id = Guid.NewGuid()
            };
            var entity2 = new Entity {
                Id = Guid.NewGuid()
            };

            entity1.Transform.Children.Add(entity2.Transform);

            entityAsset.Hierarchy.Entities.Add(entity1);
            entityAsset.Hierarchy.Entities.Add(entity2);

            using (var stream = new MemoryStream())
            {
                AssetSerializer.Save(stream, entityAsset);

                stream.Position = 0;
                var serializedVersion = Encoding.UTF8.GetString(stream.ToArray());
                Console.WriteLine(serializedVersion);

                stream.Position = 0;
                var entityAsset2 = AssetSerializer.Load(stream, "xkentity");
            }
        }
Exemple #3
0
    public Entity SpawnEntity(EntityAsset asset, Team owner, Vector2 position, Quaternion?rotation = null, Transform parent = null)
    {
        parent = parent ?? GameManager.instance.ingameObject.transform;
        var prefab = asset.entityPrefab;

        if (prefab == null)
        {
            throw new ArgumentException($"{asset.entityPrefab.GetType().Name} does not have the same type as {asset.objectType.Name}!");
        }

        var result = Instantiate(prefab, position, rotation ?? new Quaternion(), parent)
                     .GetComponent <Entity>();

        result.Initiate(asset, owner);

        if (!entities.TryGetValue(owner, out var value))
        {
            value = new List <Entity>();
            entities.Add(owner, value);
        }
        value.Add(result);

        EntitySpawned?.Invoke(this, result);
        return(result);
    }
    //Defines entity spawner script. Creates entity archetype. To be attached to in game game object.
    public static void Define(EntityAsset entity, string name, StreamWriter sw)
    {
        string archName = name.ToLower() + "Archetype";

        sw.WriteLine("void Start() {");
        sw.WriteLine("EntityManager entityManager = World.DefaultGameObjectInjectionWorld.EntityManager;");
        sw.Write("EntityArchetype " + archName + " = entityManager.CreateArchetype(");
        for (int i = 0; i < entity.components.Length; i++)
        {
            if (i != entity.components.Length - 1)
            {
                sw.Write("typeof(" + entity.components[i].name + "),");
            }
            else
            {
                sw.Write("typeof(" + entity.components[i].name + "));");
            }
        }
        sw.WriteLine();
        sw.WriteLine("NativeArray<Entity> entityArray = new NativeArray<Entity>(quantity, Allocator.Temp);");
        sw.WriteLine("entityManager.CreateEntity(" + archName + ", entityArray);");
        sw.WriteLine();
        sw.WriteLine("//Utilize this portion to iterate through and set values.");
        sw.WriteLine("//for (int j = 0; j < entityArray.Length; j++) {");
        sw.WriteLine("//Entity entity = entityArray[j];");
        sw.WriteLine("//entityManager.SetComponentData(entity, new [COMPONENT TYPE] { value = [SET VALUE], value2 = [SET VALUE], . . . }); ");
        sw.WriteLine("//}");
        sw.WriteLine();
        sw.WriteLine("entityArray.Dispose(); //Always dispose of native arrays when finished.");
        sw.WriteLine("}");
    }
Exemple #5
0
        public static GameObject Instantiate(int id)
        {
            EntityAsset entityAsset  = EntityDatabase.Instance.Get(id);
            GameObject  entityPrefab = Resources.Load <GameObject>("Entity");
            GameObject  entity       = Instantiate(entityPrefab);

            entity.GetComponent <Entity> ().Setup(entityAsset);
            return(entity);
        }
    //Create script for Entity Archetypes spawner
    public static void Write(StreamWriter sw, string name, EntityAsset entityAsset)
    {
        ECSType type = ECSType.ENTITY;

        Header(type, sw, false);
        Class_StructDefinition(type, sw, name);
        Define(entityAsset, name, sw);
        Terminate(sw);
    }
 public void Setup(EntityAsset asset)
 {
     SkillCollection.SkillCollectionId = asset.SkillCollectionId;
     SkillCollection.SetupCollection();
     GambitCollection.GambitCollectionId = asset.GambitCollectionId;
     GambitCollection.SetupCollection();
     Perception.AlertMask = asset.AlertMask;
     Perception.Range     = asset.Vision;
     Tag = asset.Tag;
 }
Exemple #8
0
        public DtoActionResult Put(int id, EntityAsset asset)
        {
            asset.Id = id;
            var result = _serviceAsset.Update(asset);

            if (result == null)
            {
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound));
            }
            return(result);
        }
Exemple #9
0
        protected void buttonAdd_OnClick(object sender, EventArgs e)
        {
            var asset = new EntityAsset();

            asset.DisplayName = txtName.Text;
            asset.AssetTypeId = Convert.ToInt32(ddlAssetType.SelectedValue);

            var result = Call.AssetApi.Post(asset);

            if (result.Success)
            {
                EndUserMessage = "Successfully Created Asset";
                Response.Redirect("~/views/assets/customassets/edit.aspx?level=2&assetId=" + result.Id);
            }
            else
            {
                EndUserMessage = result.ErrorMessage;
            }
        }
Exemple #10
0
        public DtoValidationResult Validate(EntityAsset asset, bool isNew)
        {
            var validationResult = new DtoValidationResult {
                Success = true
            };

            if (string.IsNullOrEmpty(asset.DisplayName) || !asset.DisplayName.All(c => char.IsLetterOrDigit(c) || c == '_' || c == '-' || c == ' ' || c == '.'))
            {
                validationResult.Success      = false;
                validationResult.ErrorMessage = "Asset Name Is Not Valid";
                return(validationResult);
            }

            if (isNew)
            {
                if (_uow.AssetRepository.Exists(h => h.DisplayName == asset.DisplayName))
                {
                    validationResult.Success      = false;
                    validationResult.ErrorMessage = "An Asset With This Name Already Exists";
                    return(validationResult);
                }
            }
            else
            {
                var original = _uow.AssetRepository.GetById(asset.Id);
                if (original.DisplayName != asset.DisplayName)
                {
                    if (_uow.AssetRepository.Exists(h => h.DisplayName == asset.DisplayName))
                    {
                        validationResult.Success      = false;
                        validationResult.ErrorMessage = "An Asset With This Name Already Exists";
                        return(validationResult);
                    }
                }
            }

            return(validationResult);
        }
Exemple #11
0
        public DtoActionResult Add(EntityAsset assetType)
        {
            var actionResult = new DtoActionResult();

            var validationResult = Validate(assetType, true);

            if (validationResult.Success)
            {
                _uow.AssetRepository.Insert(assetType);
                _uow.Save();
                actionResult.Success = true;
                actionResult.Id      = assetType.Id;
            }
            else
            {
                return(new DtoActionResult()
                {
                    ErrorMessage = validationResult.ErrorMessage
                });
            }

            return(actionResult);
        }
Exemple #12
0
 public DtoActionResult Post(EntityAsset asset)
 {
     return(_serviceAsset.Add(asset));
 }
Exemple #13
0
        public void OnGUI()
        {
            scrollPosition = GUILayout.BeginScrollView(scrollPosition);

            for (int i = 0; i < EntityDatabase.GetAssetCount(); i++)
            {
                EntityAsset asset = EntityDatabase.GetAt(i);
                if (asset != null)
                {
                    GUILayout.BeginHorizontal(EditorStyles.toolbar);
                    GUILayout.Label(string.Format("ID: {0}", asset.ID.ToString("D3")), GUILayout.Width(60));

                    bool clicked = GUILayout.Toggle(asset.ID == activeID, asset.Name, ToggleButtonStyle);

                    if (clicked != (asset.ID == activeID))
                    {
                        if (clicked)
                        {
                            activeID = asset.ID;
                            GUI.FocusControl(null);
                        }
                        else
                        {
                            activeID = -1;
                        }
                    }

                    if (GUILayout.Button("-", EditorStyles.toolbarButton, GUILayout.Width(30)) && EditorUtility.DisplayDialog("Delete Entity", "Are you sure you want to delete " + asset.Name + " Entity?", "Delete", "Cancel"))
                    {
                        EntityDatabase.Instance.RemoveAt(i);
                    }

                    GUILayout.EndHorizontal();

                    if (activeID == asset.ID)
                    {
                        EditorGUI.BeginChangeCheck();

                        //START OF SELECTED VIEW
                        GUILayout.BeginVertical("Box");               //a
                        GUILayout.BeginHorizontal();                  //b
                        //SPRITE ON LEFT OF HORIZONTAL
                        GUILayout.BeginVertical(GUILayout.Width(75)); //c
                        GUILayout.Label("Entity Icon", GUILayout.Width(72));
                        asset.Icon = (Sprite)EditorGUILayout.ObjectField(asset.Icon, typeof(Sprite), false, GUILayout.Width(72), GUILayout.Height(72));
                        GUILayout.EndVertical();     //c

                        GUILayout.BeginVertical();   //d

                        GUILayout.BeginHorizontal(); //e
                        GUILayout.Label("Name", GUILayout.Width(80));
                        asset.Name = EditorGUILayout.TextField(asset.Name);
                        GUILayout.EndHorizontal();   //e
                        GUILayout.BeginHorizontal(); //f
                        GUILayout.Label("Description", GUILayout.Width(80));
                        asset.Description = EditorGUILayout.TextArea(asset.Description, GUILayout.MinHeight(50));
                        GUILayout.EndHorizontal(); //f
                        GUILayout.BeginHorizontal();
                        GUILayout.Label("Entity Class", GUILayout.Width(80));
                        asset.EClass = (EntityType)EditorGUILayout.EnumPopup(asset.EClass);
                        GUILayout.EndHorizontal();

                        GUILayout.BeginHorizontal();
                        GUILayout.Label("Player Type", GUILayout.Width(80));
                        asset.PType = (PlayerType)EditorGUILayout.EnumPopup(asset.PType);
                        GUILayout.EndHorizontal();

                        GUILayout.Space(10);

                        GUILayout.BeginVertical("Box");

                        GUILayout.Label(string.Format("Defualt Inventory: Contains {0} Item(s)", asset.DefualtInventory.Count));

                        GUILayout.Space(2);

                        for (int d = 0; d < asset.DefualtInventory.Count; d++)
                        {
                            GUILayout.BeginHorizontal(EditorStyles.helpBox);
                            GUILayout.Label(string.Format("Default Item {0}:", d.ToString("D2"), GUILayout.Width(60)));
                            asset.DefualtInventory[d] = EditorGUILayout.TextField(asset.DefualtInventory[d], GUILayout.MinWidth(350));
                            GUILayout.FlexibleSpace();
                            if (GUILayout.Button("x", EditorStyles.toolbarButton, GUILayout.Width(30)) && EditorUtility.DisplayDialog("Delete Item", "Are you sure you want to delete " + asset.DefualtInventory[d] + " Item?", "Delete", "Cancel"))
                            {
                                asset.DefualtInventory.RemoveAt(d);
                            }

                            GUILayout.EndHorizontal();
                        }
                        GUILayout.EndVertical();

                        GUILayout.Space(20);



                        GUILayout.EndVertical();   //d
                        GUILayout.EndHorizontal(); //b

                        GUILayout.BeginHorizontal();
                        if (GUILayout.Button("Add Defualt Item to Inventory", EditorStyles.toolbarButton))
                        {
                            asset.DefualtInventory.Add("");
                        }
                        GUILayout.EndHorizontal();

                        GUILayout.EndVertical();  //a



                        if (EditorGUI.EndChangeCheck())
                        {
                            EditorUtility.SetDirty(EntityDatabase.Instance);
                        }
                    }
                }
            }

            GUILayout.EndScrollView();

            GUILayout.BeginHorizontal();
            if (GUILayout.Button("New Entity", EditorStyles.toolbarButton))
            {
                var newAsset = new EntityAsset(EntityDatabase.Instance.GetNextId());
                EntityDatabase.Instance.Add(newAsset);
            }
            GUILayout.EndHorizontal();
        }
Exemple #14
0
 public T SpawnEntity <T>(EntityAsset asset, Team owner, Vector2 position, Quaternion?rotation = null, Transform parent = null) where T : Entity
 {
     return((T)this.SpawnEntity(asset, owner, position, rotation, parent));
 }
Exemple #15
0
 internal void Initiate(EntityAsset asset, Team owner)
 {
     this.entityAsset = asset;
     this.owner       = owner;
 }