public Main() { StartPosition = FormStartPosition.Manual; InitializeComponent(); Text = "Box2CS Level Editor - Box2D version " + Box2DVersion.Version.ToString(); renderWindow = new RenderWindow(panel1.Handle, new ContextSettings(32, 0, 12)); renderWindow.Resized += new EventHandler <SizeEventArgs>(render_Resized); renderWindow.MouseButtonPressed += new EventHandler <MouseButtonEventArgs>(renderWindow_MouseButtonPressed); renderWindow.MouseButtonReleased += new EventHandler <MouseButtonEventArgs>(renderWindow_MouseButtonReleased); renderWindow.MouseMoved += new EventHandler <MouseMoveEventArgs>(renderWindow_MouseMoved); renderWindow.KeyPressed += new EventHandler <SFML.Window.KeyEventArgs>(renderWindow_KeyPressed); renderWindow.KeyReleased += new EventHandler <SFML.Window.KeyEventArgs>(renderWindow_KeyReleased); renderWindow.Show(true); OnGLResize(); Tao.FreeGlut.Glut.glutInit(); debugDraw = new TestDebugDraw(); debugDraw.Flags = DebugFlags.Shapes | DebugFlags.Joints | DebugFlags.CenterOfMasses; Gl.glEnable(Gl.GL_BLEND); Gl.glBlendFunc(Gl.GL_SRC_ALPHA, Gl.GL_ONE_MINUS_SRC_ALPHA); }
public Main() { StartPosition = FormStartPosition.Manual; InitializeComponent(); Text = "Box2CS Level Editor - Box2D version " + Box2DVersion.Version.ToString(); renderWindow = new RenderWindow(panel1.Handle, new ContextSettings(32, 0, 12)); renderWindow.Resized += new EventHandler<SizeEventArgs>(render_Resized); renderWindow.MouseButtonPressed += new EventHandler<MouseButtonEventArgs>(renderWindow_MouseButtonPressed); renderWindow.MouseButtonReleased += new EventHandler<MouseButtonEventArgs>(renderWindow_MouseButtonReleased); renderWindow.MouseMoved += new EventHandler<MouseMoveEventArgs>(renderWindow_MouseMoved); renderWindow.KeyPressed += new EventHandler<SFML.Window.KeyEventArgs>(renderWindow_KeyPressed); renderWindow.KeyReleased += new EventHandler<SFML.Window.KeyEventArgs>(renderWindow_KeyReleased); renderWindow.Show(true); OnGLResize(); Tao.FreeGlut.Glut.glutInit(); debugDraw = new TestDebugDraw(); debugDraw.Flags = DebugFlags.Shapes | DebugFlags.Joints | DebugFlags.CenterOfMasses; Gl.glEnable(Gl.GL_BLEND); Gl.glBlendFunc(Gl.GL_SRC_ALPHA, Gl.GL_ONE_MINUS_SRC_ALPHA); }
void UpdateDraw() { // Process events renderWindow.DispatchEvents(); // Clear the window renderWindow.Clear(); Gl.glClearColor((float)BackColor.R / 255.0f, (float)BackColor.G / 255.0f, (float)BackColor.B / 255.0f, 1); Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT); Gl.glMatrixMode(Gl.GL_MODELVIEW); Gl.glLoadIdentity(); // Draw //test.m_world.DrawDebugData(); //DrawTest(); Gl.glBegin(Gl.GL_LINES); Gl.glColor4ub(0, 255, 0, 64); Gl.glVertex2f(0, 10); Gl.glVertex2f(0, -10); Gl.glColor4ub(255, 0, 0, 64); Gl.glVertex2f(10, 0); Gl.glVertex2f(-10, 0); Gl.glEnd(); if (!_testing) { foreach (var x in WorldObject.Bodies) { var xf = new Transform(x.Body.Position, new Mat22(x.Body.Angle)); foreach (var fixture in x.Fixtures) { ColorF color = new ColorF(0.9f, 0.7f, 0.7f); if (SelectedNode.NodeType == SelectedNodeType.Body && x == SelectedNode.BodyNode) { color = new ColorF(1, 1, 0); } else if (HoverBody != null && x.Body == HoverBody.Body) { color = new ColorF(1, 0, 0); } else if (!x.Body.Active) { color = new ColorF(0.5f, 0.5f, 0.3f); } else if (x.Body.BodyType == BodyType.Static) { color = new ColorF(0.5f, 0.9f, 0.5f); } else if (x.Body.BodyType == BodyType.Kinematic) { color = new ColorF(0.5f, 0.5f, 0.9f); } else if (x.Body.Awake) { color = new ColorF(0.6f, 0.6f, 0.6f); } debugDraw.DrawShape(fixture.Fixture, xf, color); } debugDraw.DrawTransform(xf); } if (HoverBody != null && !string.IsNullOrEmpty(HoverBody.Name)) { Vec2 p = ConvertScreenToWorld(CursorPos.X, CursorPos.Y); TestDebugDraw.DrawStringFollow(p.X, p.Y, HoverBody.Name); } /*foreach (var x in WorldObject.Joints) * { * Vec2 a1 = Vec2.Empty, a2 = Vec2.Empty; * * switch (x.Joint.JointType) * { * case JointType.Revolute: * a1 = ((RevoluteJointDef)x.Joint).LocalAnchorA; * a2 = ((RevoluteJointDef)x.Joint).LocalAnchorB; * break; * case JointType.Friction: * a1 = ((FrictionJointDef)x.Joint).LocalAnchorA; * a2 = ((FrictionJointDef)x.Joint).LocalAnchorB; * break; * case JointType.Line: * a1 = ((LineJointDef)x.Joint).LocalAnchorA; * a2 = ((LineJointDef)x.Joint).LocalAnchorB; * break; * case JointType.Prismatic: * a1 = ((PrismaticJointDef)x.Joint).LocalAnchorA; * a2 = ((PrismaticJointDef)x.Joint).LocalAnchorB; * break; * case JointType.Weld: * a1 = ((WeldJointDef)x.Joint).LocalAnchorA; * a2 = ((WeldJointDef)x.Joint).LocalAnchorB; * break; * } * debugDraw.DrawJoint(x, a1, a2, WorldObject.Bodies[x.BodyAIndex].Body, WorldObject.Bodies[x.BodyBIndex].Body); * }*/ } else { _world.DrawDebugData(); } renderWindow.Display(); }