Example #1
0
            public Model(ITagContainer diContainer, zzio.scn.Model sceneModel, Behavior?sceneBehavior)
            {
                this.diContainer = diContainer;
                var textureLoader    = diContainer.GetTag <IAssetLoader <Texture> >();
                var textureBasePaths = new[]
                {
                    new FilePath("resources/textures/models"),
                    new FilePath("resources/textures/worlds")
                };
                var camera = diContainer.GetTag <Camera>();

                SceneModel             = sceneModel;
                SceneBehaviour         = sceneBehavior;
                locationRange          = diContainer.GetTag <LocationBuffer>().Add(Location);
                Location.LocalPosition = sceneModel.pos;
                Location.LocalRotation = sceneModel.rot.ToZZRotation();

                var clumpLoader = diContainer.GetTag <IAssetLoader <ClumpBuffers> >();

                clumpBuffers = clumpLoader.Load(new FilePath("resources/models/models").Combine(sceneModel.filename + ".dff"));
                materials    = clumpBuffers.SubMeshes.Select(subMesh =>
                {
                    var rwMaterial = subMesh.Material;
                    var material   = new ModelStandardMaterial(diContainer);
                    (material.MainTexture.Texture, material.Sampler.Sampler) = textureLoader.LoadTexture(textureBasePaths, rwMaterial);
                    material.LinkTransformsTo(camera);
                    material.World.BufferRange = locationRange;
                    material.Uniforms.Ref      = ModelStandardMaterialUniforms.Default;
                    material.Uniforms.Ref.vertexColorFactor = 0.0f;
                    material.Uniforms.Ref.tint = rwMaterial.color.ToFColor() * sceneModel.color;
                    return(material);
                }).ToArray();
            }
Example #2
0
 public ClumpCount(ClumpBuffers clump, IReadOnlyList <BaseModelInstancedMaterial> materials, uint count = 1)
 {
     Clump     = clump;
     Materials = materials;
     Count     = count;
 }