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(); }
public ClumpCount(ClumpBuffers clump, IReadOnlyList <BaseModelInstancedMaterial> materials, uint count = 1) { Clump = clump; Materials = materials; Count = count; }