Пример #1
0
 public SockProvider(ISockRepository sockRepository, IMaterialProvider materialProvider, IThicknessProvider thicknessProvider, ISizeProvider sizeProvider)
 {
     _sockRepository    = sockRepository;
     _materialProvider  = materialProvider;
     _thicknessProvider = thicknessProvider;
     _sizeProvider      = sizeProvider;
 }
Пример #2
0
        public void SetReferencedData(Table table, IMaterialProvider materialProvider, ITextureProvider textureProvider, Dictionary <string, IMainComponent> components)
        {
            var updatedComponents = _mainComponent.SetReferencedData(_item.Data, table, materialProvider, textureProvider, components);

            _updatedComponents.AddRange(updatedComponents);
            UpdateTransforms();
        }
Пример #3
0
 public RayEngineScene3(SceneGeometryInfo geometry, IMaterialProvider materials, ILight[] lights = null) {
     this.MaterialProvider = materials;
     this.SceneGeometry = geometry;
     Triangles = new List<TriangleDataInfo>();
     Meshes = new List<ITriangleMesh>();
     meshTriangleMap = new Dictionary<int, ITriangleMesh>();
     this.Lights = lights;
     this.BuildSceneData();
 }
Пример #4
0
        public void SetReferencedData(Table table, IMaterialProvider materialProvider, ITextureProvider textureProvider, Dictionary <string, IMainComponent> components)
        {
            var playfieldComp = GameObject.GetComponent <PlayfieldComponent>();

            if (playfieldComp)
            {
                var updatedComponents = playfieldComp.SetReferencedData(_primitive.Data, table, materialProvider, textureProvider);
                _updatedComponents.AddRange(updatedComponents);
            }
        }
        public static Material ToUnityMaterial(this PbrMaterial vpMat, IMaterialProvider materialProvider, Material textureMaterial)
        {
            if (materialProvider.HasMaterial(vpMat))
            {
                return(materialProvider.GetMaterial(vpMat));
            }

            var unityMaterial = RenderPipeline.Current.MaterialConverter.MergeMaterials(vpMat, textureMaterial);

            materialProvider.SaveMaterial(vpMat, unityMaterial);

            return(unityMaterial);
        }
        public static Material ToUnityMaterial(this PbrMaterial vpMat, IMaterialProvider materialProvider, ITextureProvider textureProvider, StringBuilder debug = null)
        {
            if (materialProvider.HasMaterial(vpMat))
            {
                return(materialProvider.GetMaterial(vpMat));
            }

            var unityMaterial = RenderPipeline.Current.MaterialConverter.CreateMaterial(vpMat, textureProvider, debug);

            materialProvider.SaveMaterial(vpMat, unityMaterial);

            return(unityMaterial);
        }
Пример #7
0
        public void Set(FileTableContainer tableContainer, string fileName, IMaterialProvider materialProvider, ITextureProvider textureProvider)
        {
            _tableContainer   = tableContainer;
            _materialProvider = materialProvider;
            _textureProvider  = textureProvider;

            var types = typeof(Patcher).Assembly.GetTypes();

            foreach (var type in types)
            {
                var classMatchers = type
                                    .GetCustomAttributes(typeof(TableMatchAttribute), false)
                                    .Select(a => a as TableMatchAttribute)
                                    .Where(a => a != null)
                                    .Where(a => a.Matches(_tableContainer, fileName))
                                    .ToArray();

                if (classMatchers.Length > 0)
                {
                    _patchers.Add(Activator.CreateInstance(type));
                }
            }
            Logger.Info("Table will be patched using the following patchers: [ {0} ]", string.Join(", ", _patchers.Select(o => o.GetType().Name)));
        }
Пример #8
0
        public void Init(RayEngineScene scene, IMaterialProvider materialProvider) {
            var sceneModel = scene;
            meshes = new List<TriangleMesh>();
            meshes.AddRange(scene.Meshes);
            this.sceneVertices = sceneModel.Vertices;
            AABB sceneBound = sceneVertices.Select(i => new AABB(i)).Aggregate((b1, b2) => b1.Union(b2));
            var ltriangles = scene.Triangles;
            Comparison<Triangle> tc = (t1, t2) => CompareTriangles(t1, t2,
                (Axis)sceneBound.MaximumExtent()
                //                Axis.PLANE_Z
                );
            ltriangles.Sort(tc);


            this.materialProvider = materialProvider;
            Tracer.TraceLine("Building tree ");
            this.BuildTree(ltriangles, 0, ltriangles.Count);
            Tracer.TraceLine("BVH builded {0} nodes {1} object in leaf", bvhNodesCount, PrimitivesInNode);
            Tracer.TraceLine("Flattening tree...");

            this.triangles = ltriangles.ToArray();
            FlattenTree();
            Tracer.TraceLine("Complete");
        }
