public unsafe void RenderRotationControl(TKContext context) { Matrix m = CamFacingMatrix; GL.PushMatrix(); GL.MultMatrix((float *)&m); GLDisplayList sphere = context.GetCircleList(); GLDisplayList circle = context.GetRingList(); //Orb GL.Color4(0.7f, 0.7f, 0.7f, 0.15f); sphere.Call(); GL.Disable(EnableCap.DepthTest); //Container GL.Color4(0.4f, 0.4f, 0.4f, 1.0f); circle.Call(); //Circ if (_snapCirc || _hiCirc) { GL.Color4(Color.Yellow); } else { GL.Color4(1.0f, 0.8f, 0.5f, 1.0f); } GL.Scale(_circOrbScale, _circOrbScale, _circOrbScale); circle.Call(); //Pop GL.PopMatrix(); GL.Enable(EnableCap.DepthTest); //Enter local space m = Matrix.TransformMatrix(new Vector3(OrbRadius), SelectedBone._frameMatrix.GetAngles(), BoneLoc); modelPanel.ScreenText["X"] = modelPanel.Project(new Vector3(1.1f, 0, 0) * m) - new Vector3(8.0f, 8.0f, 0); modelPanel.ScreenText["Y"] = modelPanel.Project(new Vector3(0, 1.1f, 0) * m) - new Vector3(8.0f, 8.0f, 0); modelPanel.ScreenText["Z"] = modelPanel.Project(new Vector3(0, 0, 1.1f) * m) - new Vector3(8.0f, 8.0f, 0); GL.PushMatrix(); GL.MultMatrix((float *)&m); //Z if (_snapZ || _hiZ) { GL.Color4(Color.Yellow); } else { GL.Color4(0.0f, 0.0f, 1.0f, 1.0f); } circle.Call(); GL.Rotate(90.0f, 0.0f, 1.0f, 0.0f); //X if (_snapX || _hiX) { GL.Color4(Color.Yellow); } else { GL.Color4(Color.Red); } circle.Call(); GL.Rotate(90.0f, 1.0f, 0.0f, 0.0f); //Y if (_snapY || _hiY) { GL.Color4(Color.Yellow); } else { GL.Color4(Color.Green); } circle.Call(); //Pop GL.PopMatrix(); }
public unsafe void RenderRotationControl( Vector3 position, float radius, Matrix rotation, ModelPanelViewport panel, SelectionParams selection) { Matrix m = Matrix.TransformMatrix(new Vector3(radius), new Vector3(), position) * CameraFacingRotationMatrix(panel, position); GL.PushMatrix(); GL.MultMatrix((float *)&m); GLDisplayList sphere = TKContext.GetCircleList(); GLDisplayList circle = TKContext.GetRingList(); GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Fill); GL.PushAttrib(AttribMask.DepthBufferBit); GL.Enable(EnableCap.DepthTest); GL.DepthFunc(DepthFunction.Lequal); //Orb GL.Color4(0.7f, 0.7f, 0.7f, 0.15f); sphere.Call(); GL.Disable(EnableCap.DepthTest); //Container GL.Color4(0.4f, 0.4f, 0.4f, 1.0f); circle.Call(); //Circ if (selection._snapCirc || selection._hiCirc) { GL.Color4(Color.Yellow); } else { GL.Color4(1.0f, 0.8f, 0.5f, 1.0f); } GL.Scale(_circOrbScale, _circOrbScale, _circOrbScale); circle.Call(); //Pop GL.PopMatrix(); GL.Enable(EnableCap.DepthTest); //Enter local space m = Matrix.TransformMatrix(new Vector3(radius), new Vector3(), position) * rotation; panel.SettingsScreenText["X"] = panel.Camera.Project(new Vector3(1.1f, 0, 0) * m) - new Vector3(8.0f, 8.0f, 0); panel.SettingsScreenText["Y"] = panel.Camera.Project(new Vector3(0, 1.1f, 0) * m) - new Vector3(8.0f, 8.0f, 0); panel.SettingsScreenText["Z"] = panel.Camera.Project(new Vector3(0, 0, 1.1f) * m) - new Vector3(8.0f, 8.0f, 0); GL.PushMatrix(); GL.MultMatrix((float *)&m); //Z if (selection._snapZ || selection._hiZ) { GL.Color4(Color.Yellow); } else { GL.Color4(0.0f, 0.0f, 1.0f, 1.0f); } circle.Call(); GL.Rotate(90.0f, 0.0f, 1.0f, 0.0f); //X if (selection._snapX || selection._hiX) { GL.Color4(Color.Yellow); } else { GL.Color4(Color.Red); } circle.Call(); GL.Rotate(90.0f, 1.0f, 0.0f, 0.0f); //Y if (selection._snapY || selection._hiY) { GL.Color4(Color.Yellow); } else { GL.Color4(Color.Green); } circle.Call(); //Pop GL.PopMatrix(); GL.PopAttrib(); }
public unsafe void RenderRotationControl(TKContext context, Vector3 position, float radius, Vector3 rotate) { Matrix m = Matrix.TransformMatrix(new Vector3(radius), position.LookatAngles(CamLoc) * Maths._rad2degf, position); GL.PushMatrix(); GL.MultMatrix((float*)&m); GLDisplayList sphere = context.GetCircleList(); GLDisplayList circle = context.GetRingList(); //Orb GL.Color4(0.7f, 0.7f, 0.7f, 0.15f); sphere.Call(); GL.Disable(EnableCap.DepthTest); //Container GL.Color4(0.4f, 0.4f, 0.4f, 1.0f); circle.Call(); //Circ if (_snapCirc || _hiCirc) GL.Color4(Color.Yellow); else GL.Color4(1.0f, 0.8f, 0.5f, 1.0f); GL.Scale(_circOrbScale, _circOrbScale, _circOrbScale); circle.Call(); //Pop GL.PopMatrix(); GL.Enable(EnableCap.DepthTest); //Enter local space m = Matrix.TransformMatrix(new Vector3(radius), rotate, position); ModelPanel.ScreenText["X"] = ModelPanel.Project(new Vector3(1.1f, 0, 0) * m) - new Vector3(8.0f, 8.0f, 0); ModelPanel.ScreenText["Y"] = ModelPanel.Project(new Vector3(0, 1.1f, 0) * m) - new Vector3(8.0f, 8.0f, 0); ModelPanel.ScreenText["Z"] = ModelPanel.Project(new Vector3(0, 0, 1.1f) * m) - new Vector3(8.0f, 8.0f, 0); GL.PushMatrix(); GL.MultMatrix((float*)&m); //Z if (_snapZ || _hiZ) GL.Color4(Color.Yellow); else GL.Color4(0.0f, 0.0f, 1.0f, 1.0f); circle.Call(); GL.Rotate(90.0f, 0.0f, 1.0f, 0.0f); //X if (_snapX || _hiX) GL.Color4(Color.Yellow); else GL.Color4(Color.Red); circle.Call(); GL.Rotate(90.0f, 1.0f, 0.0f, 0.0f); //Y if (_snapY || _hiY) GL.Color4(Color.Yellow); else GL.Color4(Color.Green); circle.Call(); //Pop GL.PopMatrix(); }
public unsafe void RenderRotationControl(TKContext context, Vector3 position, float radius, Vector3 rotate) { Matrix m = Matrix.TransformMatrix(new Vector3(radius), position.LookatAngles(CamLoc) * Maths._rad2degf, position); GL.PushMatrix(); GL.MultMatrix((float *)&m); GLDisplayList sphere = context.GetCircleList(); GLDisplayList circle = context.GetRingList(); //Orb GL.Color4(0.7f, 0.7f, 0.7f, 0.15f); sphere.Call(); GL.Disable(EnableCap.DepthTest); //Container GL.Color4(0.4f, 0.4f, 0.4f, 1.0f); circle.Call(); //Circ if (_snapCirc || _hiCirc) { GL.Color4(Color.Yellow); } else { GL.Color4(1.0f, 0.8f, 0.5f, 1.0f); } GL.Scale(_circOrbScale, _circOrbScale, _circOrbScale); circle.Call(); //Pop GL.PopMatrix(); GL.Enable(EnableCap.DepthTest); //Enter local space m = Matrix.TransformMatrix(new Vector3(radius), rotate, position); ModelPanel.ScreenText["X"] = ModelPanel.Project(new Vector3(1.1f, 0, 0) * m) - new Vector3(8.0f, 8.0f, 0); ModelPanel.ScreenText["Y"] = ModelPanel.Project(new Vector3(0, 1.1f, 0) * m) - new Vector3(8.0f, 8.0f, 0); ModelPanel.ScreenText["Z"] = ModelPanel.Project(new Vector3(0, 0, 1.1f) * m) - new Vector3(8.0f, 8.0f, 0); GL.PushMatrix(); GL.MultMatrix((float *)&m); //Z if (_snapZ || _hiZ) { GL.Color4(Color.Yellow); } else { GL.Color4(0.0f, 0.0f, 1.0f, 1.0f); } circle.Call(); GL.Rotate(90.0f, 0.0f, 1.0f, 0.0f); //X if (_snapX || _hiX) { GL.Color4(Color.Yellow); } else { GL.Color4(Color.Red); } circle.Call(); GL.Rotate(90.0f, 1.0f, 0.0f, 0.0f); //Y if (_snapY || _hiY) { GL.Color4(Color.Yellow); } else { GL.Color4(Color.Green); } circle.Call(); //Pop GL.PopMatrix(); }
public unsafe void RenderRotationControl(TKContext context) { Matrix m = CamFacingMatrix; GL.PushMatrix(); GL.MultMatrix((float*)&m); GLDisplayList sphere = context.GetCircleList(); GLDisplayList circle = context.GetRingList(); //Orb GL.Color4(0.7f, 0.7f, 0.7f, 0.15f); sphere.Call(); GL.Disable(EnableCap.DepthTest); //Container GL.Color4(0.4f, 0.4f, 0.4f, 1.0f); circle.Call(); //Circ if (_snapCirc || _hiCirc) GL.Color4(Color.Yellow); else GL.Color4(1.0f, 0.8f, 0.5f, 1.0f); GL.Scale(_circOrbScale, _circOrbScale, _circOrbScale); circle.Call(); //Pop GL.PopMatrix(); GL.Enable(EnableCap.DepthTest); //Enter local space m = Matrix.TransformMatrix(new Vector3(OrbRadius), SelectedBone._frameMatrix.GetAngles(), BoneLoc); modelPanel.ScreenText["X"] = modelPanel.Project(new Vector3(1.1f, 0, 0) * m) - new Vector3(8.0f, 8.0f, 0); modelPanel.ScreenText["Y"] = modelPanel.Project(new Vector3(0, 1.1f, 0) * m) - new Vector3(8.0f, 8.0f, 0); modelPanel.ScreenText["Z"] = modelPanel.Project(new Vector3(0, 0, 1.1f) * m) - new Vector3(8.0f, 8.0f, 0); GL.PushMatrix(); GL.MultMatrix((float*)&m); //Z if (_snapZ || _hiZ) GL.Color4(Color.Yellow); else GL.Color4(0.0f, 0.0f, 1.0f, 1.0f); circle.Call(); GL.Rotate(90.0f, 0.0f, 1.0f, 0.0f); //X if (_snapX || _hiX) GL.Color4(Color.Yellow); else GL.Color4(Color.Red); circle.Call(); GL.Rotate(90.0f, 1.0f, 0.0f, 0.0f); //Y if (_snapY || _hiY) GL.Color4(Color.Yellow); else GL.Color4(Color.Green); circle.Call(); //Pop GL.PopMatrix(); }