public async static Task <Mesh> BuildAsync(WebGLContext gl, Geometry geometry, Texture texture, float[] initialPosition = null) { int vertexCount = geometry.GetVertexCount(); return(new Mesh( await VBO.BuildAsync(gl, vertexCount, geometry.GetPositions()), await VBO.BuildAsync(gl, vertexCount, geometry.GetNormals()), await VBO.BuildAsync(gl, vertexCount, geometry.GetUvs()), texture, vertexCount, initialPosition ?? Mat4.Create(), gl)); }
public void Start(GamePlatform p_) { this.p = p_; //Initialize translations lang = new LanguageCi(); lang.platform = p; lang.LoadTranslations(); p.SetTitle(lang.GameName()); textColorRenderer = new TextColorRenderer(); textColorRenderer.platform = p_; p_.LoadAssetsAsyc(assets, assetsLoadProgress); overlap = 200; minspeed = 20; rnd = p.RandomCreate(); xRot = 0; xInv = false; xSpeed = minspeed + rnd.MaxNext(5); yRot = 0; yInv = false; ySpeed = minspeed + rnd.MaxNext(5); z = -5; filter = 0; mvMatrix = Mat4.Create(); pMatrix = Mat4.Create(); currentlyPressedKeys = new bool[256]; p.AddOnNewFrame(MainMenuNewFrameHandler.Create(this)); p.AddOnKeyEvent(MainMenuKeyEventHandler.Create(this)); p.AddOnMouseEvent(MainMenuMouseEventHandler.Create(this)); p.AddOnTouchEvent(MainMenuTouchEventHandler.Create(this)); }
public Unproject() { finalMatrix = Mat4.Create(); inp = new float[4]; out_ = new float[4]; }
/// <summary> /// Calculating the frustum planes. /// </summary> /// <remarks> /// From the current OpenGL modelview and projection matrices, /// calculate the frustum plane equations (Ax+By+Cz+D=0, n=(A,B,C)) /// The equations can then be used to see on which side points are. /// </remarks> public void CalcFrustumEquations() { float t; // Retrieve matrices from OpenGL float[] matModelView = d_GetCameraMatrix.GetModelViewMatrix(); float[] matProjection = d_GetCameraMatrix.GetProjectionMatrix(); float[] matFrustum = Mat4.Create(); //Matrix4.Mult(ref matModelView, ref matProjection, out matFrustum); Mat4.Multiply(matFrustum, matProjection, matModelView); //unsafe { //fixed (float* clip1 = &matFrustum) //float* clip1 = (float*)(&matFrustum); float[] clip1 = matFrustum; { // Extract the numbers for the RIGHT plane frustum00 = clip1[3] - clip1[0]; frustum01 = clip1[7] - clip1[4]; frustum02 = clip1[11] - clip1[8]; frustum03 = clip1[15] - clip1[12]; // Normalize the result t = platform.MathSqrt(frustum00 * frustum00 + frustum01 * frustum01 + frustum02 * frustum02); frustum00 /= t; frustum01 /= t; frustum02 /= t; frustum03 /= t; // Extract the numbers for the LEFT plane frustum10 = clip1[3] + clip1[0]; frustum11 = clip1[7] + clip1[4]; frustum12 = clip1[11] + clip1[8]; frustum13 = clip1[15] + clip1[12]; // Normalize the result t = platform.MathSqrt(frustum10 * frustum10 + frustum11 * frustum11 + frustum12 * frustum12); frustum10 /= t; frustum11 /= t; frustum12 /= t; frustum13 /= t; // Extract the BOTTOM plane frustum20 = clip1[3] + clip1[1]; frustum21 = clip1[7] + clip1[5]; frustum22 = clip1[11] + clip1[9]; frustum23 = clip1[15] + clip1[13]; // Normalize the result t = platform.MathSqrt(frustum20 * frustum20 + frustum21 * frustum21 + frustum22 * frustum22); frustum20 /= t; frustum21 /= t; frustum22 /= t; frustum23 /= t; // Extract the TOP plane frustum30 = clip1[3] - clip1[1]; frustum31 = clip1[7] - clip1[5]; frustum32 = clip1[11] - clip1[9]; frustum33 = clip1[15] - clip1[13]; // Normalize the result t = platform.MathSqrt(frustum30 * frustum30 + frustum31 * frustum31 + frustum32 * frustum32); frustum30 /= t; frustum31 /= t; frustum32 /= t; frustum33 /= t; // Extract the FAR plane frustum40 = clip1[3] - clip1[2]; frustum41 = clip1[7] - clip1[6]; frustum42 = clip1[11] - clip1[10]; frustum43 = clip1[15] - clip1[14]; // Normalize the result t = platform.MathSqrt(frustum40 * frustum40 + frustum41 * frustum41 + frustum42 * frustum42); frustum40 /= t; frustum41 /= t; frustum42 /= t; frustum43 /= t; // Extract the NEAR plane frustum50 = clip1[3] + clip1[2]; frustum51 = clip1[7] + clip1[6]; frustum52 = clip1[11] + clip1[10]; frustum53 = clip1[15] + clip1[14]; // Normalize the result t = platform.MathSqrt(frustum50 * frustum50 + frustum51 * frustum51 + frustum52 * frustum52); frustum50 /= t; frustum51 /= t; frustum52 /= t; frustum53 /= t; } } }