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())); }
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())); }
internal MonoGameModelInstance(MonoGameModelTemplate template, SceneInstance instance) { _Template = template; _Controller = instance; }