aboutsummaryrefslogtreecommitdiff
path: root/textures/base
Commit message (Expand)AuthorAge
* Mirror 'sunrisebg' texture to fix chopped right edge (#7935)Paramat2018-12-04
* Re-master and improve touchscreen gui icons (#7931)stujones112018-12-03
* Android: Improve UI scaling on smaller high-density displays (#7834)stujones112018-11-18
* Android buttons: Inset 'rare controls', inset and resize 'gear icon' (#7792)Paramat2018-10-19
* Android: Add 'aux' button (#7477)Muhammad Rifqi Priyo Susanto2018-07-10
* Android: Resize jump and sneak buttons' touch target (#7498)Muhammad Rifqi Priyo Susanto2018-06-30
* Add screenshots to online content browserrubenwardy2018-05-20
* Android: Modify touch screen GUI's buttons (#7240)Muhammad Rifqi Priyo Susanto2018-04-18
* Android: Replace movement buttons with joystick (#7126)Muhammad Rifqi Priyo Susanto2018-04-10
* Add a refresh button to the serverlist (#6957)Tre2018-02-19
* Minimap: Leaner minimap arrow makes it easier to see the directionJens Rottmann2017-08-09
* GUI: Convert loading screen's progress bar to image (#5362)kilbith2017-03-10
* Add textures for air and ignore items (#5196)Wuzzy2017-02-10
* Serverlist: Add ping indicators (#5164)kilbith2017-02-03
* Halo: Highlight selected faceRealBadAngel2016-11-12
* Textures: New 'smoke puff' texture from TNT modparamat2016-10-04
* Main menu, lua_api.txt: Fix mod/texture pack screenshot size issuesWuzzy2016-07-27
* Textures: Replace menu background fallback dirt_bg.png with empty sky textureparamat2016-04-21
* Mainmenu: Unify favorite servers with main serverlistkilbith2016-04-20
* Minimap: revert change from RGBA to IndexedAuke Kok2016-04-11
* Minimap: "North" indicator arrow for circle minimapAuke Kok2016-04-08
* Update menu header imageJean-Patrick Guerrero2016-03-25
* Resize object_marker_red.png to 16x16ShadowNinja2016-02-28
* Minimap: show player markersRealBadAngel2016-02-19
* Cleanup selection mesh code, add shaders for halo and selection boxesRealBadAngel2016-02-08
* Android: Implement Autohiding button bars to cleanup screenSapier2015-12-18
* Compress textures and fontsMaksim Gamarnik2015-10-15
* Fix relief mapping issuesRealBadAngel2015-07-16
* Add minimap featureRealBadAngel2015-06-27
* Use frame instead of words 'no screenshot available'rubenwardy2015-06-24
* Add extra buttons to Android GUI. All icons are licensed by freepik.com under...Kodexky2014-12-30
* Regenerate server_flags_creative.png from XCFKahrl2014-12-21
* Fix background of creative icon (was black, now transparent)Kahrl2014-12-14
* Display serverlist flags as iconsKahrl2014-12-13
* Fix MSVC compiling warnings and remove an unused textureSmallJoker2014-12-12
* Change default halo.png for better visibility.RealBadAngel2014-09-19
* Node highlighting.RealBadAngel2014-09-17
* Add support for Android 2.3+sapier2014-06-29
* Fix regression dirt texture not beeing default in non cloud menusapier2014-06-14
* Shaders rework.RealBadAngel2013-12-03
* Make freetype usage configureable by a settingPilzAdam2013-08-04
* Replace C++ mainmenu by formspec powered onesapier2013-07-02
* Compress texturesDavid Gumberg2013-06-18
* Higher resolution menuheaderPilzAdam2013-05-25
* Add menu_header.png and remove old, unused texturesPilzAdam2013-05-20
* unkn own block -> unkn own nodekhonkhortisan2013-04-05
* Add cloud menu background by Krisi, configurable with the menu_clouds option.ShadowNinja2013-03-13
* Update menulogo.pngIlya Zhuravlev2013-03-10
* Flatten share/ and user/ in the source and for the RUN_IN_PLACE buildPerttu Ahola2012-03-20
wa">case 5: h ^= (u64)data2[4] << 32; case 4: h ^= (u64)data2[3] << 24; case 3: h ^= (u64)data2[2] << 16; case 2: h ^= (u64)data2[1] << 8; case 1: h ^= (u64)data2[0]; h *= m; } h ^= h >> r; h *= m; h ^= h >> r; return h; } /* blockpos_b: position of block in block coordinates camera_pos: position of camera in nodes camera_dir: an unit vector pointing to camera direction range: viewing range distance_ptr: return location for distance from the camera */ bool isBlockInSight(v3s16 blockpos_b, v3f camera_pos, v3f camera_dir, f32 camera_fov, f32 range, f32 *distance_ptr) { // Maximum radius of a block. The magic number is // sqrt(3.0) / 2.0 in literal form. static constexpr const f32 block_max_radius = 0.866025403784f * MAP_BLOCKSIZE * BS; v3s16 blockpos_nodes = blockpos_b * MAP_BLOCKSIZE; // Block center position v3f blockpos( ((float)blockpos_nodes.X + MAP_BLOCKSIZE/2) * BS, ((float)blockpos_nodes.Y + MAP_BLOCKSIZE/2) * BS, ((float)blockpos_nodes.Z + MAP_BLOCKSIZE/2) * BS ); // Block position relative to camera v3f blockpos_relative = blockpos - camera_pos; // Total distance f32 d = MYMAX(0, blockpos_relative.getLength() - block_max_radius); if (distance_ptr) *distance_ptr = d; // If block is far away, it's not in sight if (d > range) return false; // If block is (nearly) touching the camera, don't // bother validating further (that is, render it anyway) if (d == 0) return true; // Adjust camera position, for purposes of computing the angle, // such that a block that has any portion visible with the // current camera position will have the center visible at the // adjusted postion f32 adjdist = block_max_radius / cos((M_PI - camera_fov) / 2); // Block position relative to adjusted camera v3f blockpos_adj = blockpos - (camera_pos - camera_dir * adjdist); // Distance in camera direction (+=front, -=back) f32 dforward = blockpos_adj.dotProduct(camera_dir); // Cosine of the angle between the camera direction // and the block direction (camera_dir is an unit vector) f32 cosangle = dforward / blockpos_adj.getLength(); // If block is not in the field of view, skip it // HOTFIX: use sligthly increased angle (+10%) to fix too agressive // culling. Somebody have to find out whats wrong with the math here. // Previous value: camera_fov / 2 if (cosangle < std::cos(camera_fov * 0.55f)) return false; return true; } s16 adjustDist(s16 dist, float zoom_fov) { // 1.775 ~= 72 * PI / 180 * 1.4, the default FOV on the client. // The heuristic threshold for zooming is half of that. static constexpr const float threshold_fov = 1.775f / 2.0f; if (zoom_fov < 0.001f || zoom_fov > threshold_fov) return dist; return std::round(dist * std::cbrt((1.0f - std::cos(threshold_fov)) / (1.0f - std::cos(zoom_fov / 2.0f)))); } void setPitchYawRollRad(core::matrix4 &m, const v3f &rot) { f64 a1 = rot.Z, a2 = rot.X, a3 = rot.Y; f64 c1 = cos(a1), s1 = sin(a1); f64 c2 = cos(a2), s2 = sin(a2); f64 c3 = cos(a3), s3 = sin(a3); f32 *M = m.pointer(); M[0] = s1 * s2 * s3 + c1 * c3; M[1] = s1 * c2; M[2] = s1 * s2 * c3 - c1 * s3; M[4] = c1 * s2 * s3 - s1 * c3; M[5] = c1 * c2; M[6] = c1 * s2 * c3 + s1 * s3; M[8] = c2 * s3; M[9] = -s2; M[10] = c2 * c3; } v3f getPitchYawRollRad(const core::matrix4 &m) { const f32 *M = m.pointer(); f64 a1 = atan2(M[1], M[5]); f32 c2 = std::sqrt((f64)M[10]*M[10] + (f64)M[8]*M[8]); f32 a2 = atan2f(-M[9], c2); f64 c1 = cos(a1); f64 s1 = sin(a1); f32 a3 = atan2f(s1*M[6] - c1*M[2], c1*M[0] - s1*M[4]); return v3f(a2, a3, a1); }