indra_constants.h
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:14k
源码类别:

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file indra_constants.h
  3.  * @brief some useful short term constants for Indra
  4.  *
  5.  * $LicenseInfo:firstyear=2001&license=viewergpl$
  6.  * 
  7.  * Copyright (c) 2001-2010, Linden Research, Inc.
  8.  * 
  9.  * Second Life Viewer Source Code
  10.  * The source code in this file ("Source Code") is provided by Linden Lab
  11.  * to you under the terms of the GNU General Public License, version 2.0
  12.  * ("GPL"), unless you have obtained a separate licensing agreement
  13.  * ("Other License"), formally executed by you and Linden Lab.  Terms of
  14.  * the GPL can be found in doc/GPL-license.txt in this distribution, or
  15.  * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
  16.  * 
  17.  * There are special exceptions to the terms and conditions of the GPL as
  18.  * it is applied to this Source Code. View the full text of the exception
  19.  * in the file doc/FLOSS-exception.txt in this software distribution, or
  20.  * online at
  21.  * http://secondlifegrid.net/programs/open_source/licensing/flossexception
  22.  * 
  23.  * By copying, modifying or distributing this software, you acknowledge
  24.  * that you have read and understood your obligations described above,
  25.  * and agree to abide by those obligations.
  26.  * 
  27.  * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
  28.  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
  29.  * COMPLETENESS OR PERFORMANCE.
  30.  * $/LicenseInfo$
  31.  */
  32. #ifndef LL_INDRA_CONSTANTS_H
  33. #define LL_INDRA_CONSTANTS_H
  34. #include "stdtypes.h"
  35. class LLUUID;
  36. // At 45 Hz collisions seem stable and objects seem
  37. // to settle down at a reasonable rate.
  38. // JC 3/18/2003
  39. // const F32 PHYSICS_TIMESTEP = 1.f / 45.f;
  40. // This must be a #define due to anal retentive restrictions on const expressions
  41. // CG 2008-06-05
  42. #define PHYSICS_TIMESTEP (1.f / 45.f)
  43. const F32 COLLISION_TOLERANCE = 0.1f;
  44. const F32 HALF_COLLISION_TOLERANCE = 0.05f;
  45. // Time constants
  46. const U32 HOURS_PER_LINDEN_DAY = 4;
  47. const U32 DAYS_PER_LINDEN_YEAR = 11;
  48. const U32 SEC_PER_LINDEN_DAY = HOURS_PER_LINDEN_DAY * 60 * 60;
  49. const U32 SEC_PER_LINDEN_YEAR = DAYS_PER_LINDEN_YEAR * SEC_PER_LINDEN_DAY;
  50. static const F32 REGION_WIDTH_METERS = 256.f;
  51. static const S32 REGION_WIDTH_UNITS = 256;
  52. static const U32 REGION_WIDTH_U32 = 256;
  53. const F32 REGION_HEIGHT_METERS = 4096.f;
  54. // Bits for simulator performance query flags
  55. enum LAND_STAT_FLAGS
  56. {
  57. STAT_FILTER_BY_PARCEL = 0x00000001,
  58. STAT_FILTER_BY_OWNER = 0x00000002,
  59. STAT_FILTER_BY_OBJECT = 0x00000004,
  60. STAT_REQUEST_LAST_ENTRY = 0x80000000,
  61. };
  62. enum LAND_STAT_REPORT_TYPE
  63. {
  64. STAT_REPORT_TOP_SCRIPTS = 0,
  65. STAT_REPORT_TOP_COLLIDERS
  66. };
  67. const U32 STAT_FILTER_MASK = 0x1FFFFFFF;
  68. // Region absolute limits
  69. static const S32 REGION_AGENT_COUNT_MIN = 1;
  70. static const S32 REGION_AGENT_COUNT_MAX = 200; // Must fit in U8 for the moment (RegionInfo msg)
  71. static const S32 REGION_PRIM_COUNT_MIN = 0;
  72. static const S32 REGION_PRIM_COUNT_MAX = 40000;
  73. static const F32 REGION_PRIM_BONUS_MIN = 1.0;
  74. static const F32 REGION_PRIM_BONUS_MAX = 10.0;
  75. // Default maximum number of tasks/prims per region.
  76. const U32 DEFAULT_MAX_REGION_WIDE_PRIM_COUNT = 15000;
  77. const  F32  MIN_AGENT_DEPTH = 0.30f;
  78. const  F32  DEFAULT_AGENT_DEPTH  = 0.45f;
  79. const  F32  MAX_AGENT_DEPTH = 0.60f;
  80. const  F32  MIN_AGENT_WIDTH  = 0.40f;
  81. const  F32  DEFAULT_AGENT_WIDTH  = 0.60f;
  82. const  F32  MAX_AGENT_WIDTH  = 0.80f;
  83. const  F32  MIN_AGENT_HEIGHT = 1.1f;
  84. const  F32  DEFAULT_AGENT_HEIGHT = 1.9f;
  85. const  F32  MAX_AGENT_HEIGHT = 2.45f;
  86. // For linked sets
  87. const S32 MAX_CHILDREN_PER_TASK = 255;
  88. const S32 MAX_CHILDREN_PER_PHYSICAL_TASK = 32;
  89. const S32 MAX_JOINTS_PER_OBJECT = 1; // limiting to 1 until Havok 2.x
  90. const char* const DEFAULT_DMZ_SPACE_SERVER = "192.168.0.140";
  91. const char* const DEFAULT_DMZ_USER_SERVER = "192.168.0.140";
  92. const char* const DEFAULT_DMZ_DATA_SERVER = "192.168.0.140";
  93. const char* const DEFAULT_DMZ_ASSET_SERVER = "http://asset.dmz.lindenlab.com:80";
  94. const char* const DEFAULT_AGNI_SPACE_SERVER = "63.211.139.100";
  95. const char* const DEFAULT_AGNI_USER_SERVER = "63.211.139.100";
  96. const char* const DEFAULT_AGNI_DATA_SERVER = "63.211.139.100";
  97. const char* const DEFAULT_AGNI_ASSET_SERVER = "http://asset.agni.lindenlab.com:80";
  98. // Information about what ports are for what services is in the wiki Name Space Ports page
  99. // https://wiki.lindenlab.com/wiki/Name_Space_Ports
  100. const char* const DEFAULT_LOCAL_ASSET_SERVER = "http://localhost:12041/asset/tmp";
  101. const char* const LOCAL_ASSET_URL_FORMAT = "http://%s:12041/asset";
  102. const U32 DEFAULT_LAUNCHER_PORT = 12029;
  103. //const U32 DEFAULT_BIGBOARD_PORT = 12030; // Deprecated
  104. //const U32 DEFAULT_QUERYSIM_PORT = 12031; // Deprecated
  105. const U32 DEFAULT_DATA_SERVER_PORT = 12032;
  106. const U32 DEFAULT_SPACE_SERVER_PORT = 12033;
  107. const U32 DEFAULT_VIEWER_PORT = 12034;
  108. const U32 DEFAULT_SIMULATOR_PORT = 12035;
  109. const U32 DEFAULT_USER_SERVER_PORT = 12036;
  110. const U32 DEFAULT_RPC_SERVER_PORT = 12037;
  111. const U32 DEFAULT_LOG_DATA_SERVER_PORT = 12039;
  112. const U32 DEFAULT_BACKBONE_PORT = 12040;
  113. const   U32 DEFAULT_LOCAL_ASSET_PORT = 12041;
  114. //const   U32 DEFAULT_BACKBONE_CAP_PORT = 12042; // Deprecated
  115. const   U32 DEFAULT_CAP_PROXY_PORT = 12043;
  116. const   U32 DEFAULT_INV_DATA_SERVER_PORT = 12044;
  117. const U32 DEFAULT_CGI_SERVICES_PORT = 12045;
  118. // Mapserver uses ports 12124 - 12139 to allow multiple mapservers to run
  119. // on a single host for map tile generation. JC
  120. const U32 DEFAULT_MAPSERVER_PORT = 12124;
  121. // For automatic port discovery when running multiple viewers on one host
  122. const U32 PORT_DISCOVERY_RANGE_MIN = 13000;
  123. const U32 PORT_DISCOVERY_RANGE_MAX = PORT_DISCOVERY_RANGE_MIN + 50;
  124. const char LAND_LAYER_CODE = 'L';
  125. const char WATER_LAYER_CODE = 'W';
  126. const char WIND_LAYER_CODE = '7';
  127. const char CLOUD_LAYER_CODE = '8';
  128. // keys
  129. // Bit masks for various keyboard modifier keys.
  130. const MASK MASK_NONE = 0x0000;
  131. const MASK MASK_CONTROL = 0x0001; // Mapped to cmd on Macs
  132. const MASK MASK_ALT = 0x0002;
  133. const MASK MASK_SHIFT = 0x0004;
  134. const MASK MASK_NORMALKEYS =    0x0007;     // A real mask - only get the bits for normal modifier keys
  135. const MASK MASK_MAC_CONTROL = 0x0008; // Un-mapped Ctrl key on Macs, not used on Windows
  136. const MASK MASK_MODIFIERS = MASK_CONTROL|MASK_ALT|MASK_SHIFT|MASK_MAC_CONTROL;
  137. // Special keys go into >128
  138. const KEY KEY_SPECIAL = 0x80; // special keys start here
  139. const KEY KEY_RETURN = 0x81;
  140. const KEY KEY_LEFT = 0x82;
  141. const KEY KEY_RIGHT = 0x83;
  142. const KEY KEY_UP = 0x84;
  143. const KEY KEY_DOWN = 0x85;
  144. const KEY KEY_ESCAPE = 0x86;
  145. const KEY KEY_BACKSPACE =0x87;
  146. const KEY KEY_DELETE = 0x88;
  147. const KEY KEY_SHIFT = 0x89;
  148. const KEY KEY_CONTROL = 0x8A;
  149. const KEY KEY_ALT = 0x8B;
  150. const KEY KEY_HOME = 0x8C;
  151. const KEY KEY_END = 0x8D;
  152. const KEY KEY_PAGE_UP = 0x8E;
  153. const KEY KEY_PAGE_DOWN = 0x8F;
  154. const KEY KEY_HYPHEN = 0x90;
  155. const KEY KEY_EQUALS = 0x91;
  156. const KEY KEY_INSERT = 0x92;
  157. const KEY KEY_CAPSLOCK = 0x93;
  158. const KEY KEY_TAB = 0x94;
  159. const KEY KEY_ADD =  0x95;
  160. const KEY KEY_SUBTRACT =0x96;
  161. const KEY KEY_MULTIPLY =0x97;
  162. const KEY KEY_DIVIDE = 0x98;
  163. const KEY KEY_F1 = 0xA1;
  164. const KEY KEY_F2 = 0xA2;
  165. const KEY KEY_F3 = 0xA3;
  166. const KEY KEY_F4 = 0xA4;
  167. const KEY KEY_F5 = 0xA5;
  168. const KEY KEY_F6 = 0xA6;
  169. const KEY KEY_F7 = 0xA7;
  170. const KEY KEY_F8 = 0xA8;
  171. const KEY KEY_F9 = 0xA9;
  172. const KEY KEY_F10 = 0xAA;
  173. const KEY KEY_F11 = 0xAB;
  174. const KEY KEY_F12 = 0xAC;
  175. const KEY KEY_PAD_UP = 0xC0;
  176. const KEY KEY_PAD_DOWN = 0xC1;
  177. const KEY KEY_PAD_LEFT = 0xC2;
  178. const KEY KEY_PAD_RIGHT = 0xC3;
  179. const KEY KEY_PAD_HOME = 0xC4;
  180. const KEY KEY_PAD_END = 0xC5;
  181. const KEY KEY_PAD_PGUP = 0xC6;
  182. const KEY KEY_PAD_PGDN = 0xC7;
  183. const KEY KEY_PAD_CENTER = 0xC8; // the 5 in the middle
  184. const KEY KEY_PAD_INS = 0xC9;
  185. const KEY KEY_PAD_DEL = 0xCA;
  186. const KEY KEY_PAD_RETURN = 0xCB;
  187. const KEY KEY_PAD_ADD = 0xCC; // not used
  188. const KEY KEY_PAD_SUBTRACT = 0xCD; // not used
  189. const KEY KEY_PAD_MULTIPLY  = 0xCE; // not used
  190. const KEY KEY_PAD_DIVIDE = 0xCF; // not used
  191. const KEY KEY_BUTTON0 = 0xD0;
  192. const KEY KEY_BUTTON1 = 0xD1;
  193. const KEY KEY_BUTTON2 = 0xD2;
  194. const KEY KEY_BUTTON3 = 0xD3;
  195. const KEY KEY_BUTTON4 = 0xD4;
  196. const KEY KEY_BUTTON5 = 0xD5;
  197. const KEY KEY_BUTTON6 = 0xD6;
  198. const KEY KEY_BUTTON7 = 0xD7;
  199. const KEY KEY_BUTTON8 = 0xD8;
  200. const KEY KEY_BUTTON9 = 0xD9;
  201. const KEY KEY_BUTTON10 = 0xDA;
  202. const KEY KEY_BUTTON11 = 0xDB;
  203. const KEY KEY_BUTTON12 = 0xDC;
  204. const KEY KEY_BUTTON13 = 0xDD;
  205. const KEY KEY_BUTTON14 = 0xDE;
  206. const KEY KEY_BUTTON15 = 0xDF;
  207. const KEY KEY_NONE = 0xFF; // not sent from keyboard.  For internal use only.
  208. const S32 KEY_COUNT = 256;
  209. const F32 DEFAULT_WATER_HEIGHT  = 20.0f;
  210. // Maturity ratings for simulators
  211. const U8 SIM_ACCESS_MIN  = 0; // Treated as 'unknown', usually ends up being SIM_ACCESS_PG
  212. const U8 SIM_ACCESS_PG = 13;
  213. const U8 SIM_ACCESS_MATURE = 21;
  214. const U8 SIM_ACCESS_ADULT = 42; // Seriously Adult Only
  215. const U8 SIM_ACCESS_DOWN = 254;
  216. const U8 SIM_ACCESS_MAX  = SIM_ACCESS_ADULT;
  217. // group constants
  218. const S32 MAX_AGENT_GROUPS = 25;
  219. // attachment constants
  220. const S32 MAX_AGENT_ATTACHMENTS = 38;
  221. const U8  ATTACHMENT_ADD = 0x80;
  222. // god levels
  223. const U8 GOD_MAINTENANCE = 250;
  224. const U8 GOD_FULL = 200;
  225. const U8 GOD_LIAISON = 150;
  226. const U8 GOD_CUSTOMER_SERVICE = 100;
  227. const U8 GOD_LIKE = 1;
  228. const U8 GOD_NOT = 0;
  229. // "agent id" for things that should be done to ALL agents
  230. LL_COMMON_API extern const LLUUID LL_UUID_ALL_AGENTS;
  231. // inventory library owner
  232. LL_COMMON_API extern const LLUUID ALEXANDRIA_LINDEN_ID;
  233. LL_COMMON_API extern const LLUUID GOVERNOR_LINDEN_ID;
  234. LL_COMMON_API extern const LLUUID REALESTATE_LINDEN_ID;
  235. // Maintenance's group id.
  236. LL_COMMON_API extern const LLUUID MAINTENANCE_GROUP_ID;
  237. // Flags for kick message
  238. const U32 KICK_FLAGS_DEFAULT = 0x0;
  239. const U32 KICK_FLAGS_FREEZE = 1 << 0;
  240. const U32 KICK_FLAGS_UNFREEZE = 1 << 1;
  241. const U8 UPD_NONE       = 0x00;
  242. const U8 UPD_POSITION   = 0x01;
  243. const U8 UPD_ROTATION   = 0x02;
  244. const U8 UPD_SCALE      = 0x04;
  245. const U8 UPD_LINKED_SETS  = 0x08;
  246. const U8 UPD_UNIFORM  = 0x10; // used with UPD_SCALE
  247. // Agent Update Flags (U8)
  248. const U8 AU_FLAGS_NONE       = 0x00;
  249. const U8 AU_FLAGS_HIDETITLE       = 0x01;
  250. const U8 AU_FLAGS_CLIENT_AUTOPILOT = 0x02;
  251. // start location constants
  252. const U32 START_LOCATION_ID_LAST  = 0;
  253. const U32 START_LOCATION_ID_HOME  = 1;
  254. const U32 START_LOCATION_ID_DIRECT   = 2; // for direct teleport
  255. const U32 START_LOCATION_ID_PARCEL   = 3; // for teleports to a parcel
  256. const U32 START_LOCATION_ID_TELEHUB  = 4; // for teleports to a spawnpoint
  257. const U32 START_LOCATION_ID_URL = 5;
  258. const U32 START_LOCATION_ID_COUNT  = 6;
  259. // group constants
  260. const U32 GROUP_MIN_SIZE = 2;
  261. // radius within which a chat message is fully audible
  262. const F32 CHAT_WHISPER_RADIUS = 10.f;
  263. const F32 CHAT_NORMAL_RADIUS = 20.f;
  264. const F32 CHAT_SHOUT_RADIUS = 100.f;
  265. const F32 CHAT_MAX_RADIUS = CHAT_SHOUT_RADIUS;
  266. const F32 CHAT_MAX_RADIUS_BY_TWO = CHAT_MAX_RADIUS / 2.f;
  267. // this times above gives barely audible radius
  268. const F32 CHAT_BARELY_AUDIBLE_FACTOR = 2.0f;
  269. // distance in front of speaking agent the sphere is centered
  270. const F32 CHAT_WHISPER_OFFSET = 5.f;
  271. const F32 CHAT_NORMAL_OFFSET = 10.f;
  272. const F32 CHAT_SHOUT_OFFSET = 50.f;
  273. // first clean starts at 3 AM
  274. const S32 SANDBOX_FIRST_CLEAN_HOUR = 3;
  275. // clean every <n> hours
  276. const S32 SANDBOX_CLEAN_FREQ = 12;
  277. const F32 WIND_SCALE_HACK = 2.0f; // hack to make wind speeds more realistic
  278. enum ETerrainBrushType
  279. {
  280. // the valid brush numbers cannot be reordered, because they 
  281. // are used in the binary LSL format as arguments to llModifyLand()
  282. E_LANDBRUSH_LEVEL = 0,
  283. E_LANDBRUSH_RAISE = 1,
  284. E_LANDBRUSH_LOWER = 2,
  285. E_LANDBRUSH_SMOOTH  = 3,
  286. E_LANDBRUSH_NOISE = 4,
  287. E_LANDBRUSH_REVERT  = 5,
  288. E_LANDBRUSH_INVALID = 6
  289. };
  290. // media commands
  291. const U32 PARCEL_MEDIA_COMMAND_STOP  = 0;
  292. const U32 PARCEL_MEDIA_COMMAND_PAUSE = 1;
  293. const U32 PARCEL_MEDIA_COMMAND_PLAY  = 2;
  294. const U32 PARCEL_MEDIA_COMMAND_LOOP  = 3;
  295. const U32 PARCEL_MEDIA_COMMAND_TEXTURE = 4;
  296. const U32 PARCEL_MEDIA_COMMAND_URL = 5;
  297. const U32 PARCEL_MEDIA_COMMAND_TIME = 6;
  298. const U32 PARCEL_MEDIA_COMMAND_AGENT = 7;
  299. const U32 PARCEL_MEDIA_COMMAND_UNLOAD = 8;
  300. const U32 PARCEL_MEDIA_COMMAND_AUTO_ALIGN = 9;
  301. const U32 PARCEL_MEDIA_COMMAND_TYPE = 10;
  302. const U32 PARCEL_MEDIA_COMMAND_SIZE = 11;
  303. const U32 PARCEL_MEDIA_COMMAND_DESC = 12;
  304. const U32 PARCEL_MEDIA_COMMAND_LOOP_SET = 13;
  305. // map item types
  306. const U32 MAP_ITEM_TELEHUB = 0x01;
  307. const U32 MAP_ITEM_PG_EVENT = 0x02;
  308. const U32 MAP_ITEM_MATURE_EVENT = 0x03;
  309. //const U32 MAP_ITEM_POPULAR = 0x04; // No longer supported, 2009-03-02 KLW
  310. //const U32 MAP_ITEM_AGENT_COUNT = 0x05;
  311. const U32 MAP_ITEM_AGENT_LOCATIONS = 0x06;
  312. const U32 MAP_ITEM_LAND_FOR_SALE = 0x07;
  313. const U32 MAP_ITEM_CLASSIFIED = 0x08;
  314. const U32 MAP_ITEM_ADULT_EVENT = 0x09;
  315. const U32 MAP_ITEM_LAND_FOR_SALE_ADULT = 0x0a;
  316. // Region map layer numbers
  317. const S32 MAP_SIM_OBJECTS = 0;
  318. const S32 MAP_SIM_TERRAIN = 1;
  319. const S32 MAP_SIM_LAND_FOR_SALE = 2; // Transparent alpha overlay of land for sale
  320. const S32 MAP_SIM_IMAGE_TYPES = 3; // Number of map layers
  321. const S32 MAP_SIM_INFO_MASK   = 0x00FFFFFF; // Agent access may be stuffed into upper byte
  322. const S32 MAP_SIM_LAYER_MASK  = 0x0000FFFF; // Layer info is in lower 16 bits
  323. const S32 MAP_SIM_RETURN_NULL_SIMS  = 0x00010000;
  324. const S32 MAP_SIM_PRELUDE  = 0x00020000;
  325. // Crash reporter behavior
  326. const char* const CRASH_SETTINGS_FILE = "settings_crash_behavior.xml";
  327. const char* const CRASH_BEHAVIOR_SETTING = "CrashSubmitBehavior";
  328. const S32 CRASH_BEHAVIOR_ASK = 0;
  329. const S32 CRASH_BEHAVIOR_ALWAYS_SEND = 1;
  330. const S32 CRASH_BEHAVIOR_NEVER_SEND = 2;
  331. // Export/Import return values
  332. const S32 EXPORT_SUCCESS = 0;
  333. const S32 EXPORT_ERROR_PERMISSIONS = -1;
  334. const S32 EXPORT_ERROR_UNKNOWN = -2;
  335. // This is how long the sim will try to teleport you before giving up.
  336. const F32 TELEPORT_EXPIRY = 15.0f;
  337. // Additional time (in seconds) to wait per attachment
  338. const F32 TELEPORT_EXPIRY_PER_ATTACHMENT = 3.f;
  339. // The maximum size of an object extra parameters binary (packed) block
  340. #define MAX_OBJECT_PARAMS_SIZE 1024
  341. const S32 CHAT_CHANNEL_DEBUG = S32_MAX;
  342. // PLEASE don't add constants here.  Every dev will have to do
  343. // a complete rebuild.  Try to find another shared header file,
  344. // like llregionflags.h, lllslconstants.h, llagentconstants.h,
  345. // or create a new one.  JC
  346. #endif