コード例 #1
0
ファイル: WheelMenu.cs プロジェクト: yxrkt/AvatarHamsterPanic
        public WheelMenu( MenuScreen screen, Camera camera, float wheelScale, 
            float screenScale, float startX, float activeX, float finishX, float y)
            : base(screen, Vector2.Zero)
        {
            this.wheelScale = wheelScale;
              scaleMatrix = Matrix.CreateScale( wheelScale );
              this.camera = camera;
              angle = MathHelper.PiOver4;

              TransitionOnPosition = new Vector2( startX, y );
              Position = new Vector2( activeX, y );
              TransitionOffPosition = new Vector2( finishX, y );

              rotateSpring = new SpringInterpolater( 1, 50, SpringInterpolater.GetCriticalDamping( 50 ) );

              lastX = startX;

              ContentManager content = screen.ScreenManager.Game.Content;

              entryEffect = content.Load<Effect>( "Effects/basic" ).Clone( Screen.ScreenManager.GraphicsDevice );
              entryEffect.CurrentTechnique = entryEffect.Techniques["DiffuseColor"];
              entryEffect.Parameters["LightingEnabled"].SetValue( false );
              entryWorldEffectParameter = entryEffect.Parameters["World"];
              entryViewEffectParameter = entryEffect.Parameters["View"];
              entryProjectionEffectParameter = entryEffect.Parameters["Projection"];
              entryDiffuseEffectParameter = entryEffect.Parameters["DiffuseMap"];

              wheelModel = content.Load<CustomModel>( "Models/hamsterWheel" );
              foreach ( CustomModel.ModelPart part in wheelModel.ModelParts )
              {
            part.Effect.CurrentTechnique = part.Effect.Techniques["Color"];
            part.Effect.Parameters["Color"].SetValue( new Color( Color.LightGray, 0 ).ToVector4() );
              }
        }
コード例 #2
0
ファイル: PlayerTag.cs プロジェクト: yxrkt/AvatarHamsterPanic
        public PlayerTag( Player player, SpriteFont font )
        {
            this.player = player;
              this.font = font;

              ss = GameCore.Instance.GraphicsDevice.Viewport.Height / 1080f;

              color = GameCore.Instance.PlayerColors[player.PlayerNumber];

              device = player.Screen.ScreenManager.GraphicsDevice;
              camera = player.Screen.Camera;
              spriteBatch = player.Screen.ScreenManager.SpriteBatch;

              tagOffset *= device.Viewport.Height / 1080f;

              nearHeightOver2 = camera.Near * (float)Math.Tan( camera.Fov / 2 );
              nearWidthOver2  = camera.Aspect * nearHeightOver2;

              screenPos = Vector2.Zero;
              origin = font.MeasureString( player.HUD.Name ) / 2;

              spring = new SpringInterpolater( 1, 700, .3f * SpringInterpolater.GetCriticalDamping( 700 ) );
              spring.SetSource( 0 );
              spring.SetDest( 1 );
        }
コード例 #3
0
        public MainPage()
        {
            //don't touch this method. microsoft created
            InitializeComponent();

            //this method initializes the Device
            DeviceManager.CreateDevice(panel1.Handle, panel1.Width, panel1.Height);

            _camera = new Camera();

            _renderer = new Renderer();
            Init();

            DeviceManager.LocalDevice.SetRenderState(RenderState.Lighting, _renderer.IsGlobalLightOn);
            DeviceManager.LocalDevice.SetRenderState(RenderState.CullMode, Cull.Counterclockwise);
            DeviceManager.LocalDevice.SetRenderState(RenderState.ZEnable, ZBufferType.UseZBuffer);
            DeviceManager.LocalDevice.SetRenderState(RenderState.NormalizeNormals, true);
            DeviceManager.LocalDevice.SetRenderState(RenderState.Ambient, Color.Gray.ToArgb());
            DeviceManager.LocalDevice.SetRenderState(RenderState.SpecularEnable, false);

            //set GUI control attributes
            SetGui();

            panel1.MouseWheel += panel1_MouseWheel;
        }
