Beispiel #1
0
        public EffectSettings(RenderRequestEffect enabledEffects)
            : this()
        {
            EnabledEffects = enabledEffects;

            SmokeColor = Color.FromArgb(242, 242, 242, 242);
            SmokeTransformationSpeedCoefficient = 1f;
            SmokeIntensityCoefficient           = 1f;
            SmokeScaleCoefficient = 1f;
        }
        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);
            }