public Scene(IArchiveDirectory dataDir, Device device, ShaderCache shaderCache, StandardSamplers standardSamplers, TrackedDeviceBufferManager trackedDeviceBufferManager, ControllerManager controllerManager) { var textureCache = new TextureCache(device); toneMappingSettings = new ToneMappingSettings(); iblEnvironment = new ImageBasedLightingEnvironment(device, standardSamplers, dataDir, InitialSettings.Environment, InitialSettings.EnvironmentRotation); backdrop = new Backdrop(device, shaderCache); floor = new PlayspaceFloor(device, shaderCache); renderModelRenderer = new RenderModelRenderer(device, shaderCache, trackedDeviceBufferManager); primitiveRenderer = new MeshRenderer(device, shaderCache, Matrix.Translation(0, 1.25f, 0), GeometricPrimitiveFactory.MakeSphere(0.5f, 100).AsTriMesh()); var shapeNormalsLoader = new ShapeNormalsLoader(dataDir, device, textureCache); var figureRendererLoader = new FigureRendererLoader(dataDir, device, shaderCache, textureCache); var figureLoader = new FigureLoader(dataDir, device, shaderCache, shapeNormalsLoader, figureRendererLoader); actor = Actor.Load(dataDir, device, shaderCache, controllerManager, figureLoader); var iblMenu = LightingEnvironmentMenu.MakeMenuLevel(dataDir, iblEnvironment); var toneMappingMenuLevel = new ToneMappingMenuLevel(toneMappingSettings); var renderSettingsMenuLevel = new StaticMenuLevel( new SubLevelMenuItem("Lighting Enviroment", iblMenu), new SubLevelMenuItem("Tone Mapping", toneMappingMenuLevel), new FloorVisibilityToggleMenuItem(floor) ); var scenePersistenceMenuLevel = ScenePersistenceMenuLevel.Make(this); var appMenuLevel = new StaticMenuLevel( new SubLevelMenuItem("Save/Load", scenePersistenceMenuLevel), new SubLevelMenuItem("Render Settings", renderSettingsMenuLevel) ); var rootMenuLevel = new CombinedMenuLevel(appMenuLevel, actor.MenuLevel); menu = new Menu(device, shaderCache, trackedDeviceBufferManager, controllerManager, rootMenuLevel); }
public Actor(Device device, List <Outfit> outfits, ActorModel model, FigureLoader figureLoader, FigureFacade mainFigure, FigureFacade hairFigure, ActorBehavior behavior) { this.outfits = outfits; this.model = model; this.figureLoader = figureLoader; this.mainFigure = mainFigure; this.hairFigure = hairFigure; this.behavior = behavior; clothingFigures = new FigureFacade[0]; mainFigure.Animator = new MainFigureAnimator(this); figureGroup = new FigureGroup(device, mainFigure, new FigureFacade[0]); SyncFigureGroup(); }
public static Actor Load(IArchiveDirectory dataDir, Device device, ShaderCache shaderCache, ControllerManager controllerManager, FigureLoader figureLoader) { var mainFigure = figureLoader.Load(InitialSettings.Main, null); var actorModel = ActorModel.Load(mainFigure.Definition, InitialSettings.Animation); var hairFigure = InitialSettings.Hair != null?figureLoader.Load(InitialSettings.Hair, mainFigure.Definition) : null; var behavior = ActorBehavior.Load(controllerManager, mainFigure.Definition.Directory, actorModel); var characters = Character.LoadList(dataDir); var outfits = Outfit.LoadList(dataDir); var actor = new Actor(device, characters, outfits, actorModel, figureLoader, mainFigure, hairFigure, behavior); var clothingFigures = InitialSettings.Clothing .Select(clothingFigureName => figureLoader.Load(clothingFigureName, mainFigure.Definition)) .ToArray(); actor.SetClothingFigures(clothingFigures); return(actor); }