public EffectSettings(RenderRequestEffect enabledEffects) : this() { EnabledEffects = enabledEffects; SmokeColor = Color.FromArgb(242, 242, 242, 242); SmokeTransformationSpeedCoefficient = 1f; SmokeIntensityCoefficient = 1f; SmokeScaleCoefficient = 1f; }
public override void Init(int nGPU) { int[] avatarIds = Owner.GameCtrl.GetAvatarIds(); if (avatarIds.Length == 0) { MyLog.ERROR.WriteLine("No avatar found in map!"); return; } // Setup controllers int myAvatarId = avatarIds[0]; Owner.AvatarCtrl = Owner.GameCtrl.GetAvatarController(myAvatarId); // Setup render requests GameObjectSettings gameObjects = new GameObjectSettings(RenderRequestGameObject.TileLayers | RenderRequestGameObject.ObjectLayers) { Use3D = Owner.Use3D }; EffectSettings? effects = null; PostprocessingSettings?post = null; // Overlays are not used for now (no BrainSim property to switch them on) because there is a separate renderrequest for inventory Tool // Setup effects RenderRequestEffect enabledEffects = RenderRequestEffect.None; if (Owner.EnableDayAndNightCycle) { enabledEffects |= RenderRequestEffect.DayNight; } if (Owner.DrawLights) { enabledEffects |= RenderRequestEffect.Lights; } if (Owner.DrawSmoke) { enabledEffects |= RenderRequestEffect.Smoke; } if (enabledEffects != RenderRequestEffect.None) { effects = new EffectSettings(enabledEffects) { SmokeIntensityCoefficient = Owner.SmokeIntensity, SmokeScaleCoefficient = Owner.SmokeScale, SmokeTransformationSpeedCoefficient = Owner.SmokeTransformationSpeed, } } ; // Setup postprocessing RenderRequestPostprocessing enabledPostprocessing = RenderRequestPostprocessing.None; if (Owner.DrawNoise) { enabledPostprocessing |= RenderRequestPostprocessing.Noise; } if (enabledPostprocessing != RenderRequestPostprocessing.None) { post = new PostprocessingSettings(enabledPostprocessing) { NoiseIntensityCoefficient = Owner.NoiseIntensity, } } ; // Get and setup RRs Owner.FovRR = ObtainRR <IFovAvatarRR>(Owner.VisualFov, Owner.VisualFovDepth, myAvatarId, rr => { rr.Size = new SizeF(Owner.FoVSize, Owner.FoVSize); rr.Resolution = new Size(Owner.FoVResWidth, Owner.FoVResHeight); rr.MultisampleLevel = Owner.FoVMultisampleLevel; rr.RotateMap = Owner.RotateMap; rr.GameObjects = gameObjects; rr.Effects = effects ?? new EffectSettings(RenderRequestEffect.None); rr.Postprocessing = post ?? new PostprocessingSettings(RenderRequestPostprocessing.None); }); Owner.FofRR = ObtainRR <IFofAvatarRR>(Owner.VisualFof, Owner.VisualFofDepth, myAvatarId, rr => { rr.FovAvatarRenderRequest = Owner.FovRR; rr.Size = new SizeF(Owner.FoFSize, Owner.FoFSize); rr.Resolution = new Size(Owner.FoFResWidth, Owner.FoFResHeight); rr.MultisampleLevel = Owner.FoFMultisampleLevel; rr.RotateMap = Owner.RotateMap; rr.GameObjects = gameObjects; rr.Effects = effects ?? new EffectSettings(RenderRequestEffect.None); rr.Postprocessing = post ?? new PostprocessingSettings(RenderRequestPostprocessing.None); }); Owner.FreeRR = ObtainRR <IFreeMapRR>(Owner.VisualFree, Owner.VisualFreeDepth, rr => { rr.Size = new SizeF(Owner.Width, Owner.Height); rr.Resolution = new Size(Owner.ResolutionWidth, Owner.ResolutionHeight); rr.MultisampleLevel = Owner.FreeViewMultisampleLevel; rr.SetPositionCenter(Owner.CenterX, Owner.CenterY); rr.GameObjects = gameObjects; // no noise, smoke, postprocessing or overlays -- this view is for the researcher }); Owner.ToolRR = ObtainRR <IToolAvatarRR>(Owner.VisualTool, null, myAvatarId, rr => { rr.Size = new SizeF(Owner.ToolSize, Owner.ToolSize); rr.Resolution = new Size(Owner.ToolResWidth, Owner.ToolResHeight); rr.Overlay = new OverlaySettings(RenderRequestOverlay.InventoryTool) { ToolBackground = Owner.ToolBackgroundType, }; // None of the other settings have any effect }); Owner.WorldInitialized(this, EventArgs.Empty); }