public static MonoGameDeviceContent <MonoGameModelTemplate> CreateDeviceModel(GraphicsDevice device, Schema2.ModelRoot srcModel, LoaderContext context = null)
        {
            if (context == null)
            {
                context = new BasicEffectsLoaderContext(device);
            }

            context.Reset();

            var options = new Runtime.RuntimeOptions {
                IsolateMemory = true
            };

            var templates = srcModel.LogicalScenes
                            .Select(item => SceneTemplate.Create(item, options))
                            .ToArray();

            var srcMeshes = templates
                            .SelectMany(item => item.LogicalMeshIds)
                            .Distinct()
                            .Select(idx => srcModel.LogicalMeshes[idx]);

            foreach (var srcMesh in srcMeshes)
            {
                context._WriteMesh(srcMesh);
            }

            var dstMeshes = context.CreateRuntimeModels();

            var mdl = new MonoGameModelTemplate(templates, srcModel.DefaultScene.LogicalIndex, dstMeshes);

            return(new MonoGameDeviceContent <MonoGameModelTemplate>(mdl, context.Disposables.ToArray()));
        }
Beispiel #2
0
        public static MonoGameDeviceContent <MonoGameModelTemplate> CreateDeviceModel(GraphicsDevice device, Schema2.ModelRoot srcModel)
        {
            srcModel.FixTextureSampler();

            var templates = srcModel.LogicalScenes
                            .Select(item => SceneTemplate.Create(item, true))
                            .ToArray();

            var context = new LoaderContext(device);

            var meshes = templates
                         .SelectMany(item => item.LogicalMeshIds)
                         .ToDictionary(k => k, k => context.CreateMesh(srcModel.LogicalMeshes[k]));

            var mdl = new MonoGameModelTemplate(templates, srcModel.DefaultScene.LogicalIndex, meshes);

            return(new MonoGameDeviceContent <MonoGameModelTemplate>(mdl, context.Disposables.ToArray()));
        }
Beispiel #3
0
 internal MonoGameModelInstance(MonoGameModelTemplate template, SceneInstance instance)
 {
     _Template   = template;
     _Controller = instance;
 }