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); }
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"); } }
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("}"); }
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; }
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); }
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; } }
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); }
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); }
public DtoActionResult Post(EntityAsset asset) { return(_serviceAsset.Add(asset)); }
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(); }
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)); }
internal void Initiate(EntityAsset asset, Team owner) { this.entityAsset = asset; this.owner = owner; }