示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        public static Blackboard Create <T>(string tag, T data)
        {
            Blackboard toReturn = new Blackboard();

            toReturn.SetData(tag, data);
            return(toReturn);
        }
示例#4
0
        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);
        }
示例#6
0
        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);
        }
示例#7
0
        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);
        }
示例#8
0
        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);
        }