void GenSessionKey(uchar *Buffer, uint Size) { uint Idx, Rander; Rander = BytesRandom(); for (Idx = 0; Idx < Size; Idx++) { Rander = skrand(Rander); Buffer[Idx] = ((uchar *)&Rander)[sizeof(Rander) - 1]; //Buffer[Idx] = (uchar)(Idx + 1); } Buffer[0] = 0x01; }
void EndScene::_draw(float time) { std::vector<vec3> path; skrand(625734); for (int i = 0; i < 10; i++) path.push_back(endCamPos + vec3(rand(-1.f, 1.f), rand(-1.f, 1.f), rand(-1.f, 1.f))); mat4 mPersp = perspective(45.0f, demo.aspect, 0.5f, 1000.0f); mat4 mCamera = lookAt(interpolatePath(path, time / Duration()) * 0.1f, endLookAt * 0.1f, vec3(0, 1, 0)); setDepthMode(DEPTH_FULL); for (int i = 0; i < ARRAY_SIZE(tPark); i++) { GlslShader *sDraw = sPark[i]; sDraw->bind(); sDraw->uniform("u_matrix", mPersp * mCamera); sDraw->uniform("u_modelview", mCamera); sDraw->uniform("u_projection", mPersp); sDraw->uniform("u_alpha", 1.0f); sDraw->bindTexture("tex", tPark[i], 0); oPark->draw(i); sDraw->unbind(); } sDrawFlat->bind(); sDrawFlat->bindTexture("tex", tSmoke, 0); setBlendMode(BLEND_ALPHA); sDrawFlat->uniform("u_alpha", smokeAlpha); mat4 sm(1); sm = translate(sm, smokeCenter * 0.1f); sm = rotate(sm, smokeRot, vec3(0, 1, 0)); sm = scale(sm, vec3(smokeSize, 1)); sDrawFlat->uniform("u_matrix", mPersp * mCamera * sm); int animStep = int(floor(time * 24.0f)); int animX = animStep & 7; int animY = (animStep >> 3) & 3; float l = float(animX) / 8, r = float(animX + 1) / 8; float b = float(animY) / 4, t = float(animY + 1) / 4; drawRect(vec2(-0.5, -0.5), vec2(0.5, 0.5), vec2(l, t), vec2(r, b)); sDrawFlat->unbind(); setDepthMode(NO_DEPTH); float logoFade = clamp((time - logoFadeStart) / (logoFadeEnd - logoFadeStart), 0.f, 1.f); setBlendMode(BLEND_ALPHA); sDrawFlat->bind(); sDrawFlat->bindTexture("tex", tLogo, 0); sDrawFlat->uniform("u_alpha", logoFade); mat4 lm(demo.fix_aspect(mat4(1))); lm = translate(lm, logoCenter + vec3(sin(time) * 2, cos(2 * time), 0) * .01f); lm = scale(lm, vec3(tLogo->aspect, 1, 1) * logoSize); sDrawFlat->uniform("u_matrix", lm); drawUnitQuad(); lm = demo.fix_aspect(mat4(1)); lm = translate(lm, textCenter + vec3(cos(time + .6135), sin(-2 * time - .6135), 0) * .003f); lm = scale(lm, vec3(tText->aspect, 1, 1) * textSize); sDrawFlat->uniform("u_matrix", lm); sDrawFlat->bindTexture("tex", tText, 0); drawUnitQuad(); sDrawFlat->unbind(); setBlendMode(NO_BLEND); }