using System; using System.Collections.Generic; using OpenMetaverse; using OpenMetaverse.Rendering; namespace Simian.Extensions { public class RenderingPluginMesher : ISimianExtension, IMeshingProvider { Simian Server; IRendering Renderer; public RenderingPluginMesher(Simian server) { Server = server; } public void Start() { // Search for a the best available OpenMetaverse.Rendering plugin List renderers = RenderingLoader.ListRenderers(AppDomain.CurrentDomain.BaseDirectory); string renderer = renderers.Find( delegate(string current) { return current.Contains("OpenMetaverse.Rendering.GPL.dll"); }); if (String.IsNullOrEmpty(renderer)) { if (renderers.Count > 0) { renderer = renderers[0]; } else { Logger.Log("No suitable OpenMetaverse.Rendering plugins found", Helpers.LogLevel.Error); return; } } Renderer = RenderingLoader.LoadRenderer(renderer); } public void Stop() { } public SimpleMesh GenerateSimpleMesh(Primitive prim, DetailLevel lod) { return Renderer.GenerateSimpleMesh(prim, lod); } } }