public bool CanAddChild(object child) { if (child.Is <IGameObject>() || child.Is <IGameObjectFolder>()) { return(false); } var domNode = child as DomNode; if (domNode != null) { foreach (var type in domNode.Type.Lineage) { if (type == Schema.placementsFolderType.Type) { return(true); } if (type == Schema.envSettingsFolderType.Type) { return(true); } } } return(PlacementsFolder.CanAddChild(child) | EnvSettingsFolder.CanAddChild(child)); }
void ICommandClient.DoCommand(object commandTag) { if (!(commandTag is Command)) { return; } switch ((Command)commandTag) { case Command.CreateTerrain: { if (DomNode.GetChild(Schema.xleGameType.terrainChild) == null) { var newNode = LevelEditorXLE.Terrain.XLETerrainGob.CreateWithConfigure(); if (newNode != null) { DomNode.SetChild(Schema.xleGameType.terrainChild, newNode); } } break; } case Command.CreatePlacementsFolder: { if (DomNode.GetChild(Schema.xleGameType.placementsChild) == null) { var newNode = PlacementsFolder.CreateWithConfigure(); if (newNode != null) { DomNode.SetChild(Schema.xleGameType.placementsChild, newNode); } } break; } case Command.CreateEnvironmentSetting: { var envFolder = EnvSettingsFolder; envFolder.AddChild( XLEEnvSettings.Create(envFolder.GetNameForNewChild())); break; } case Command.CreateTriMeshMarker: { this.As <IGame>().RootGameObjectFolder.As <IHierarchical>().AddChild(Markers.TriMeshMarker.Create()); break; } } }
public bool AddChild(object child) { if (child.Is <IGameObject>() || child.Is <IGameObjectFolder>()) { return(false); } if (EnvSettingsFolder.AddChild(child)) { return(true); } if (PlacementsFolder.AddChild(child)) { return(true); } var domNode = child.As <DomNode>(); if (domNode != null) { foreach (var type in domNode.Type.Lineage) { if (domNode.Type == Schema.placementsFolderType.Type) { SetChild(Schema.xleGameType.placementsChild, domNode); return(true); } if (domNode.Type == Schema.envSettingsFolderType.Type) { SetChild(Schema.xleGameType.environmentChild, domNode); return(true); } } } return(false); }