Ejemplo n.º 1
0
        private void Initialize()
        {
            //var backgroundColorStandard = new Color4(0.7f, 0.7f, 0.7f, 1.0f);
            var backgroundColorStandard = new Color4(0.157f, 0.157f, 0.157f, 1.0f);

            _backgroundManager   = new BackgroundManager(backgroundColorStandard);
            _screenBufferManager = new ScreenBufferManager(_backgroundManager);
            _viewportManager     = new ViewportManager(_control);

            _textureProvider = new TextureProvider();
            _shaderProvider  = new ShaderProvider();
            _sceneManager    = new SceneManager(new Scene("Main"));
            WorldAxes.AddAxesToNode(_shaderProvider, _sceneManager.CurrentScene);

            _camera      = new Camera(_viewportManager);
            _camMovement = new CameraMovement(_camera, _control);
            _renderLoop  = new RenderLoop(_control, _screenBufferManager, _sceneManager, _camera, _shaderProvider);

            _grid       = new Grid(_camera, _renderLoop, new LineRenderer(_shaderProvider.DefaultShader));
            _simulation = new JellySimulation(_sceneManager, _shaderProvider);
            _jellyInput = new JellyInput(_simulation.Jelly, _simulation.ControlFrame, _control, _camera);

            _window.tessellationParametersView.DataContext = Registry.TessellationLevels;
            _window.meshSelector.Initialize(_simulation);
            _window.polygonFillView.Initialize();
        }
Ejemplo n.º 2
0
        public void LoadContent()
        {
            // Load all textures from the list
            foreach (string texName in texturesToLoad)
            {
                if (!texIsMultiple.IsMatch(texName))
                {
                    TextureProvider.Add(texName, Content.Load <Texture2D>(texName));
                }
                // If texture is specified in the form of "name0..20", it means that we should load "name0", "name1" ... "name20"
                else
                {
                    string name  = texMultipleGetName.Match(texName).Value;
                    int[]  range = Array.ConvertAll(texIsMultiple.Match(texName).Value.Split(new string[] { ".." }, StringSplitOptions.RemoveEmptyEntries), int.Parse);
                    for (int i = range[0]; i <= range[1]; i++)
                    {
                        TextureProvider.Add(name + i, Content.Load <Texture2D>(name + i));
                    }
                }
            }
            texPixel = TextureProvider["img/pixel"];

            // Load all fonts from the list
            foreach (string fontName in fontsToLoad)
            {
                FontProvider.Add(fontName, Content.Load <SpriteFont>(fontName));
            }
        }
Ejemplo n.º 3
0
 private void loadMaterials(List <ModelMaterial> modelMaterials, TextureProvider textureProvider)
 {
     foreach (ModelMaterial mtl in modelMaterials)
     {
         this.materials.Add(convertMaterial(mtl, textureProvider));
     }
 }
Ejemplo n.º 4
0
 public void VpkVtfCollectionTest()
 {
     TextureProvider.Register(new VmtProvider());
     var collection = TextureProvider.CreateCollection(new[]
     {
         @"F:\Steam\SteamApps\common\Team Fortress 2\tf"
     }, null, null, null);
 }
Ejemplo n.º 5
0
 protected void load(ModelData modelData, TextureProvider textureProvider)
 {
     loadMeshes(modelData.meshes);
     loadMaterials(modelData.materials, textureProvider);
     loadNodes(modelData.nodes);
     //loadAnimations(modelData.animations);
     calculateTransforms();
 }
Ejemplo n.º 6
0
        public void FixTargetTexture(GameObject go)
        {
            var renderer = go.GetComponent <Renderer>();
            var material = new UnityEngine.Material(renderer.sharedMaterial);

            material.mainTexture    = TextureProvider.GetTexture("target1-rock");
            material.color          = UnityEngine.Color.white;
            renderer.sharedMaterial = material;
        }
Ejemplo n.º 7
0
        public Ship(TextureProvider textureProvider, Viewport viewport, IPlayingFieldManager playingFieldManager) : base(viewport)
        {
            _texture = textureProvider.Ship;
            Origin   = new Vector2(_texture.Width / 2f, _texture.Height / 2f);

            _playingField = playingFieldManager;

            oldKeyState = Keyboard.GetState();
        }
