Exemple #1
0
        // 资源加载完成
        private void FinishAndLoadNextAsset(IAssetHandler handler = null)
        {
            LinkedListNode <IAssetHandler> node;

            if (handler != null)
            {
                mCompleteLoaders++;
                node = mHandlers.First;
                while (node != null)
                {
                    var tmp = node.Value;
                    if (tmp.AssetId == handler.AssetId)
                    {
                        mHandlers.Remove(node);
                        break;
                    }
                    node = node.Next;
                }
            }
            node = mHandlers.First;
            if (node != null)
            {
                node.Value.StartLoad();
            }
            else
            {
                mCompleteLoaders = 0;
                mLoaders         = 0;
            }
        }
Exemple #2
0
        private static void MakeSerializable(GameObject go, Table table, IAssetHandler assetHandler)
        {
            // add table component (plus other data)
            var component = go.AddComponent <VisualPinballTable>();

            component.SetData(table.Data);
            foreach (var key in table.TableInfo.Keys)
            {
                component.tableInfo[key] = table.TableInfo[key];
            }
            component.textureFolder  = assetHandler.TextureFolder;
            component.textures       = table.Textures.Values.Select(d => d.Data).ToArray();
            component.customInfoTags = table.CustomInfoTags;
            component.collections    = table.Collections.Values.Select(c => c.Data).ToArray();
            component.decals         = table.Decals.Select(d => d.Data).ToArray();
            component.dispReels      = table.DispReels.Values.Select(d => d.Data).ToArray();
            component.flashers       = table.Flashers.Values.Select(d => d.Data).ToArray();
            component.lightSeqs      = table.LightSeqs.Values.Select(d => d.Data).ToArray();
            component.plungers       = table.Plungers.Values.Select(d => d.Data).ToArray();
            component.sounds         = table.Sounds.Values.Select(d => d.Data).ToArray();
            component.textBoxes      = table.TextBoxes.Values.Select(d => d.Data).ToArray();
            component.timers         = table.Timers.Values.Select(d => d.Data).ToArray();

            Logger.Info("Collections saved: [ {0} ] [ {1} ]",
                        string.Join(", ", table.Collections.Keys),
                        string.Join(", ", component.collections.Select(c => c.Name))
                        );
        }
        public WebsiteDependencies(
            IContentRepository contentRepository,
            IContextResolver contextResolver,
            ICacheManager cacheManager,
            IAssetHandler assetHandler,
            ISiteSettingsService siteSettingsPageRepository)
        {
            Guard.ValidateObject(cacheManager);
            Guard.ValidateObject(contentRepository);
            Guard.ValidateObject(contextResolver);
            Guard.ValidateObject(assetHandler);
            Guard.ValidateObject(siteSettingsPageRepository);

            CacheManager                = cacheManager;
            ContentRepository           = contentRepository;
            ContextResolver             = contextResolver;
            AssetHandler                = assetHandler;
            _siteSettingsPageRepository = siteSettingsPageRepository;
        }
        public void SiteSettings_Should_Be_Correctly_Set(
            ICacheManager cacheManager,
            ICookieManager cookieManager,
            IAssetHandler assetHandler,
            int contentId)
        {
            mockSiteSettingsPageRepository.Setup(x => x.SiteSettingsPage)
            .Returns(mockSiteSettingPage.Object);

            _websiteDependencies = new WebsiteDependencies(
                mockContentRepository.Object,
                mockContextResolver.Object,
                cacheManager,
                assetHandler,
                mockSiteSettingsPageRepository.Object);

            _websiteDependencies.SiteSettings.Should().NotBeNull();
            mockSiteSettingsPageRepository.Verify(x => x.SiteSettingsPage, Times.AtLeastOnce());
        }