コード例 #4
0
        public void Begin(Camera camera)
        {
            this.camera = camera;
            StateManager.SetRenderState(RenderState.Lighting, false);
            StateManager.SetRenderState(RenderState.AlphaTestEnable, true);
            StateManager.SetRenderState(RenderState.AlphaRef, 1);
            StateManager.SetRenderState(RenderState.AlphaFunc, Compare.GreaterEqual);
            StateManager.SetRenderState(RenderState.AlphaBlendEnable, true);
            StateManager.SetRenderState(RenderState.SourceBlend, Blend.SourceAlpha);
            StateManager.SetRenderState(RenderState.DestinationBlend, Blend.InverseSourceAlpha);
            StateManager.SetRenderState(RenderState.ZEnable, false);
            StateManager.SetRenderState(RenderState.ZWriteEnable, false);
            StateManager.SetRenderState(RenderState.MultisampleAntialias, false);

            StateManager.SetSamplerState(0, SamplerState.AddressU, TextureAddress.Clamp);
            StateManager.SetSamplerState(0, SamplerState.AddressV, TextureAddress.Clamp);
            StateManager.SetSamplerState(0, SamplerState.MinFilter, TextureFilter.Point);
            StateManager.SetSamplerState(0, SamplerState.MagFilter, TextureFilter.Point);
            StateManager.SetSamplerState(0, SamplerState.MipFilter, TextureFilter.Point);

            View.Device9.SetTransform(TransformState.Projection, camera.Projection);
            View.Device9.SetTransform(TransformState.View, camera.View);
            View.Device9.PixelShader = null;
            View.Device9.VertexShader = null;

            View.Device9.SetStreamSource(0, null, 0, 0);
            View.Device9.SetStreamSourceFrequency(1, 0, StreamSource.InstanceData);
            View.Device9.SetStreamSource(1, null, 0, 0);
            View.Device9.SetRenderState(SlimDX.Direct3D9.RenderState.FillMode, FillMode.Wireframe);
            for(int i=0; i < 10; i++)
                View.Device9.SetTexture(i, null);
        }
コード例 #5
0
        public override void LoadContent()
        {
            // load the fancy title effects
              LoadTitleContent();

              // create the wheel menu
              GraphicsDevice device = ScreenManager.GraphicsDevice;
              scale = (float)device.Viewport.Height / 1080f;

              ContentManager content = ScreenManager.Game.Content;

              Camera camera = new Camera( MathHelper.PiOver4, device.Viewport.AspectRatio,
                                  1f, 100f, new Vector3( 0, 3f, 10 ), new Vector3( 0, 3f, 0 ) );

              // this should prevent spikes in sign-in screen when creating first avatar
              new Avatar( AvatarDescription.CreateRandom(), AvatarAnimationPreset.Stand0,
                                                  1f, Vector3.UnitZ, Vector3.Zero );

              float wheelScale = 3f; // 2.5f old
              wheelMenu = new WheelMenu( this, camera, wheelScale, scale, -3, 0, 3, wheelScale / 2 );

              if ( Guide.IsTrialMode )
            WheelMenu.EntryActiveScale = 1.4f;
              else
            WheelMenu.EntryActiveScale = 1.75f;

              WheelMenuEntry entry;
              wheelMenu.AcceptingInput = false;

              entry = new WheelMenuEntry( wheelMenu, content.Load<Texture2D>( "Textures/playText" ) );
              entry.Selected += PlayMenuEntrySelected;
              wheelMenu.AddEntry( entry );

              if ( Guide.IsTrialMode )
              {
            entry = new WheelMenuEntry( wheelMenu, content.Load<Texture2D>( "Textures/buyText" ) );
            entry.Selected += GameCore.Instance.ShowBuy;
            entry.IsBuyOption = true;
            wheelMenu.AddEntry( entry );
              }

              entry = new WheelMenuEntry( wheelMenu, content.Load<Texture2D>( "Textures/howToPlayText" ) );
              entry.Selected += HowToPlayMenuEntrySelected;
              wheelMenu.AddEntry( entry );

              entry = new WheelMenuEntry( wheelMenu, content.Load<Texture2D>( "Textures/leaderboardText" ) );
              entry.Selected += LeaderboardMenuEntrySelected;
              wheelMenu.AddEntry( entry );

              entry = new WheelMenuEntry( wheelMenu, content.Load<Texture2D>( "Textures/optionsText" ) );
              entry.Selected += OptionsMenuEntrySelected;
              wheelMenu.AddEntry( entry );

              entry = new WheelMenuEntry( wheelMenu, content.Load<Texture2D>( "Textures/creditsText" ) );
              entry.Selected += CreditsMenuEntrySelected;
              wheelMenu.AddEntry( entry );

              entry = new WheelMenuEntry( wheelMenu, content.Load<Texture2D>( "Textures/exitText" ) );
              entry.Selected += OnCancel;
              wheelMenu.AddEntry( entry );

              MenuItems.Add( wheelMenu );

              signInMenuScreen = new SignInMenuScreen( ScreenManager );
              controlsMenuScreen = new ControlsMenuScreen( ScreenManager );
              optionsMenuScreen = new OptionsMenuScreen( ScreenManager );
              creditsMenuScreen = new CreditsMenuScreen( ScreenManager );
              highscoreScreen = new HighscoreScreen( ScreenManager );

              // pre-load other stuff here
              content.Load<Texture2D>( "Textures/messageBox" );
        }