Ejemplo n.º 8
0
        public void Configure()
        {
            config = new ConfigLoader <WorldConfig>(new[] { "Worlds" }).GetConfig(worldConfig);

            textureProvider = Voxelmetric.resources.GetTextureProvider(this);
            blockProvider   = Voxelmetric.resources.GetBlockProvider(this);

            renderMaterial.mainTexture = textureProvider.atlas;
        }
    public override void Start()
    {
        base.Start();

        if (Instance == null)
        {
            Instance = this;
        }
    }
Ejemplo n.º 10
0
        public void FixSpinnerTexture(GameObject go)
        {
            var plate    = go.transform.Find("Plate").gameObject;
            var renderer = plate.GetComponent <Renderer>();
            var material = new UnityEngine.Material(renderer.sharedMaterial);

            material.mainTexture    = TextureProvider.GetTexture("spinner_gottlieb");
            material.color          = UnityEngine.Color.white;
            renderer.sharedMaterial = material;
        }
Ejemplo n.º 11
0
        public PlayingFieldManager(TextureProvider textureProvider, Viewport viewport)
        {
            _textureProvider = textureProvider;
            _viewport        = viewport;
            SpawnAsteroids();

            Player = new Ship(_textureProvider, viewport, this);

            // Center the player in the screen.
            CenterObjectInScreen(Player);
        }
Ejemplo n.º 12
0
        public WpfScene(TextureProvider<BitmapSource> textureProvider, MeshViewSettingsViewModel settingsViewModel)
        {
            _viewPort = new Viewport3D();
            
            _rendererCamera = new WpfRendererCamera(_viewPort, Vector3.Zero);

            _textureProvider = textureProvider;
            var lightGroup = new Model3DGroup();
            var light = new PointLight(Colors.Cornsilk, _rendererCamera.Position.AsPoint3D());
            CameraLight = new WpfLight(light);
            lightGroup.Children.Add(light);

            _viewPort.Children.Add(new ModelVisual3D {Content = lightGroup});

            _meshModelGroup = new Model3DGroup();
            _wireFrameModelGroup = new Model3DGroup();

            _allModelGroup = new Model3DGroup();
            _allModelGroup.Children.Add(_meshModelGroup);
            _allModelGroup.Children.Add(_wireFrameModelGroup);

            var rotation = new RotateTransform3D();
            _quaternionRotation = new QuaternionRotation3D();
            rotation.Rotation = _quaternionRotation;
            _allModelGroup.Transform = rotation;

            var visual = new ModelVisual3D {Content = _allModelGroup};

            _viewPort.Children.Add(visual);

            var border = new Border{Background = Brushes.Black};
            border.Child = _viewPort;
            Visual = border;
            MouseInput = new WpfMouseInput(border);


            settingsViewModel.WhenAnyValue(s => s.MeshEnabled,
                s => s.WireFrameEnabled).Subscribe(_ =>
            {
                ToggleMesh(settingsViewModel.MeshEnabled);
                ToggleWireFrame(settingsViewModel.WireFrameEnabled);
            });

            settingsViewModel.WhenAnyValue(
                s => s.YRotation,
                s => s.XRotation,
                s => s.ZRotation).Subscribe(_ =>
            {
                SetRootRotation(
                    new Quaternion(new Vector3D(1, 0, 0), settingsViewModel.XRotation) *
                    new Quaternion(new Vector3D(0, 1, 0), settingsViewModel.YRotation) *
                    new Quaternion(new Vector3D(0, 0, 1), settingsViewModel.ZRotation));
            });
        }
Ejemplo n.º 13
0
 public ITexture GetTexture(string name)
 {
     if (!TextureHelper.Exists(name))
     {
         var ti = TextureCollection.GetItem(name);
         if (ti != null)
         {
             TextureProvider.LoadTextureItem(ti);
         }
     }
     return(TextureHelper.Get(name));
 }
Ejemplo n.º 14
0
 public NoesisProviderManager(
     XamlProvider xamlProvider,
     FontProvider fontProvider,
     TextureProvider textureProvider)
 {
     this.provider = new Provider()
     {
         XamlProvider    = xamlProvider,
         TextureProvider = textureProvider,
         FontProvider    = fontProvider
     };
 }