Пример #9
0
        public IEnumerable <MonoBehaviour> SetReferencedData(PrimitiveData primitiveData, Table table, IMaterialProvider materialProvider, ITextureProvider textureProvider)
        {
            var mf = GetComponent <MeshFilter>();
            var playfieldMeshComponent = GetComponent <PlayfieldMeshComponent>();

            if (!mf || !playfieldMeshComponent)
            {
                return(Array.Empty <MonoBehaviour>());
            }

            var updatedComponents = new List <MonoBehaviour> {
                this
            };
            var mg   = new PrimitiveMeshGenerator(primitiveData);
            var mesh = mg
                       .GetTransformedMesh(table?.TableHeight ?? 0f, primitiveData.Mesh, Origin.Original, false)
                       .Transform(mg.TransformationMatrix(PlayfieldHeight));          // apply transformation to mesh, because this is the playfield
            var material = new PbrMaterial(
                table.GetMaterial(_playfieldMaterial),
                table.GetTexture(_playfieldImage)
                );

            MeshComponent <PrimitiveData, PrimitiveComponent> .CreateMesh(gameObject, mesh, material, "playfield_mesh", textureProvider, materialProvider);

            playfieldMeshComponent.AutoGenerate = false;

            updatedComponents.Add(playfieldMeshComponent);

            return(updatedComponents);
        }
Пример #10
0
        public override IEnumerable <MonoBehaviour> SetReferencedData(TableData data, Table table, IMaterialProvider materialProvider, ITextureProvider textureProvider, Dictionary <string, IMainComponent> components)
        {
            var meshComponent = GetComponentInChildren <PlayfieldMeshComponent>();

            if (meshComponent && meshComponent.AutoGenerate)
            {
                meshComponent.CreateMesh(data, table, textureProvider, materialProvider);
            }
            return(Array.Empty <MonoBehaviour>());
        }
        public override IEnumerable <MonoBehaviour> SetReferencedData(HitTargetData data, Table table, IMaterialProvider materialProvider, ITextureProvider textureProvider, Dictionary <string, IMainComponent> components)
        {
            var colliderComponent = GetComponent <HitTargetColliderComponent>();

            if (colliderComponent)
            {
                colliderComponent.PhysicsMaterial = materialProvider.GetPhysicsMaterial(data.PhysicsMaterial);
            }

            // visibility
            SetEnabled <Renderer>(data.IsVisible);

            return(Array.Empty <MonoBehaviour>());
        }
Пример #12
0
 public void AddToList(List <Sprite> sprites, IMaterialProvider provider)
 {
     Material = provider.GetMaterial(Tag);
     sprites.Add(this);
 }
Пример #13
0
		public MeshBuilder(SeparateStreamsMesh streamMesh, IMaterialProvider materialProvider)
		{
			this.streamMesh = streamMesh;
			this.materialProvider = materialProvider;
		}
Пример #14
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="_sender"></param>
 public ShaderAssignmentEventArgs(IMaterialProvider _sender)
 {
     MaterialProvider = _sender;
 }
Пример #15
0
 /// <summary>
 /// Trigger the ShaderAssignment event to select materials in material editor.
 /// Can be called for any shape/material provider so this class is obviously not the ideal place for this global function.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="provider"></param>
 public static void SelectMaterialsFor(object sender, IMaterialProvider provider)
 {
     if (ShaderAssignment != null)
     ShaderAssignment(sender, new ShaderAssignmentEventArgs(provider));
 }
Пример #16
0
 public void CreateMesh(TData data, Table table, ITextureProvider texProvider, IMaterialProvider matProvider)
 {
     CreateMesh(gameObject, GetMesh(data), GetMaterial(data, table), data.GetName(), texProvider, matProvider);
 }
Пример #17
0
        public static void CreateMesh(GameObject gameObject, Mesh m, PbrMaterial material, string name, ITextureProvider texProvider, IMaterialProvider matProvider)
        {
            if (m == null)
            {
                return;
            }
            var mesh = m.ToUnityMesh($"{name} Mesh ({gameObject.name})");

            // apply mesh to game object
            var mf = gameObject.GetComponent <MeshFilter>();

            mf.sharedMesh = mesh;

            // apply renderer and material
            if (m.AnimationFrames.Count > 0)               // if number of animations frames are 1, the blend vertices are in the uvs are handle by the lerp shader.
            {
                var smr = gameObject.AddComponent <SkinnedMeshRenderer>();
                smr.sharedMaterial = material.ToUnityMaterial(matProvider, texProvider);
                smr.sharedMesh     = mesh;
                smr.SetBlendShapeWeight(0, m.AnimationDefaultPosition);
            }
            else
            {
                var mr = gameObject.AddComponent <MeshRenderer>();
                mr.sharedMaterial = material.ToUnityMaterial(matProvider, texProvider);
            }
        }
Пример #18
0
 public override IEnumerable <MonoBehaviour> SetReferencedData(TableData data, Table table, IMaterialProvider materialProvider, ITextureProvider textureProvider, Dictionary <string, IMainComponent> components)
 {
     return(Array.Empty <MonoBehaviour>());
 }
Пример #19
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="_sender"></param>
 public ShaderAssignmentEventArgs(EntityShape _sender)
 {
     MaterialProvider = _sender.MaterialProvider;
 }
Пример #20
0
 public void Init(SceneGeometryInfo scene, IMaterialProvider materialProvider, TriangleMesh[] geometry)
 {
     this.sceneGeometry = scene;
     this.geometry = geometry;
 }