コード例 #6
0
        public SignInMenuScreen( ScreenManager screenManager )
        {
            TransitionOnTime = TimeSpan.FromSeconds( 1 );
              TransitionOffTime = TimeSpan.FromSeconds( .25 );

              this.ScreenManager = screenManager;
              ContentManager content = screenManager.Game.Content;
              GraphicsDevice device = screenManager.GraphicsDevice;

              boxModel = content.Load<CustomModel>( "Models/signInBox" );
              foreach ( CustomModel.ModelPart part in boxModel.ModelParts )
              {
            part.Effect.CurrentTechnique = part.Effect.Techniques["Color"];
              }

              camera = new Camera( MathHelper.PiOver4, device.Viewport.AspectRatio, 1, 100,
                           new Vector3( 0, 0, 10 ), new Vector3( 0, 0, 0 ) );

              StaticImageMenuItem item;
              Vector2 itemPosition;

              SpriteFont nameFont = content.Load<SpriteFont>( "Fonts/signInNameFont" );
              Texture2D joinTexture = content.Load<Texture2D>( "Textures/aJoinText" );
              Texture2D addCpuTexture = content.Load<Texture2D>( "Textures/xAddCPUText" );
              Texture2D removeCpuTexture = content.Load<Texture2D>( "Textures/yRemoveCPUText" );
              Texture2D aStartTexture = content.Load<Texture2D>( "Textures/aStartText" );
              Texture2D readyTexture = content.Load<Texture2D>( "Textures/readyText" );

              screenScale = device.Viewport.Height / 1080f;
              textScale *= screenScale;

              Rectangle rectangle = ScreenRects.FourByThree;

              float x = textColumnStart * (float)rectangle.Width + (float)rectangle.X;
              float xStep = (float)rectangle.Width * ( 1f - ( 2f * textColumnStart ) ) / 3f;

              float nameY = nameHeight * (float)rectangle.Height + (float)rectangle.Y;
              float joinY = joinHeight * (float)rectangle.Height + (float)rectangle.Y;
              float cpuY = cpuHeight * (float)rectangle.Height + (float)rectangle.Y;
              float readyY = readyHeight * (float)rectangle.Height + (float)rectangle.Y;

              // Full version required for multiplayer
              Vector2 nagPos = new Vector2( device.Viewport.Width / 2, device.Viewport.Height * .14f );
              nagText = new TextMenuItem( this, nagPos, "Full version required for multiplayer.", nameFont );
              nagText.TransitionOnPosition = nagPos;
              nagText.TransitionOffPosition = nagPos;
              nagText.Centered = true;
              nagText.Color = Color.DarkOrange;
              nagText.DeathBegin = .01f;
              MenuItems.Add( nagText );

              for ( int i = 0; i < 4; ++i )
              {
            // <GAMERTAG>
            itemPosition = new Vector2( x, nameY );
            TextMenuItem textItem = new TextMenuItem( this, itemPosition, null, nameFont );
            textItem.Centered = true;
            textItem.MaxWidth = xStep;
            textItem.Scale = screenScale;
            slots[i].NameItem = textItem;
            MenuItems.Add( textItem );

            // A Join
            itemPosition = new Vector2( x, joinY );
            item = new StaticImageMenuItem( this, itemPosition, joinTexture );
            item.SetImmediateScale( textScale );
            slots[i].JoinItem = item;
            MenuItems.Add( item );

            // X Add CPU
            itemPosition = new Vector2( x, cpuY );
            item = new StaticImageMenuItem( this, itemPosition, addCpuTexture );
            item.SetImmediateScale( textScale );
            slots[i].AddCPUItem = item;
            MenuItems.Add( item );

            // Y Add CPU
            itemPosition = new Vector2( x, cpuY );
            item = new StaticImageMenuItem( this, itemPosition, removeCpuTexture );
            item.SetImmediateScale( textScale );
            slots[i].RemoveCPUItem = item;
            MenuItems.Add( item );

            // A Start
            itemPosition = new Vector2( x, readyY );
            item = new StaticImageMenuItem( this, itemPosition, aStartTexture );
            item.SetImmediateScale( textScale );
            slots[i].StartItem = item;
            MenuItems.Add( item );

            // Ready!
            itemPosition = new Vector2( x, readyY );
            item = new StaticImageMenuItem( this, itemPosition, readyTexture );
            item.SetImmediateScale( textScale );
            slots[i].ReadyItem = item;
            MenuItems.Add( item );

            x += xStep;
              }
        }