Ejemplo n.º 15
0
        public ProviderTexture(ApplicationContext context, TextureProvider provider)
        {
            Assert.ArgumentNotNull(context, nameof(context));
            Assert.ArgumentNotNull(provider, nameof(provider));

            Assert.ArgumentTrue(ReferenceEquals(provider.resolution, context.TextureResolution), $"{nameof (provider)}.resolution is not {nameof (context)}.TextureResolution");

            Context       = context;
            this.provider = provider;

            RenderTexture = TextureUtility.CreateRenderTexture(context.TextureResolution.AsVector);

            provider.Changed += (s, e) => RenderTexture = provider.Texture;
        }
Ejemplo n.º 16
0
        public static void LoadTextures(TextureProvider textureProvider, SpriteProvider spriteProvider, string folderLocation)
        {
            var texturePaths = FileServices.GetResourceFiles(folderLocation, ".png", ".jpg");

            // build textures and sprite
            foreach (var path in texturePaths)
            {
                var texture = FileServices.LoadTextureResource(path);
                var sprite  = FileServices.CreateSpriteFromTexture(texture);

                textureProvider.AddTexture(texture);
                spriteProvider.AddSprite(sprite);
            }
        }
Ejemplo n.º 17
0
        public TextureProvider GetTextureProvider(World world)
        {
            // Check for the folder in the dictionary and if it doesn't exist create it
            TextureProvider textureProvider;

            if (TextureProviders.TryGetValue(world.config.textureFolder, out textureProvider))
            {
                return(textureProvider);
            }

            textureProvider = TextureProvider.Create(world.config);
            TextureProviders.Add(world.config.textureFolder, textureProvider);
            return(textureProvider);
        }
Ejemplo n.º 18
0
        public static void Start()
        {
            MapProvider.Register(new RmfProvider());
            MapProvider.Register(new VmfProvider());
            GameDataProvider.Register(new FgdProvider());
            TextureProvider.Register(new WadProvider());

            // var editor = new Editor.Editor();
            // editor.Load += (sender, e) => PostStart(sender as Editor.Editor);
            // Application.Run(editor);
            // var settings = Context.DBContext.GetAllSettings().ToDictionary(x => x.Key, x => x.Value);
            // Serialise.DeserialiseSettings(settings);
            // var settingsform = new Editor.Settings.SettingsForm();
            // Application.Run(settingsform);

            // var map = MapProvider.GetMapFromFile(MapFile);
            // Document.Game = Game;
            // Document.Map = map;
            // Document.GameData = GameDataProvider.GetGameDataFromFiles(Game.Fgds.Select(f => f.Path));
            // var entity = new EntityEditor();
            // entity.Objects.AddRange(map.WorldSpawn.Children.OfType<Entity>().Take(1));
            // Application.Run(entity);

            /*
             * var nat = new NativeFile(new DirectoryInfo(@"F:\Steam\steamapps\common\Half-Life"));
             * var gcf1 = new GcfFile(@"F:\Steam\steamapps\half-life.gcf");
             * var gcf2 = new GcfFile(@"F:\Steam\steamapps\half-life engine.gcf");
             * //var gcf3 = new GcfFile(@"F:\Steam\steamapps\half-life base content.gcf");
             * var gcf4 = new GcfFile(@"F:\Steam\steamapps\platform.gcf");
             * var com = new CompositeFile(null, new IFile[] { nat, gcf1, gcf2, gcf4 });
             */
            var nat = new NativeFile(new DirectoryInfo(@"F:\Half-Life WON"));
            var com = new CompositeFile(null, new[]
            {
                new NativeFile(new DirectoryInfo(@"F:\Half-Life WON\valve")),
                new NativeFile(new DirectoryInfo(@"F:\Half-Life WON\tfc")),
            });
            //var pak = new PakFile(@"F:\Half-Life WON\valve\pak0.pak");
            // var vir = new VirtualFile(null, "valve", new[] {pak});
            //var com = new CompositeFile(null, new IFile[] { nat, vir });
            var fsb = new FileSystemBrowserControl {
                Dock = DockStyle.Fill, File = com
            };                                                                         //, FilterText = "WAD Files", Filter = "*.wad"};
            var form = new Form {
                Controls = { fsb }, Width = 500, Height = 500
            };

            Application.Run(form);
        }
