Exemple #1
0
        private bool TestColl(Vector3 v)
        {
            v.X = -v.X;
            v.Y = -v.Y;
            v.Z = -v.Z;
            bool flag = false;

            foreach (Co2 current in coll.alCo2)
            {
                if (current.Min.X <= v.X && current.Min.Y <= v.Y && current.Min.Z <= v.Z && v.X <= current.Max.X &&
                    v.Y <= current.Max.Y && v.Z <= current.Max.Z)
                {
                    int num  = 0;
                    int num2 = 0;
                    for (int i = current.Co3frm; i < current.Co3to; i++)
                    {
                        Co3 co = coll.alCo3[i];
                        num += ((Plane.DotCoordinate(coll.alCo5[co.PlaneCo5], v) > 0f) ? 1 : 0);
                        num2++;
                    }
                    flag |= (num2 != 0 && num == num2);
                }
            }
            return(flag);
        }
Exemple #2
0
        private void p1_Paint(object sender, PaintEventArgs e)
        {
            Size  clientSize = p1.ClientSize;
            float aspect     = (clientSize.Height != 0) ? (clientSize.Width / (float)clientSize.Height) : 0f;

            device.SetTransform(TransformState.World, Matrix.Identity);
            device.SetTransform(TransformState.View, Matrix.LookAtLH(CameraEye, CameraEye + Target, CameraUp));
            device.SetTransform(TransformState.Projection,
                                Matrix.PerspectiveFovLH(Convert.ToSingle(fov.Value) / 180f * 3.14159f, aspect, Convert.ToSingle(50),
                                                        Convert.ToSingle(5000000)));
            device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, p1.BackColor, 1f, 0);
            device.BeginScene();
            device.SetTextureStageState(0, TextureStage.ColorOperation,
                                        cbVertexColor.Checked ? TextureOperation.Modulate : TextureOperation.SelectArg1);
            device.SetTextureStageState(0, TextureStage.ColorArg1, TextureArgument.Texture);
            device.SetTextureStageState(0, TextureStage.ColorArg2, TextureArgument.Diffuse);
            device.SetTextureStageState(0, TextureStage.AlphaOperation, TextureOperation.Modulate);
            device.SetTextureStageState(0, TextureStage.AlphaArg1, TextureArgument.Texture);
            device.SetTextureStageState(0, TextureStage.AlphaArg2, TextureArgument.Diffuse);
            device.SetRenderState(RenderState.FogEnable, cbFog.Checked);
            if (vb != null)
            {
                device.SetStreamSource(0, vb, 0, CustomVertex.PositionColoredTextured.Size);
                device.VertexFormat = CustomVertex.PositionColoredTextured.Format;
                foreach (RIB current in alib)
                {
                    if (current.ib != null && current.render)
                    {
                        device.SetRenderState(RenderState.FogEnable, cbFog.Checked && current.name.Equals("MAP"));
                        device.Indices = current.ib;
                        device.SetTexture(0, altex[current.texi & 65535]);
                        device.DrawIndexedPrimitives(PrimitiveType.TriangleList, 0, 0, cntVerts, 0, current.cnt / 3);
                    }
                }
            }
            if (tsbBallGame.Checked)
            {
                var list = new List <CustomVertex.PositionColored>();
                foreach (Ball current2 in alBall)
                {
                    list.Add(new CustomVertex.PositionColored(current2.pos, Color.Red.ToArgb()));
                }
                if (list.Count != 0)
                {
                    device.VertexFormat = CustomVertex.PositionColored.Format;
                    device.SetRenderState(RenderState.PointScaleEnable, true);
                    device.SetRenderState(RenderState.PointSize, 10f);
                    device.SetRenderState(RenderState.PointScaleA, 0f);
                    device.SetRenderState(RenderState.PointScaleB, 0f);
                    device.SetRenderState(RenderState.PointScaleC, 1f);
                    device.DrawUserPrimitives(PrimitiveType.PointList, list.Count, list.ToArray());
                    device.SetRenderState(RenderState.PointScaleEnable, false);
                }
            }
            if (tsbShowColl.Checked)
            {
                vut.Clear();
                foreach (Co2 current3 in coll.alCo2)
                {
                    for (int i = current3.Co3frm; i < current3.Co3to; i++)
                    {
                        Co3 co  = coll.alCo3[i];
                        int clr = Color.Yellow.ToArgb();
                        if (0 <= co.vi0 && 0 <= co.vi1 && 0 <= co.vi2)
                        {
                            vut.AddTri(coll.alCo4[co.vi0], coll.alCo4[co.vi2], coll.alCo4[co.vi1], clr);
                            if (0 <= co.vi3)
                            {
                                vut.AddTri(coll.alCo4[co.vi3], coll.alCo4[co.vi2], coll.alCo4[co.vi0], clr);
                            }
                        }
                    }
                }
                if (vut.alv.Count != 0)
                {
                    device.SetTextureStageState(0, TextureStage.ColorOperation, TextureOperation.SelectArg1);
                    device.SetTextureStageState(0, TextureStage.ColorArg1, TextureArgument.Diffuse);
                    device.SetRenderState(RenderState.AlphaBlendEnable, false);
                    device.SetRenderState(RenderState.Lighting, true);
                    device.SetRenderState(RenderState.AlphaTestEnable, false);
                    device.SetRenderState(RenderState.ShadeMode, ShadeMode.Gouraud);
                    device.SetRenderState(RenderState.NormalizeNormals, true);
                    device.EnableLight(0, true);
                    Light light = device.GetLight(0);
                    light.Direction = Target;
                    light.Diffuse   = new Color4(-1);
                    device.SetLight(0, light);
                    Material material = device.Material;
                    device.Material = material;
                    Matrix value = Matrix.Scaling(-1f, -1f, -1f);
                    device.SetTransform(TransformState.World, value);
                    device.VertexFormat = CustomVertex.PositionNormalColored.Format;
                    device.DrawUserPrimitives(PrimitiveType.TriangleList, vut.alv.Count / 3,
                                              vut.alvtmp = vut.alv.ToArray());
                    device.SetRenderState(RenderState.AlphaBlendEnable, true);
                    device.SetRenderState(RenderState.Lighting, false);
                    device.SetRenderState(RenderState.AlphaTestEnable, true);
                }
            }
            device.EndScene();
            device.Present();
        }