コード例 #7
0
 public void DrawCircle(Camera camera, Matrix world, Vector3 position, float radius, int nSegmnets, Color color)
 {
     List<Vector3> lines = new List<Vector3>();
     for (int i = 0; i <= nSegmnets; i++)
     {
         float angel = (float)(Math.PI * 2 * (float)i/(float)nSegmnets);
         Vector3 diff = Common.Math.Vector3FromAngleXY(angel)*radius;
         lines.Add(position + diff);
     }
     Draw3DLines(camera, world, lines.ToArray(), color);
 }
コード例 #8
0
 public void DrawArc(Camera camera, Matrix world, Vector3 position, float radius, int nSegmnets, float direction, float angle, Color color)
 {
     List<Vector3> lines = new List<Vector3>();
     angle = Math.Min(angle, (float)Math.PI);
     float startAngle = direction - angle;
     float endAngle = direction + angle;
     lines.Add(position);
     float angleStep = angle * 2 / (float)nSegmnets;
     for (int i = 0; i <= nSegmnets; i++)
     {
         Vector3 diff = Common.Math.Vector3FromAngleXY(startAngle + angleStep * i) * radius;
         lines.Add(position + diff);
     }
     lines.Add(position);
     Draw3DLines(camera, world, lines.ToArray(), color);
 }
コード例 #9
0
 public void Draw3DLines(Camera camera, Matrix world, Vector3[] lines, Color color)
 {
     LineDrawer.Begin();
     List<Vector2> trans = new List<Vector2>();
     foreach (var v in lines)
     {
         var p = Vector3.Project(v, Viewport.X, Viewport.Y, Viewport.Width, Viewport.Height, Viewport.MinZ, Viewport.MaxZ, world * camera.ViewProjection);
         trans.Add(Common.Math.ToVector2(p));
     }
     LineDrawer.Draw(trans.ToArray(), color);
     //LineDrawer.DrawTransformed(lines, world * camera.View * camera.Projection, color);
     LineDrawer.End();
 }
コード例 #10
0
        public void Draw3DAABB(Camera camera, Matrix world, Vector3 min, Vector3 max, Color color)
        {
            //LineDrawer.Begin();
            //LineDrawer.DrawTransformed(
            Draw3DLines(camera, world,
                new Vector3[]
            {
                //bottom
                new Vector3(min.X, min.Y, min.Z),
                new Vector3(max.X, min.Y, min.Z),
                new Vector3(max.X, max.Y, min.Z),
                new Vector3(min.X, max.Y, min.Z),
                new Vector3(min.X, min.Y, min.Z),

                new Vector3(min.X, min.Y, max.Z),

                new Vector3(max.X, min.Y, max.Z),
                new Vector3(max.X, min.Y, min.Z),
                new Vector3(max.X, min.Y, max.Z),

                new Vector3(max.X, max.Y, max.Z),
                new Vector3(max.X, max.Y, min.Z),
                new Vector3(max.X, max.Y, max.Z),

                new Vector3(min.X, max.Y, max.Z),
                new Vector3(min.X, max.Y, min.Z),
                new Vector3(min.X, max.Y, max.Z),

                new Vector3(min.X, min.Y, max.Z),
            },
            //world * camera.View * camera.Projection,
            color);
            //LineDrawer.End();
        }
コード例 #11
0
 public override void DrawEffectiveAttackRangeCircle(Camera camera, float lookatDir, System.Drawing.Color color)
 {
     Program.Instance.DrawCircle(Game.Instance.Scene.Camera, Matrix.Identity,
                             TargetPosition, EffectiveRange, 12, color);
 }
コード例 #12
0
 public override void DrawEffectiveAttackRangeCircle(Camera camera, float lookatDir, System.Drawing.Color color)
 {
     var gbe = new GhostBulletExplosion
         {
             TargetPosition = TargetPosition
         };
     gbe.DrawEffectiveAttackRangeCircle(camera, lookatDir, color);
 }
 private Common.Bounding.Frustum FrustumWithMargin(Camera camera, Graphics.GraphicsDevice.Viewport viewport)
 {
     return camera.FrustumFromRectangle(viewport, new Point(-enLargement, -enLargement),
         new Point((int)viewport.Width + enLargement, (int)viewport.Height + enLargement));
 }
コード例 #14
0
 public Camera(Camera cpy)
 {
     this.ZFar = cpy.ZFar;
     this.ZNear = cpy.ZNear;
 }
コード例 #15
0
 public WorldViewProbe(View view, Camera camera)
 {
     this.View = view;
     this.Camera = camera;
     WorldProbe = new Common.EmptyWorldProbe();
 }