Ejemplo n.º 19
0
        public void Configure()
        {
            config = new ConfigLoader <WorldConfig>(new[] { "Worlds" }).GetConfig(worldConfig);
            VerifyConfig();

            textureProvider = Voxelmetric.resources.GetTextureProvider(this);
            blockProvider   = Voxelmetric.resources.GetBlockProvider(this);

            textureProvider.Init(config);
            blockProvider.Init(config.blockFolder, this);

            foreach (var renderMaterial in renderMaterials)
            {
                renderMaterial.mainTexture = textureProvider.atlas;
            }
        }
Ejemplo n.º 20
0
        public UxContext(
            string windowTitle,
            IUxConfig uxConfig,
            string imagesPath,
            string audiosPath,
            string fontsPath
            )
        {
            Title    = windowTitle;
            UxConfig = uxConfig;
            OnWindowResize(uxConfig.ScreenSize);

            var sdlWindowFlags = SDL.SDL_WindowFlags.SDL_WINDOW_RESIZABLE;

            if (uxConfig.Maximized)
            {
                sdlWindowFlags |= SDL.SDL_WindowFlags.SDL_WINDOW_MAXIMIZED;
            }

            SDL.SDL_Init(SDL.SDL_INIT_VIDEO | SDL.SDL_INIT_AUDIO);
            SDL_ttf.TTF_Init();

            Window = SDL.SDL_CreateWindow(
                windowTitle,
                SDL.SDL_WINDOWPOS_CENTERED,
                SDL.SDL_WINDOWPOS_CENTERED,
                ScreenSize.Width, ScreenSize.Height,
                sdlWindowFlags
                );

            WRenderer = SDL.SDL_CreateRenderer(Window, -1, 0);
            SDL.SDL_SetRenderDrawColor(WRenderer, 0, 0, 0, 0);
            SDL.SDL_SetRenderDrawBlendMode(WRenderer, SDL.SDL_BlendMode.SDL_BLENDMODE_BLEND);

            SDL_mixer.Mix_OpenAudio(44100, SDL_mixer.MIX_DEFAULT_FORMAT, 2, 2048);

            TextureProvider = new TextureProvider(WRenderer, imagesPath);
            AudioProvider   = new AudioProvider(audiosPath);
            FontProvider    = new FontProvider(fontsPath);
        }
Ejemplo n.º 21
0
 public TextureLoader(TextureProvider <Bitmap> textureProvider)
 {
     _textureProvider = textureProvider;
 }
Ejemplo n.º 22
0
        public void Start()
        {
            /* RESOURCE LIST CREATION */
#if UNITY_EDITOR
            AssetDatabase.Refresh();
            FileServices.CreateResourcesList("Assets/Resources/resourceslist.txt");
#endif
            FileServices.LoadResourcesList("resourceslist");

            #region LOAD RESOURCES
            // logger and ioc
            _logger   = new Logger("info.log", false);
            _resolver = new IoCResolver(_logger);
            _resolver.RegisterItem(_logger);

            _config = new UserConfigurationManager(new UserConfigurationData
            {
                GameVolume  = 1f,
                MusicVolume = 1f
            });
            _resolver.RegisterItem(_config);

            // messager
            _messager = new Messager();
            _resolver.RegisterItem(_messager);

            // unity reference master
            _unity = GetComponent <UnityReferenceMaster>();
            _unity.DebugModeActive = false;
            _resolver.RegisterItem(_unity);

            // player
            var player = new UserAccountManager();
            _resolver.RegisterItem(player);

            // material provider
            var materialProvider = new MaterialProvider(_logger);
            MaterialLoader.LoadMaterial(materialProvider, "Materials");
            _resolver.RegisterItem(materialProvider);

            // texture provider
            var textureProvider = new TextureProvider(_logger);
            var spriteProvider  = new SpriteProvider(_logger);
            TextureLoader.LoadTextures(textureProvider, spriteProvider, "Textures");
            _resolver.RegisterItem(textureProvider);
            _resolver.RegisterItem(spriteProvider);

            // sound provider
            var soundProvider = new SoundProvider(_logger);
            SoundLoader.LoadSounds(_logger, soundProvider, "Sounds");
            _resolver.RegisterItem(soundProvider);

            // prefab provider
            var prefabProvider = new PrefabProvider(_logger);
            PrefabLoader.LoadPrefabs(prefabProvider);
            _resolver.RegisterItem(prefabProvider);

            // pooling
            var poolingObjectManager = new PoolingObjectManager(_logger, prefabProvider);
            _resolver.RegisterItem(poolingObjectManager);

            var soundPoolManager = new PoolingAudioPlayer(_logger, _config, _unity, prefabProvider.GetPrefab("audio_source_prefab"));
            _resolver.RegisterItem(soundPoolManager);

            _particles = new PoolingParticleManager(_resolver);
            _resolver.RegisterItem(_particles);

            // canvas provider
            var canvasProvider = new CanvasProvider(_logger);
            _unity.LoadCanvases(canvasProvider);
            _resolver.RegisterItem(canvasProvider);

            // data provider
            var gameDataProvider = new GameDataProvider(_logger);

            /* DATA GOES HERE */

            _resolver.RegisterItem(gameDataProvider);
            #endregion

            _uiManager = new UiManager();
            _resolver.RegisterItem(_uiManager);

            // lock the resolver (stop any new items being registered)
            _resolver.Lock();

            /* BEGIN STATE */
            _currentState = new MenuState(_resolver);
            _currentState.Initialize();

            /* SUBSCRIBE FOR GAME END */
            _onExit = _messager.Subscribe <ExitMessage>(OnExit);
        }
