Пример #1
0
        void ProcessCameraIndicator()
        {
            int FI;
            int YI;

            bool BS  = false;
            bool GS  = false;
            bool RS  = false;
            bool RS1 = false;
            bool GS1 = false;
            bool BS1 = false;
            bool OS  = false;

            if (requestClick && MiniGL.GetClickBufferData(130 - (GL.RenderWidth - rcX), 128 - (GL.RenderHeight - (this.ClientSize.Height - rcY)), out FI, out YI))
            {
                if (YI == 1) //BLUE
                {
                    TargetPosition = new Vector3(0, 0, DistanceCenter) + ModelCenter;
                    TargetRotation = new Vector3(0, 0, 180);
                }
                else if (YI == 2) //RED
                {
                    TargetPosition = new Vector3(DistanceCenter, 0, 0) + ModelCenter;
                    TargetRotation = new Vector3(0, 0, -90);
                }
                else if (YI == 3) //GREEN
                {
                    TargetPosition = new Vector3(0, DistanceCenter, 0) + ModelCenter;
                    TargetRotation = new Vector3(0, 90, 0);
                }
                else if (YI == 4) //WHITE
                {
                    if (TMatrix == 1f)
                    {
                        TMatrix = 0f;
                    }
                    else
                    {
                        TMatrix = 1f;
                    }
                }
                else if (YI == 5) //BLUE1
                {
                    TargetPosition = new Vector3(0, 0, -DistanceCenter) + ModelCenter;
                    TargetRotation = new Vector3(0, 0, 0);
                }
                else if (YI == 6) //GREEN1
                {
                    TargetPosition = new Vector3(0, -DistanceCenter, 0) + ModelCenter;
                    TargetRotation = new Vector3(0, -90, 0);
                }
                else if (YI == 7) //RED1
                {
                    TargetPosition = new Vector3(-DistanceCenter, 0, 0) + ModelCenter;
                    TargetRotation = new Vector3(0, 0, 90);
                }

                if (YI != 4)
                {
                    requestHome = true;
                }
                requestClick = false;
            }

            int sourceX = 0;
            int sourceY = 0;

            this.Invoke((Action) delegate(){
                sourceX = this.PointToClient(Cursor.Position).X;
                sourceY = this.PointToClient(Cursor.Position).Y;
            });

            if (MiniGL.GetClickBufferData(130 - (GL.RenderWidth - sourceX), 128 - (GL.RenderHeight - (this.ClientSize.Height - sourceY)), out FI, out YI))
            {
                BS  = YI == 1;
                RS  = YI == 2;
                GS  = YI == 3;
                OS  = YI == 4;
                BS1 = YI == 5;
                GS1 = YI == 6;
                RS1 = YI == 7;
            }


            MiniGL.Clear();
            MiniGL.ClearClickBuffer();
            MiniGL.ClearDepth();

            //DRAW CENTER AXIS INDICATOR PIECE
            MiniGL.SetClickBufferInt(4);
            MiniGL.SelectBuffer(CICVertex);
            CI_RAngle = new Vector3(0, 0, 0);
            CI_Color  = new Vector3(1f, 1f, 1f);
            if (OS)
            {
                CI_Color = CI_Color * 0.5f;
            }
            SMPLT = true; MiniGL.Draw(); SMPLT = false;

            MiniGL.SelectBuffer(CIPVertex);

            //DRAW BLUE AXIS INDICATOR
            MiniGL.SetClickBufferInt(1);
            CI_Color = new Vector3(1, 0.69f, 0.14f);
            if (BS)
            {
                CI_Color = CI_Color * 0.5f;
            }
            CI_RAngle = new Vector3(0, 0, 180);
            MiniGL.Draw();

            //DRAW RED AXIS INDICATOR
            MiniGL.SetClickBufferInt(2);
            CI_Color = new Vector3(0, 0, 1);
            if (RS)
            {
                CI_Color = CI_Color * 0.5f;
            }
            CI_RAngle = new Vector3(0, 0, 90);
            MiniGL.Draw();

            MiniGL.SetClickBufferInt(7);
            CI_Color = new Vector3(1, 1, 1);
            if (RS1)
            {
                CI_Color = CI_Color * 0.5f;
            }
            CI_RAngle = new Vector3(0, 0, 270);
            MiniGL.Draw();


            MiniGL.SetClickBufferInt(5);
            CI_Color = new Vector3(1, 1, 1);
            if (BS1)
            {
                CI_Color = CI_Color * 0.5f;
            }
            CI_RAngle = new Vector3(0, 0, 0);
            MiniGL.Draw();


            MiniGL.SetClickBufferInt(3);
            CI_Color = new Vector3(0, 1, 0);
            if (GS)
            {
                CI_Color = CI_Color * 0.5f;
            }
            CI_RAngle = new Vector3(0, -90, 0);
            MiniGL.Draw();

            MiniGL.SetClickBufferInt(6);
            CI_Color = new Vector3(1, 1, 1);
            if (GS1)
            {
                CI_Color = CI_Color * 0.5f;
            }
            CI_RAngle = new Vector3(0, 90, 0);
            MiniGL.Draw();
        }