Exemple #5
0
        public void Import(string fileName, Table table, IAssetHandler assetHandler)
        {
            _table        = table;
            _assetHandler = assetHandler;

            var go = gameObject;

            go.name  = _table.Name;
            _patcher = new Patcher.Patcher.Patcher(_table, fileName);

            // generate meshes and save (pbr) materials
            var materials = new Dictionary <string, PbrMaterial>();

            foreach (var r in _table.Renderables)
            {
                _renderObjects[r] = r.GetRenderObjects(_table, Origin.Original, false);
                foreach (var ro in _renderObjects[r].RenderObjects)
                {
                    if (!materials.ContainsKey(ro.Material.Id))
                    {
                        materials[ro.Material.Id] = ro.Material;
                    }
                }
            }

            // import
            ImportTextures();
            ImportMaterials(materials);
            ImportGameItems();
            ImportGiLights();

            // set root transformation
            go.transform.localRotation = GlobalRotation;
            go.transform.localPosition = new Vector3(-_table.Width / 2 * GlobalScale, 0f, _table.Height / 2 * GlobalScale);
            go.transform.localScale    = new Vector3(GlobalScale, GlobalScale, GlobalScale);
            //ScaleNormalizer.Normalize(go, GlobalScale);

            MakeSerializable(go, table, assetHandler);

            // finally, add the player script
            go.AddComponent <TablePlayer>();
        }
 public TextureJob(IEnumerable <Texture> textures, IAssetHandler assetHandler)
 {
     _textures     = new NativeArray <IntPtr>(textures.Select(MemHelper.ToIntPtr).ToArray(), Allocator.Persistent);
     _assetHandler = MemHelper.ToIntPtr(assetHandler);
 }
 public TextureImporter(Texture[] textures, IAssetHandler assetHandler)
 {
     _textures     = textures;
     _assetHandler = assetHandler;
 }
 public static void RegisterAssetHandler <T>(IAssetHandler <T> handler)
 {
     _handlers[typeof(T)] = handler;
 }
Exemple #9
0
        public static UnityEngine.Material ToUnityMaterial(this PbrMaterial vpxMaterial, IAssetHandler assetHandler, StringBuilder debug = null)
        {
            var unityMaterial = new UnityEngine.Material(GetShader())
            {
                name = vpxMaterial.Id
            };

            // apply some basic manipulations to the color. this just makes very
            // very white colors be clipped to 0.8204 aka 204/255 is 0.8
            // this is to give room to lighting values. so there is more modulation
            // of brighter colors when being lit without blow outs too soon.
            var col = vpxMaterial.Color.ToUnityColor();

            if (vpxMaterial.Color.IsGray() && col.grayscale > 0.8)
            {
                debug?.AppendLine("Color manipulation performed, brightness reduced.");
                col.r = col.g = col.b = 0.8f;
            }
            unityMaterial.SetColor(Color, col);

            // validate IsMetal. if true, set the metallic value.
            // found VPX authors setting metallic as well as translucent at the
            // same time, which does not render correctly in unity so we have
            // to check if this value is true and also if opacity <= 1.
            if (vpxMaterial.IsMetal && (!vpxMaterial.IsOpacityActive || vpxMaterial.Opacity >= 1))
            {
                unityMaterial.SetFloat(Metallic, 1f);
                debug?.AppendLine("Metallic set to 1.");
            }

            // roughness / glossiness
            unityMaterial.SetFloat(Glossiness, vpxMaterial.Roughness);

            // blend mode
            ApplyBlendMode(unityMaterial, vpxMaterial.MapBlendMode);
            if (vpxMaterial.MapBlendMode == BlendMode.Translucent)
            {
                col.a = Mathf.Min(1, Mathf.Max(0, vpxMaterial.Opacity));
                unityMaterial.SetColor(Color, col);
            }

            // map
            if (vpxMaterial.HasMap)
            {
                unityMaterial.SetTexture(
                    MainTex,
                    assetHandler.LoadTexture(vpxMaterial.Map, false)
                    );
            }

            // normal map
            if (vpxMaterial.HasNormalMap)
            {
                unityMaterial.EnableKeyword("_NORMALMAP");
                unityMaterial.SetTexture(
                    BumpMap,
                    assetHandler.LoadTexture(vpxMaterial.NormalMap, true)
                    );
            }

            return(unityMaterial);
        }
 public AssetController(IAssetHandler assetHandler)
 {
     _assetHandler = assetHandler;
 }
 public MaterialJob(IEnumerable <PbrMaterial> materials, IAssetHandler assetHandler)
 {
     _materials = new NativeArray <IntPtr>(materials.Select(MemHelper.ToIntPtr).ToArray(), Allocator.Persistent);
 }
 public MaterialImporter(PbrMaterial[] materials, IAssetHandler assetHandler)
 {
     _materials    = materials;
     _assetHandler = assetHandler;
 }