Ejemplo n.º 23
0
 public void Close()
 {
     Scheduler.Clear(this);
     TextureProvider.DeleteCollection(TextureCollection);
     Renderer.Dispose();
 }
Ejemplo n.º 24
0
        /// <summary>
        /// Installs providers that expose resources for Noesis theme.
        /// </summary>
        public static void SetThemeProviders(XamlProvider xamlProvider = null, FontProvider fontProvider = null, TextureProvider textureProvider = null)
        {
            GUI.SetXamlProvider(new EmbeddedXamlProvider(null, null, xamlProvider));
            GUI.SetFontProvider(new EmbeddedFontProvider(null, null, fontProvider));
            GUI.SetTextureProvider(textureProvider);

            GUI.SetFontFallbacks(Theme.FontFallbacks);
            GUI.SetFontDefaultProperties(Theme.DefaultFontSize, Theme.DefaultFontWeight, Theme.DefaultFontStretch, Theme.DefaultFontStyle);
        }
Ejemplo n.º 25
0
        public Document(string mapFile, Map map, Game game)
        {
            MapFile     = mapFile;
            Map         = map;
            Game        = game;
            Environment = new GameEnvironment(game);
            MapFileName = mapFile == null
                              ? DocumentManager.GetUntitledDocumentName()
                              : Path.GetFileName(mapFile);

            SelectListTransform = Matrix4.Identity;

            _subscriptions = new DocumentSubscriptions(this);

            _memory = new DocumentMemory();

            var cam = Map.GetActiveCamera();

            if (cam != null)
            {
                _memory.SetCamera(cam.EyePosition, cam.LookPosition);
            }

            Selection = new SelectionManager(this);
            History   = new HistoryManager(this);
            if (Map.GridSpacing <= 0)
            {
                Map.GridSpacing = Grid.DefaultSize;
            }

            try
            {
                GameData = GameDataProvider.GetGameDataFromFiles(game.Fgds.Select(f => f.Path));
            }
            catch (ProviderException)
            {
                // TODO: Error logging
                GameData = new GameData();
            }

            if (game.OverrideMapSize)
            {
                GameData.MapSizeLow  = game.OverrideMapSizeLow;
                GameData.MapSizeHigh = game.OverrideMapSizeHigh;
            }

            TextureCollection = TextureProvider.CreateCollection(Environment.GetGameDirectories(), Game.AdditionalPackages, Game.GetTextureBlacklist(), Game.GetTextureWhitelist());
            /* .Union(GameData.MaterialExclusions) */ // todo material exclusions

            var texList = Map.GetAllTextures();
            var items   = TextureCollection.GetItems(texList);

            TextureProvider.LoadTextureItems(items);

            Map.PostLoadProcess(GameData, GetTexture, SettingsManager.GetSpecialTextureOpacity);
            Map.UpdateDecals(this);
            Map.UpdateModels(this);
            Map.UpdateSprites(this);

            HelperManager = new HelperManager(this);
            Renderer      = new RenderManager(this);

            if (MapFile != null)
            {
                Mediator.Publish(EditorMediator.FileOpened, MapFile);
            }

            // Autosaving
            if (Game.Autosave)
            {
                var at = Math.Max(1, Game.AutosaveTime);
                Scheduler.Schedule(this, Autosave, TimeSpan.FromMinutes(at));
            }
        }
