本文整理汇总了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;
}
}
示例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());
}
示例3: LoadHealthComponent
private void LoadHealthComponent(GameEntity entity, HealthComponentInfo info)
{
var comp = new HealthComponent();
entity.AddComponent(comp);
comp.LoadInfo(info);
}
示例4: LoadCollisionComponent
private void LoadCollisionComponent(GameEntity entity, CollisionComponentInfo info)
{
var comp = new CollisionComponent();
entity.AddComponent(comp);
comp.Loadinfo(info);
}
示例5: LoadWeaponComponent
private void LoadWeaponComponent(GameEntity entity, WeaponComponentInfo info)
{
var comp = new WeaponComponent();
entity.AddComponent(comp);
comp.LoadInfo(info);
}
示例6: LoadMovementComponent
private static void LoadMovementComponent(MovementComponentInfo info, GameEntity entity)
{
var moveComp = new MovementComponent();
entity.AddComponent(moveComp);
moveComp.LoadInfo(info);
}
示例7: LoadStateComponent
private void LoadStateComponent(GameEntity entity, StateComponentInfo info)
{
var comp = new StateComponent();
entity.AddComponent(comp);
comp.LoadInfo(info);
}
示例8: LoadSpriteComponent
private void LoadSpriteComponent(GameEntity entity, SpriteComponentInfo componentInfo)
{
var spritecomp = new SpriteComponent();
entity.AddComponent(spritecomp);
spritecomp.LoadInfo(componentInfo);
}
示例9: LoadPositionComponent
private void LoadPositionComponent(GameEntity entity, PositionComponentInfo componentInfo)
{
var poscomp = new PositionComponent();
entity.AddComponent(poscomp);
if (componentInfo != null)
poscomp.LoadInfo(componentInfo);
}
示例10: LoadLadderComponent
private void LoadLadderComponent(GameEntity entity, LadderComponentInfo info)
{
var comp = new LadderComponent();
entity.AddComponent(comp);
comp.LoadInfo(info);
}
示例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);
}