public void LaunchProjectile(Vector3 start, Vector3 end, GameComponent target) { Vector3 velocity = (end - start); float dist = velocity.Length(); float T = dist / Weapon.LaunchSpeed; velocity = 1.0f / T * (end - start) - 0.5f * Vector3.Down * 10 * T; Blackboard data = new Blackboard(); data.SetData("Velocity", velocity); data.SetData("Target", target); EntityFactory.CreateEntity <GameComponent>(Weapon.ProjectileType, start, data); }
public void LaunchProjectile(Vector3 start, Vector3 end, string faction) { Vector3 velocity = (end - start); float dist = velocity.Length(); float T = dist / LaunchSpeed; velocity = 1.0f / T * (end - start) - 0.5f * Vector3.Down * 10 * T; Blackboard data = new Blackboard(); data.SetData("Velocity", velocity); data.SetData("Faction", faction); EntityFactory.CreateEntity <Body>(ProjectileType, start, data); }
public static Blackboard Create <T>(string tag, T data) { Blackboard toReturn = new Blackboard(); toReturn.SetData(tag, data); return(toReturn); }
public static Blackboard CreateDict <T>(Dictionary <string, T> dict) { Blackboard toReturn = new Blackboard(); foreach (KeyValuePair <string, T> pair in dict) { toReturn.SetData(pair.Key, pair.Value); } return(toReturn); }
private GameComponent CreatePreviewBody() { Blackboard blackboard = new Blackboard(); if (SelectedResources != null && SelectedResources.Count > 0) { blackboard.SetData <List <ResourceAmount> >("Resources", SelectedResources); } blackboard.SetData <string>("CraftType", CraftType.Name); var previewBody = EntityFactory.CreateEntity <GameComponent>( CraftType.EntityName, World.UserInterface.VoxSelector.VoxelUnderMouse.WorldPosition, blackboard).GetRoot() as GameComponent; previewBody.SetFlagRecursive(GameComponent.Flag.Active, false); previewBody.SetVertexColorRecursive(Color.White); previewBody.SetFlag(GameComponent.Flag.ShouldSerialize, false); return(previewBody); }
private GameComponent CreatePreviewBody() { Blackboard blackboard = new Blackboard(); blackboard.SetData <Resource>("Resource", new Resource(CraftType)); var previewBody = EntityFactory.CreateEntity <GameComponent>( CraftType.Placement_EntityToCreate, World.UserInterface.VoxSelector.VoxelUnderMouse.WorldPosition, blackboard).GetRoot() as GameComponent; previewBody.SetFlagRecursive(GameComponent.Flag.Active, false); previewBody.SetVertexColorRecursive(Color.White); previewBody.SetFlag(GameComponent.Flag.ShouldSerialize, false); return(previewBody); }
public Resource SetProperty <T>(String Name, T Value) { var prop = typeof(ResourceType).GetField(Name); if (prop != null && prop.FieldType != typeof(T)) { throw new InvalidProgramException("Type mismatch between base ResourceType class and overridden value."); } if (MetaData == null) { MetaData = new Blackboard(); } MetaData.SetData <T>(Name, Value); return(this); }
private IEnumerable <Status> FinallyPlaceObject() { Item.Finished = true; if (Item.WorkPile != null) { Item.WorkPile.Die(); } var blackboard = new Blackboard(); blackboard.SetData("Resource", Item.SelectedResource); var previewBody = EntityFactory.CreateEntity <GameComponent>( Item.ItemType.Placement_EntityToCreate, Item.Location.WorldPosition, blackboard).GetRoot(); previewBody.LocalTransform = Item.Entity.LocalTransform; previewBody.SetFlagRecursive(GameComponent.Flag.Active, true); previewBody.SetVertexColorRecursive(Color.White); previewBody.SetFlagRecursive(GameComponent.Flag.Visible, true); foreach (var tinter in previewBody.EnumerateAll().OfType <Tinter>()) { tinter.Stipple = false; } if (Item.ItemType.Placement_MarkDestructable) { previewBody.Tags.Add("Deconstructable"); } if (Item.ItemType.Placement_AddToOwnedPool) { Creature.Faction.OwnedObjects.Add(previewBody); } Creature.Manager.World.ParticleManager.Trigger("puff", Voxel.WorldPosition, Color.White, 10); Creature.AI.AddXP((int)(5 * (Item.ItemType.Placement_PlaceTime / Creature.AI.Stats.Intelligence))); Item.Entity.Delete(); yield return(Status.Success); }