Ejemplo n.º 26
0
        private void EditorLoad(object sender, EventArgs e)
        {
            FileTypeRegistration.RegisterFileTypes();

            SettingsManager.Read();

            if (TaskbarManager.IsPlatformSupported)
            {
                TaskbarManager.Instance.ApplicationId = FileTypeRegistration.ProgramId;

                _jumpList = JumpList.CreateJumpList();
                _jumpList.KnownCategoryToDisplay = JumpListKnownCategoryType.Recent;
                _jumpList.Refresh();
            }

            UpdateDocumentTabs();
            UpdateRecentFiles();

            DockBottom.Hidden = DockLeft.Hidden = DockRight.Hidden = true;

            MenuManager.Init(mnuMain, tscToolStrip);
            MenuManager.Rebuild();

            SidebarManager.Init(RightSidebar);

            ViewportManager.Init(TableSplitView);
            ToolManager.Init();

            foreach (var tool in ToolManager.Tools)
            {
                var tl     = tool;
                var hotkey = Sledge.Settings.Hotkeys.GetHotkeyForMessage(HotkeysMediator.SwitchTool, tool.GetHotkeyToolType());
                tspTools.Items.Add(new ToolStripButton(
                                       "",
                                       tl.GetIcon(),
                                       (s, ea) => Mediator.Publish(HotkeysMediator.SwitchTool, tl.GetHotkeyToolType()),
                                       tl.GetName())
                {
                    Checked      = (tl == ToolManager.ActiveTool),
                    ToolTipText  = tl.GetName() + (hotkey != null ? " (" + hotkey.Hotkey + ")" : ""),
                    DisplayStyle = ToolStripItemDisplayStyle.Image,
                    ImageScaling = ToolStripItemImageScaling.None,
                    AutoSize     = false,
                    Width        = 36,
                    Height       = 36
                }
                                   );
            }

            TextureProvider.SetCachePath(SettingsManager.GetTextureCachePath());
            MapProvider.Register(new RmfProvider());
            MapProvider.Register(new MapFormatProvider());
            MapProvider.Register(new VmfProvider());
            MapProvider.Register(new ObjProvider());
            GameDataProvider.Register(new FgdProvider());
            TextureProvider.Register(new WadProvider());
            TextureProvider.Register(new SprProvider());
            TextureProvider.Register(new VmtProvider());
            ModelProvider.Register(new MdlProvider());

            WadProvider.ReplaceTransparentPixels   = !Sledge.Settings.View.DisableWadTransparency && !Sledge.Settings.View.GloballyDisableTransparency;
            TextureHelper.EnableTransparency       = !Sledge.Settings.View.GloballyDisableTransparency;
            TextureHelper.DisableTextureFiltering  = Sledge.Settings.View.DisableTextureFiltering;
            TextureHelper.ForceNonPowerOfTwoResize = Sledge.Settings.View.ForcePowerOfTwoTextureResizing;

            Subscribe();

            Mediator.MediatorException += (mthd, ex) => Logging.Logger.ShowException(ex.Exception, "Mediator Error: " + ex.Message);

            if (Sledge.Settings.View.LoadSession)
            {
                foreach (var session in SettingsManager.LoadSession())
                {
                    LoadFileGame(session.Item1, session.Item2);
                }
            }

            ProcessArguments(System.Environment.GetCommandLineArgs());
        }
Ejemplo n.º 27
0
 public Texture2D GetTexture()
 {
     return(TextureProvider.GetTexture(Shape, TextureData));
 }
