/// <summary> /// Generates and build prototype with resources informations within. /// </summary> public void Generate() { _dataLayer = new DataLayerManager(_configProvider, _prototype); Type data = Utils.LoadTypes(AppDomain.CurrentDomain.BaseDirectory) .Where(y => !y.IsAbstract && y.GetInterfaces().Contains(typeof(IBuilder))) .FirstOrDefault(type => ((IBuilder)Activator.CreateInstance(type)).IsPlatformSupported(_dataLayer.Platform)); if (data == null) { throw new ArgumentException("Data cannot be prepared."); } _dataLayerBuilder = (IBuilder)Activator.CreateInstance(data); _prototypeGenerator.Generate(_dataLayer.GetGenerable(), _configProvider); _dataLayerBuilder.Build(_configProvider, _dataLayer); var supportedStorages = _entityGenerator.Setup(_prototype, _dataLayer, _configProvider); _entityGenerator.Generate(); _dataLayer.Dispose(); CleanOutput(); GenerateApplications(); BuildApplications(); }
public IEntitySplat GenerateSplat(MapAreaPosition position, int entityLodLevel) { List <GrassEntity> outEntities = new List <GrassEntity>(); for (int i = 0; i < _entitiesCountProvider.GetCount(); i++) { GrassEntitiesSet grassEntities = _entitiesGenerator.Generate(); _positionProvider.SetPosition(grassEntities, position); _settingGenerator.SetSettings(grassEntities); Vector4 color = new Vector4(1, 1, 1, 1); if (entityLodLevel == 0) { color = new Vector4(1, 0, 0, 1); } else if (entityLodLevel == 1) { color = new Vector4(1, 1, 0, 1); } else if (entityLodLevel == 2) { color = new Vector4(0, 1, 0, 1); } else if (entityLodLevel == 3) { color = new Vector4(0, 1, 1, 1); } else if (entityLodLevel == 4) { color = new Vector4(0, 0, 1, 1); } else if (entityLodLevel == 5) { color = new Vector4(1, 0, 1, 1); } else if (entityLodLevel == 6) { color = new Vector4(0.5f, 0.5f, 0, 1); } else if (entityLodLevel == 7) { color = new Vector4(0.5f, 0, 0, 1); } grassEntities.EntitiesBeforeTransform.ForEach(c => c.AddUniform(ShaderUniformName._Color, color)); // todo repair it outEntities.AddRange(grassEntities.EntitiesAfterTransform); } return(CreateSplat(outEntities, _grassMaterial, _meshProvider.GetMesh(entityLodLevel))); }