当前位置: 首页>>代码示例>>C#>>正文


C# GameEntity.AddComponent方法代码示例

本文整理汇总了C#中GameEntity.AddComponent方法的典型用法代码示例。如果您正苦于以下问题:C# GameEntity.AddComponent方法的具体用法?C# GameEntity.AddComponent怎么用?C# GameEntity.AddComponent使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在GameEntity的用法示例。


在下文中一共展示了GameEntity.AddComponent方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: CreateEntityWithId

        public GameEntity CreateEntityWithId(string id, string name)
        {
            // look in the pool
            if (deadEntityPool.ContainsKey(name) && deadEntityPool[name].Any())
            {
                var entity = deadEntityPool[name].Pop();
                BindEntityEventRegistration(id, entity);
                return entity;
            }
            else
            {
                // clone it
                GameEntity entity = new GameEntity();
                GameEntity source = _entitySource.GetOriginalEntity(name);

                if (GetNumberAlive(name) >= source.MaxAlive) return null;

                foreach (Component c in source.Components)
                {
                    entity.AddComponent(c.Clone());
                }
                entity.Name = source.Name;
                entity.OnDeath = source.OnDeath;
                entity.IsGravitySensitive = source.IsGravitySensitive;

                BindEntityEventRegistration(id, entity);

                return entity;
            }
        }
开发者ID:Tesserex,项目名称:C--MegaMan-Engine,代码行数:30,代码来源:GameEntityPool.cs

示例2: LoadEntity

        private void LoadEntity(EntityInfo info)
        {
            if (entities.ContainsKey(info.Name))
                throw new GameEntityException("You have defined two entities both named \"" + info.Name + "\".");

            var entity = new GameEntity();
            entity.Name = info.Name;

            entities[info.Name] = entity;

            entity.IsGravitySensitive = info.GravityFlip;

            if (info.Death != null)
                entity.OnDeath = EffectParser.LoadTriggerEffect(info.Death);

            if (info.SpriteComponent != null)
                LoadSpriteComponent(entity, info.SpriteComponent);

            if (info.PositionComponent != null || info.SpriteComponent != null)
                LoadPositionComponent(entity, info.PositionComponent);

            if (info.MovementComponent != null)
                LoadMovementComponent(info.MovementComponent, entity);

            if (info.InputComponent != null)
                entity.AddComponent(new InputComponent());

            if (info.CollisionComponent != null)
                LoadCollisionComponent(entity, info.CollisionComponent);

            if (info.StateComponent != null)
                LoadStateComponent(entity, info.StateComponent);

            if (info.HealthComponent != null)
                LoadHealthComponent(entity, info.HealthComponent);

            if (info.WeaponComponent != null)
                LoadWeaponComponent(entity, info.WeaponComponent);

            if (info.LadderComponent != null)
                LoadLadderComponent(entity, info.LadderComponent);

            // everyone gets these
            entity.AddComponent(new SoundComponent());
            entity.AddComponent(new TimerComponent());
            entity.AddComponent(new VarsComponent());
        }
开发者ID:Tesserex,项目名称:C--MegaMan-Engine,代码行数:47,代码来源:GameEntitySource.cs

示例3: LoadHealthComponent

 private void LoadHealthComponent(GameEntity entity, HealthComponentInfo info)
 {
     var comp = new HealthComponent();
     entity.AddComponent(comp);
     comp.LoadInfo(info);
 }
开发者ID:Tesserex,项目名称:C--MegaMan-Engine,代码行数:6,代码来源:GameEntitySource.cs

示例4: LoadCollisionComponent

 private void LoadCollisionComponent(GameEntity entity, CollisionComponentInfo info)
 {
     var comp = new CollisionComponent();
     entity.AddComponent(comp);
     comp.Loadinfo(info);
 }
开发者ID:Tesserex,项目名称:C--MegaMan-Engine,代码行数:6,代码来源:GameEntitySource.cs

示例5: LoadWeaponComponent

 private void LoadWeaponComponent(GameEntity entity, WeaponComponentInfo info)
 {
     var comp = new WeaponComponent();
     entity.AddComponent(comp);
     comp.LoadInfo(info);
 }
开发者ID:Tesserex,项目名称:C--MegaMan-Engine,代码行数:6,代码来源:GameEntitySource.cs