Ejemplo n.º 28
0
        protected Material convertMaterial(ModelMaterial mtl, TextureProvider textureProvider)
        {
            Material result = new Material();

            result.id = mtl.id;
            if (mtl.ambient != default(Color))
            {
                result.set(new ColorAttribute(ColorAttribute.Ambient, mtl.ambient));
            }
            if (mtl.diffuse != default(Color))
            {
                result.set(new ColorAttribute(ColorAttribute.Diffuse, mtl.diffuse));
            }
            if (mtl.specular != default(Color))
            {
                result.set(new ColorAttribute(ColorAttribute.Specular, mtl.specular));
            }
            if (mtl.emissive != default(Color))
            {
                result.set(new ColorAttribute(ColorAttribute.Emissive, mtl.emissive));
            }
            if (mtl.reflection != default(Color))
            {
                result.set(new ColorAttribute(ColorAttribute.Reflection, mtl.reflection));
            }
            if (mtl.shininess > 0f)
            {
                result.set(new FloatAttribute(FloatAttribute.Shininess, mtl.shininess));
            }
            if (mtl.opacity != 1.0f)
            {
                result.set(new BlendingAttribute(true, BlendingFactor.SrcAlpha, BlendingFactor.OneMinusSrcAlpha, mtl.opacity));
            }

            var textures = new Dictionary <string, Texture>();

            // FIXME uvScaling/uvTranslation totally ignored
            if (mtl.textures != null)
            {
                foreach (ModelTexture tex in mtl.textures)
                {
                    Texture texture;
                    if (textures.ContainsKey(tex.fileName))
                    {
                        texture = textures[tex.fileName];
                    }
                    else
                    {
                        texture = textureProvider.load(tex.fileName);
                        textures.Add(tex.fileName, texture);
                        disposables.Add(texture);
                    }

                    var descriptor = new TextureDescriptor(texture);
                    descriptor.minFilter = texture.getMinFilter();
                    descriptor.magFilter = texture.getMagFilter();
                    descriptor.uWrap     = texture.getUWrap();
                    descriptor.vWrap     = texture.getVWrap();

                    float offsetU = tex.uvTranslation == null ? 0f : tex.uvTranslation.X;
                    float offsetV = tex.uvTranslation == null ? 0f : tex.uvTranslation.Y;
                    float scaleU  = tex.uvScaling == null ? 1f : tex.uvScaling.X;
                    float scaleV  = tex.uvScaling == null ? 1f : tex.uvScaling.Y;

                    switch (tex.usage)
                    {
                    case ModelTexture.USAGE_DIFFUSE:
                        result.set(new TextureAttribute(TextureAttribute.Diffuse, descriptor, offsetU, offsetV, scaleU, scaleV));
                        break;

                    case ModelTexture.USAGE_SPECULAR:
                        result.set(new TextureAttribute(TextureAttribute.Specular, descriptor, offsetU, offsetV, scaleU, scaleV));
                        break;

                    case ModelTexture.USAGE_BUMP:
                        result.set(new TextureAttribute(TextureAttribute.Bump, descriptor, offsetU, offsetV, scaleU, scaleV));
                        break;

                    case ModelTexture.USAGE_NORMAL:
                        result.set(new TextureAttribute(TextureAttribute.Normal, descriptor, offsetU, offsetV, scaleU, scaleV));
                        break;

                    case ModelTexture.USAGE_AMBIENT:
                        result.set(new TextureAttribute(TextureAttribute.Ambient, descriptor, offsetU, offsetV, scaleU, scaleV));
                        break;

                    case ModelTexture.USAGE_EMISSIVE:
                        result.set(new TextureAttribute(TextureAttribute.Emissive, descriptor, offsetU, offsetV, scaleU, scaleV));
                        break;

                    case ModelTexture.USAGE_REFLECTION:
                        result.set(new TextureAttribute(TextureAttribute.Reflection, descriptor, offsetU, offsetV, scaleU, scaleV));
                        break;
                    }
                }
            }

            return(result);
        }
Ejemplo n.º 29
0
    public static void LoadTextureAsync(string path, TextureDataSource source, TextureFormat format, bool mipmaps, System.Action <Texture2D> action)
    {
        TextureProvider provider = GetProviderForPath(path, source);

        provider.LoadAsync(path, format, mipmaps, action);
    }
Ejemplo n.º 30
0
 public Model(ModelData modelData, TextureProvider textureProvider)
 {
     load(modelData, textureProvider);
 }