private void LoadElements(XElement element, int parentTriggerIndex) { foreach (XElement subElement in element.Elements()) { switch (subElement.Name.ToString().ToLowerInvariant()) { case "sprite": Sprites.Add(new Sprite(subElement, lazyLoad: true)); break; case "specularsprite": SpecularSprites.Add(new Sprite(subElement, lazyLoad: true)); break; case "deformablesprite": DeformableSprite = new DeformableSprite(subElement, lazyLoad: true); break; case "overridecommonness": string levelType = subElement.GetAttributeString("leveltype", ""); if (!OverrideCommonness.ContainsKey(levelType)) { OverrideCommonness.Add(levelType, subElement.GetAttributeFloat("commonness", 1.0f)); } break; case "leveltrigger": case "trigger": OverrideProperties.Add(null); LevelTriggerElements.Add(subElement); LoadElements(subElement, LevelTriggerElements.Count - 1); break; case "childobject": ChildObjects.Add(new ChildObject(subElement)); break; case "overrideproperties": var propertyOverride = new LevelObjectPrefab(subElement); OverrideProperties[OverrideProperties.Count - 1] = propertyOverride; if (!propertyOverride.Sprites.Any() && propertyOverride.DeformableSprite == null) { propertyOverride.Sprites = Sprites; propertyOverride.DeformableSprite = DeformableSprite; } break; case "body": case "physicsbody": PhysicsBodyElement = subElement; PhysicsBodyTriggerIndex = parentTriggerIndex; break; } } }
private void AddOffscreenObjectToOnscreen() { var offscreenObjectToAdd = _offScreenObjects.FirstOrDefault(); if (offscreenObjectToAdd == null) { return; } var distanceToLastObject = GetDistanceToLastObject(); if (distanceToLastObject < offscreenObjectToAdd.DistanceToWait) { return; } _offScreenObjects.Remove(offscreenObjectToAdd); offscreenObjectToAdd.Object.ChangeSpawnPosition(Position); offscreenObjectToAdd.Object.Respawn(); ChildObjects.Add(offscreenObjectToAdd.Object); }
public void AddChild(IEntity entity) { ChildObjects.Add(entity); entity.Parent = this; entity.Path = Path + entity.DirectoryName; }
private void CreateQueueObject(ChildObjectCreateMethod factoryMethod, int xPos) { var newObject = factoryMethod(new Position(xPos, Position.YPos)); ChildObjects.Add(newObject); }