示例6: LoadMovementComponent

 private static void LoadMovementComponent(MovementComponentInfo info, GameEntity entity)
 {
     var moveComp = new MovementComponent();
     entity.AddComponent(moveComp);
     moveComp.LoadInfo(info);
 }
开发者ID:Tesserex,项目名称:C--MegaMan-Engine,代码行数:6,代码来源:GameEntitySource.cs

示例7: LoadStateComponent

 private void LoadStateComponent(GameEntity entity, StateComponentInfo info)
 {
     var comp = new StateComponent();
     entity.AddComponent(comp);
     comp.LoadInfo(info);
 }
开发者ID:Tesserex,项目名称:C--MegaMan-Engine,代码行数:6,代码来源:GameEntitySource.cs

示例8: LoadSpriteComponent

        private void LoadSpriteComponent(GameEntity entity, SpriteComponentInfo componentInfo)
        {
            var spritecomp = new SpriteComponent();
            entity.AddComponent(spritecomp);

            spritecomp.LoadInfo(componentInfo);
        }
开发者ID:Tesserex,项目名称:C--MegaMan-Engine,代码行数:7,代码来源:GameEntitySource.cs

示例9: LoadPositionComponent

        private void LoadPositionComponent(GameEntity entity, PositionComponentInfo componentInfo)
        {
            var poscomp = new PositionComponent();
            entity.AddComponent(poscomp);

            if (componentInfo != null)
                poscomp.LoadInfo(componentInfo);
        }
开发者ID:Tesserex,项目名称:C--MegaMan-Engine,代码行数:8,代码来源:GameEntitySource.cs

示例10: LoadLadderComponent

 private void LoadLadderComponent(GameEntity entity, LadderComponentInfo info)
 {
     var comp = new LadderComponent();
     entity.AddComponent(comp);
     comp.LoadInfo(info);
 }
开发者ID:Tesserex,项目名称:C--MegaMan-Engine,代码行数:6,代码来源:GameEntitySource.cs

示例11: LoadEntity

        private void LoadEntity(XElement xml)
        {
            GameEntity entity = new GameEntity();
            string name = xml.RequireAttribute("name").Value;

            if (entities.ContainsKey(name)) throw new GameXmlException(xml, "You have defined two entities both named \"" + name + "\".");

            entity.Name = name;
            entity.MaxAlive = xml.TryAttribute<int>("limit", 50);

            SpriteComponent spritecomp = null;
            PositionComponent poscomp = null;
            StateComponent statecomp = new StateComponent();
            entity.AddComponent(statecomp);

            try
            {
                foreach (XElement xmlComp in xml.Elements())
                {
                    switch (xmlComp.Name.LocalName)
                    {
                        case "EditorData":
                            break;

                        case "Tilesheet":
                            if (spritecomp == null)
                            {
                                spritecomp = new SpriteComponent();
                                entity.AddComponent(spritecomp);
                            }
                            if (poscomp == null)
                            {
                                poscomp = new PositionComponent();
                                entity.AddComponent(poscomp);
                            }
                            spritecomp.LoadTilesheet(xmlComp);
                            break;

                        case "Trigger":
                            statecomp.LoadStateTrigger(xmlComp);
                            break;

                        case "Sprite":
                            if (spritecomp == null)
                            {
                                spritecomp = new SpriteComponent();
                                entity.AddComponent(spritecomp);
                            }
                            if (poscomp == null)
                            {
                                poscomp = new PositionComponent();
                                entity.AddComponent(poscomp);
                            }
                            spritecomp.LoadXml(xmlComp);
                            break;

                        case "Position":
                            if (poscomp == null)
                            {
                                poscomp = new PositionComponent();
                                entity.AddComponent(poscomp);
                            }
                            poscomp.LoadXml(xmlComp);
                            break;

                        case "Death":
                            entity.OnDeath += EffectParser.LoadTriggerEffect(xmlComp);
                            break;

                        case "GravityFlip":
                            entity.IsGravitySensitive = xmlComp.GetValue<bool>();
                            break;

                        default:
                            entity.GetOrCreateComponent(xmlComp.Name.LocalName).LoadXml(xmlComp);
                            break;
                    }
                }
            }
            catch (GameXmlException ex)
            {
                ex.Entity = name;
                throw;
            }

            entities.Add(name, entity);
        }
开发者ID:laazer,项目名称:cs_megaman,代码行数:87,代码来源:GameEntitySource.cs


注:本文中的GameEntity.AddComponent方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。