aboutsummaryrefslogtreecommitdiff
path: root/src/client/keys.h
blob: 76ae38ff0aacea92cb5d746e6ad9c104337a3b94 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/*
Minetest
Copyright (C) 2016 est31, <MTest31@outlook.com>

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/

#ifndef KEYS_HEADER
#define KEYS_HEADER

#include <list>

class KeyType
{
public:
	enum T
	{
		// Player movement
		FORWARD,
		BACKWARD,
		LEFT,
		RIGHT,
		JUMP,
		SPECIAL1,
		SNEAK,
		AUTORUN,

		ESC,

		// Other
		DROP,
		INVENTORY,
		CHAT,
		CMD,
		CMD_LOCAL,
		CONSOLE,
		MINIMAP,
		FREEMOVE,
		FASTMOVE,
		NOCLIP,
		CINEMATIC,
		SCREENSHOT,
		TOGGLE_HUD,
		TOGGLE_CHAT,
		TOGGLE_FORCE_FOG_OFF,
		TOGGLE_UPDATE_CAMERA,
		TOGGLE_DEBUG,
		TOGGLE_PROFILER,
		CAMERA_MODE,
		INCREASE_VIEWING_RANGE,
		DECREASE_VIEWING_RANGE,
		RANGESELECT,
		ZOOM,

		QUICKTUNE_NEXT,
		QUICKTUNE_PREV,
		QUICKTUNE_INC,
		QUICKTUNE_DEC,

		DEBUG_STACKS,

		// joystick specific keys
		MOUSE_L,
		MOUSE_R,
		SCROLL_UP,
		SCROLL_DOWN,

		// Fake keycode for array size and internal checks
		INTERNAL_ENUM_COUNT

	};
};

typedef KeyType::T GameKeyType;

#endif
hTriangleWave(animationTimer * 11.0 + tOffset)) * 0.4; disp_z = (smoothTriangleWave(animationTimer * 31.0 + tOffset) + smoothTriangleWave(animationTimer * 29.0 + tOffset) + smoothTriangleWave(animationTimer * 13.0 + tOffset)) * 0.5; #endif #if (MATERIAL_TYPE == TILE_MATERIAL_LIQUID_TRANSPARENT || MATERIAL_TYPE == TILE_MATERIAL_LIQUID_OPAQUE) && ENABLE_WAVING_WATER vec4 pos = gl_Vertex; pos.y -= 2.0; float posYbuf = (pos.z / WATER_WAVE_LENGTH + animationTimer * WATER_WAVE_SPEED * WATER_WAVE_LENGTH); pos.y -= sin(posYbuf) * WATER_WAVE_HEIGHT + sin(posYbuf / 7.0) * WATER_WAVE_HEIGHT; gl_Position = mWorldViewProj * pos; #elif MATERIAL_TYPE == TILE_MATERIAL_WAVING_LEAVES && ENABLE_WAVING_LEAVES vec4 pos = gl_Vertex; pos.x += disp_x; pos.y += disp_z * 0.1; pos.z += disp_z; gl_Position = mWorldViewProj * pos; #elif MATERIAL_TYPE == TILE_MATERIAL_WAVING_PLANTS && ENABLE_WAVING_PLANTS vec4 pos = gl_Vertex; if (gl_TexCoord[0].y < 0.05) { pos.x += disp_x; pos.z += disp_z; } gl_Position = mWorldViewProj * pos; #else gl_Position = mWorldViewProj * gl_Vertex; #endif vPosition = gl_Position.xyz; worldPosition = (mWorld * gl_Vertex).xyz; // Don't generate heightmaps when too far from the eye float dist = distance (vec3(0.0, 0.0, 0.0), vPosition); if (dist > 150.0) { area_enable_parallax = 0.0; } vec3 sunPosition = vec3 (0.0, eyePosition.y * BS + 900.0, 0.0); vec3 normal, tangent, binormal; normal = normalize(gl_NormalMatrix * gl_Normal); tangent = normalize(gl_NormalMatrix * gl_MultiTexCoord1.xyz); binormal = normalize(gl_NormalMatrix * gl_MultiTexCoord2.xyz); vec3 v; lightVec = sunPosition - worldPosition; v.x = dot(lightVec, tangent); v.y = dot(lightVec, binormal); v.z = dot(lightVec, normal); tsLightVec = normalize (v); eyeVec = -(gl_ModelViewMatrix * gl_Vertex).xyz; v.x = dot(eyeVec, tangent); v.y = dot(eyeVec, binormal); v.z = dot(eyeVec, normal); tsEyeVec = normalize (v); vec4 color; float day = gl_Color.r; float night = gl_Color.g; float light_source = gl_Color.b; float rg = mix(night, day, dayNightRatio); rg += light_source * 2.5; // Make light sources brighter float b = rg; // Moonlight is blue b += (day - night) / 13.0; rg -= (day - night) / 23.0; // Emphase blue a bit in darker places // See C++ implementation in mapblock_mesh.cpp finalColorBlend() b += max(0.0, (1.0 - abs(b - 0.13) / 0.17) * 0.025); // Artificial light is yellow-ish // See C++ implementation in mapblock_mesh.cpp finalColorBlend() rg += max(0.0, (1.0 - abs(rg - 0.85) / 0.15) * 0.065); color.r = rg; color.g = rg; color.b = b; color.a = gl_Color.a; gl_FrontColor = gl_BackColor = clamp(color, 0.0, 1.0); }