EstateSettings.cs 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014
  1. /*
  2. * Copyright (c) Contributors, http://opensimulator.org/
  3. * See CONTRIBUTORS.TXT for a full list of copyright holders.
  4. *
  5. * Redistribution and use in source and binary forms, with or without
  6. * modification, are permitted provided that the following conditions are met:
  7. * * Redistributions of source code must retain the above copyright
  8. * notice, this list of conditions and the following disclaimer.
  9. * * Redistributions in binary form must reproduce the above copyright
  10. * notice, this list of conditions and the following disclaimer in the
  11. * documentation and/or other materials provided with the distribution.
  12. * * Neither the name of the OpenSim Project nor the
  13. * names of its contributors may be used to endorse or promote products
  14. * derived from this software without specific prior written permission.
  15. *
  16. * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
  17. * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  18. * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  19. * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
  20. * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  21. * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  22. * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  23. * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  24. * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  25. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  26. */
  27. using System;
  28. using System.IO;
  29. using System.Reflection;
  30. using libsecondlife;
  31. using log4net;
  32. namespace OpenSim.Framework
  33. {
  34. public class EstateSettings
  35. {
  36. private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
  37. private ConfigurationMember configMember;
  38. //Settings to this island
  39. private float m_billableFactor;
  40. private uint m_estateID;
  41. private LLUUID m_estateManager0;
  42. private LLUUID m_estateManager1;
  43. private LLUUID m_estateManager2;
  44. private LLUUID m_estateManager3;
  45. private LLUUID m_estateManager4;
  46. private LLUUID m_estateManager5;
  47. private LLUUID m_estateManager6;
  48. private LLUUID m_estateManager7;
  49. private LLUUID m_estateManager8;
  50. private LLUUID m_estateManager9;
  51. private string m_estateName;
  52. private byte m_maxAgents;
  53. private float m_objectBonusFactor;
  54. private uint m_parentEstateID;
  55. private int m_pricePerMeter;
  56. private int m_redirectGridX;
  57. private int m_redirectGridY;
  58. private bool m_regionAllowTerraform;
  59. private Simulator.RegionFlags m_regionFlags;
  60. private ushort m_regionWaterHeight;
  61. private Simulator.SimAccess m_simAccess;
  62. private float m_sunHour;
  63. private LLVector3 m_sunPosition;
  64. private LLUUID m_terrainBase0;
  65. private LLUUID m_terrainBase1;
  66. private LLUUID m_terrainBase2;
  67. private LLUUID m_terrainBase3;
  68. private LLUUID m_terrainDetail0;
  69. private LLUUID m_terrainDetail1;
  70. private LLUUID m_terrainDetail2;
  71. private LLUUID m_terrainDetail3;
  72. private string m_terrainFile;
  73. private float m_terrainHeightRange0;
  74. private float m_terrainHeightRange1;
  75. private float m_terrainHeightRange2;
  76. private float m_terrainHeightRange3;
  77. private LLUUID m_terrainImageID;
  78. private float m_terrainLowerLimit;
  79. private double m_terrainMultiplier;
  80. private float m_terrainRaiseLimit;
  81. private float m_terrainStartHeight0;
  82. private float m_terrainStartHeight1;
  83. private float m_terrainStartHeight2;
  84. private float m_terrainStartHeight3;
  85. private bool m_useFixedSun;
  86. private float m_waterHeight;
  87. public EstateSettings()
  88. {
  89. // Temporary hack to prevent multiple loadings.
  90. if (configMember == null)
  91. {
  92. configMember =
  93. new ConfigurationMember(Path.Combine(Util.configDir(), "estate_settings.xml"), "ESTATE SETTINGS",
  94. loadConfigurationOptions, handleIncomingConfiguration, true);
  95. configMember.performConfigurationRetrieve();
  96. }
  97. }
  98. public float billableFactor
  99. {
  100. get { return m_billableFactor; }
  101. set
  102. {
  103. m_billableFactor = value;
  104. configMember.forceSetConfigurationOption("billable_factor", m_billableFactor.ToString());
  105. }
  106. }
  107. public uint estateID
  108. {
  109. get { return m_estateID; }
  110. set
  111. {
  112. m_estateID = value;
  113. configMember.forceSetConfigurationOption("estate_id", m_estateID.ToString());
  114. }
  115. }
  116. public uint parentEstateID
  117. {
  118. get { return m_parentEstateID; }
  119. set
  120. {
  121. m_parentEstateID = value;
  122. configMember.forceSetConfigurationOption("parent_estate_id", m_parentEstateID.ToString());
  123. }
  124. }
  125. public byte maxAgents
  126. {
  127. get { return m_maxAgents; }
  128. set
  129. {
  130. m_maxAgents = value;
  131. configMember.forceSetConfigurationOption("max_agents", m_maxAgents.ToString());
  132. }
  133. }
  134. public float objectBonusFactor
  135. {
  136. get { return m_objectBonusFactor; }
  137. set
  138. {
  139. m_objectBonusFactor = value;
  140. configMember.forceSetConfigurationOption("object_bonus_factor", m_objectBonusFactor.ToString());
  141. }
  142. }
  143. public int redirectGridX
  144. {
  145. get { return m_redirectGridX; }
  146. set
  147. {
  148. m_redirectGridX = value;
  149. configMember.forceSetConfigurationOption("redirect_grid_x", m_redirectGridX.ToString());
  150. }
  151. }
  152. public int redirectGridY
  153. {
  154. get { return m_redirectGridY; }
  155. set
  156. {
  157. m_redirectGridY = value;
  158. configMember.forceSetConfigurationOption("redirect_grid_y", m_redirectGridY.ToString());
  159. }
  160. }
  161. public Simulator.RegionFlags regionFlags
  162. {
  163. get { return m_regionFlags; }
  164. set
  165. {
  166. //m_regionFlags = (Simulator.RegionFlags)0x400000;
  167. m_regionFlags = value;
  168. configMember.forceSetConfigurationOption("region_flags", ((uint) m_regionFlags).ToString());
  169. }
  170. }
  171. public Simulator.SimAccess simAccess
  172. {
  173. get { return m_simAccess; }
  174. set
  175. {
  176. m_simAccess = value;
  177. configMember.forceSetConfigurationOption("sim_access", ((byte) m_simAccess).ToString());
  178. }
  179. }
  180. public float sunHour
  181. {
  182. get { return m_sunHour; }
  183. set
  184. {
  185. m_sunHour = value;
  186. configMember.forceSetConfigurationOption("sun_hour", m_sunHour.ToString());
  187. }
  188. }
  189. public LLVector3 sunPosition
  190. {
  191. get { return m_sunPosition; }
  192. set
  193. {
  194. //Just set - does not need to be written to settings file
  195. m_sunPosition = value;
  196. }
  197. }
  198. public float terrainRaiseLimit
  199. {
  200. get { return m_terrainRaiseLimit; }
  201. set
  202. {
  203. m_terrainRaiseLimit = value;
  204. configMember.forceSetConfigurationOption("terrain_raise_limit", m_terrainRaiseLimit.ToString());
  205. }
  206. }
  207. public float terrainLowerLimit
  208. {
  209. get { return m_terrainLowerLimit; }
  210. set
  211. {
  212. m_terrainLowerLimit = value;
  213. configMember.forceSetConfigurationOption("terrain_lower_limit", m_terrainLowerLimit.ToString());
  214. }
  215. }
  216. public bool useFixedSun
  217. {
  218. get { return m_useFixedSun; }
  219. set
  220. {
  221. m_useFixedSun = value;
  222. configMember.forceSetConfigurationOption("use_fixed_sun", m_useFixedSun.ToString());
  223. }
  224. }
  225. public int pricePerMeter
  226. {
  227. get { return m_pricePerMeter; }
  228. set
  229. {
  230. m_pricePerMeter = value;
  231. configMember.forceSetConfigurationOption("price_per_meter", m_pricePerMeter.ToString());
  232. }
  233. }
  234. public ushort regionWaterHeight
  235. {
  236. get { return m_regionWaterHeight; }
  237. set
  238. {
  239. m_regionWaterHeight = value;
  240. configMember.forceSetConfigurationOption("region_water_height", m_regionWaterHeight.ToString());
  241. }
  242. }
  243. public bool regionAllowTerraform
  244. {
  245. get { return m_regionAllowTerraform; }
  246. set
  247. {
  248. m_regionAllowTerraform = value;
  249. configMember.forceSetConfigurationOption("region_allow_terraform", m_regionAllowTerraform.ToString());
  250. }
  251. }
  252. // Region Information
  253. // Low resolution 'base' textures. No longer used.
  254. public LLUUID terrainBase0
  255. {
  256. get { return m_terrainBase0; }
  257. set
  258. {
  259. m_terrainBase0 = value;
  260. configMember.forceSetConfigurationOption("terrain_base_0", m_terrainBase0.ToString());
  261. }
  262. }
  263. public LLUUID terrainBase1
  264. {
  265. get { return m_terrainBase1; }
  266. set
  267. {
  268. m_terrainBase1 = value;
  269. configMember.forceSetConfigurationOption("terrain_base_1", m_terrainBase1.ToString());
  270. }
  271. }
  272. public LLUUID terrainBase2
  273. {
  274. get { return m_terrainBase2; }
  275. set
  276. {
  277. m_terrainBase2 = value;
  278. configMember.forceSetConfigurationOption("terrain_base_2", m_terrainBase2.ToString());
  279. }
  280. }
  281. public LLUUID terrainBase3
  282. {
  283. get { return m_terrainBase3; }
  284. set
  285. {
  286. m_terrainBase3 = value;
  287. configMember.forceSetConfigurationOption("terrain_base_3", m_terrainBase3.ToString());
  288. }
  289. }
  290. // Higher resolution terrain textures
  291. public LLUUID terrainDetail0
  292. {
  293. get { return m_terrainDetail0; }
  294. set
  295. {
  296. m_terrainDetail0 = value;
  297. configMember.forceSetConfigurationOption("terrain_detail_0", m_terrainDetail0.ToString());
  298. }
  299. }
  300. public LLUUID terrainDetail1
  301. {
  302. get { return m_terrainDetail1; }
  303. set
  304. {
  305. m_terrainDetail1 = value;
  306. configMember.forceSetConfigurationOption("terrain_detail_1", m_terrainDetail1.ToString());
  307. }
  308. }
  309. public LLUUID terrainDetail2
  310. {
  311. get { return m_terrainDetail2; }
  312. set
  313. {
  314. m_terrainDetail2 = value;
  315. configMember.forceSetConfigurationOption("terrain_detail_2", m_terrainDetail2.ToString());
  316. }
  317. }
  318. public LLUUID terrainDetail3
  319. {
  320. get { return m_terrainDetail3; }
  321. set
  322. {
  323. m_terrainDetail3 = value;
  324. configMember.forceSetConfigurationOption("terrain_detail_3", m_terrainDetail3.ToString());
  325. }
  326. }
  327. // First quad - each point is bilinearly interpolated at each meter of terrain
  328. public float terrainStartHeight0
  329. {
  330. get { return m_terrainStartHeight0; }
  331. set
  332. {
  333. m_terrainStartHeight0 = value;
  334. configMember.forceSetConfigurationOption("terrain_start_height_0", m_terrainStartHeight0.ToString());
  335. }
  336. }
  337. public float terrainStartHeight1
  338. {
  339. get { return m_terrainStartHeight1; }
  340. set
  341. {
  342. m_terrainStartHeight1 = value;
  343. configMember.forceSetConfigurationOption("terrain_start_height_1", m_terrainStartHeight1.ToString());
  344. }
  345. }
  346. public float terrainStartHeight2
  347. {
  348. get { return m_terrainStartHeight2; }
  349. set
  350. {
  351. m_terrainStartHeight2 = value;
  352. configMember.forceSetConfigurationOption("terrain_start_height_2", m_terrainStartHeight2.ToString());
  353. }
  354. }
  355. public float terrainStartHeight3
  356. {
  357. get { return m_terrainStartHeight3; }
  358. set
  359. {
  360. m_terrainStartHeight3 = value;
  361. configMember.forceSetConfigurationOption("terrain_start_height_3", m_terrainStartHeight3.ToString());
  362. }
  363. }
  364. // Second quad - also bilinearly interpolated.
  365. // Terrain texturing is done that:
  366. // 0..3 (0 = base0, 3 = base3) = (terrain[x,y] - start[x,y]) / range[x,y]
  367. public float terrainHeightRange0
  368. {
  369. get { return m_terrainHeightRange0; }
  370. set
  371. {
  372. m_terrainHeightRange0 = value;
  373. configMember.forceSetConfigurationOption("terrain_height_range_0", m_terrainHeightRange0.ToString());
  374. }
  375. }
  376. public float terrainHeightRange1
  377. {
  378. get { return m_terrainHeightRange1; }
  379. set
  380. {
  381. m_terrainHeightRange1 = value;
  382. configMember.forceSetConfigurationOption("terrain_height_range_1", m_terrainHeightRange1.ToString());
  383. }
  384. }
  385. public float terrainHeightRange2
  386. {
  387. get { return m_terrainHeightRange2; }
  388. set
  389. {
  390. m_terrainHeightRange2 = value;
  391. configMember.forceSetConfigurationOption("terrain_height_range_2", m_terrainHeightRange2.ToString());
  392. }
  393. }
  394. public float terrainHeightRange3
  395. {
  396. get { return m_terrainHeightRange3; }
  397. set
  398. {
  399. m_terrainHeightRange3 = value;
  400. configMember.forceSetConfigurationOption("terrain_height_range_3", m_terrainHeightRange3.ToString());
  401. }
  402. }
  403. // Terrain Default (Must be in F32 Format!)
  404. public string terrainFile
  405. {
  406. get { return m_terrainFile; }
  407. set
  408. {
  409. m_terrainFile = value;
  410. configMember.forceSetConfigurationOption("terrain_file", m_terrainFile.ToString());
  411. }
  412. }
  413. public double terrainMultiplier
  414. {
  415. get { return m_terrainMultiplier; }
  416. set
  417. {
  418. m_terrainMultiplier = value;
  419. configMember.forceSetConfigurationOption("terrain_multiplier", m_terrainMultiplier.ToString());
  420. }
  421. }
  422. public float waterHeight
  423. {
  424. get { return m_waterHeight; }
  425. set
  426. {
  427. m_waterHeight = value;
  428. configMember.forceSetConfigurationOption("water_height", m_waterHeight.ToString());
  429. }
  430. }
  431. public LLUUID terrainImageID
  432. {
  433. get { return m_terrainImageID; }
  434. set
  435. {
  436. m_terrainImageID = value;
  437. // I don't think there is a reason that this actually
  438. // needs to be written back to the estate settings
  439. // file.
  440. // configMember.forceSetConfigurationOption("terrain_image_id", m_terrainImageID.ToString());
  441. }
  442. }
  443. // Estate name
  444. public string estateName
  445. {
  446. get { return m_estateName; }
  447. set
  448. {
  449. m_estateName = value;
  450. configMember.forceSetConfigurationOption("estate_name", m_estateName.ToString());
  451. }
  452. }
  453. public LLUUID[] estateManagers
  454. {
  455. get
  456. {
  457. // returns a condensed array of LLUUIDs
  458. return GetEstateManagers();
  459. }
  460. set
  461. {
  462. // Sets a Condensed array of LLUUIDS
  463. int i = 0;
  464. for (i = 0; i < value.Length; i++)
  465. {
  466. switch (i)
  467. {
  468. case 0:
  469. m_estateManager0 = value[i];
  470. break;
  471. case 1:
  472. m_estateManager1 = value[i];
  473. break;
  474. case 2:
  475. m_estateManager2 = value[i];
  476. break;
  477. case 3:
  478. m_estateManager3 = value[i];
  479. break;
  480. case 4:
  481. m_estateManager4 = value[i];
  482. break;
  483. case 5:
  484. m_estateManager5 = value[i];
  485. break;
  486. case 6:
  487. m_estateManager6 = value[i];
  488. break;
  489. case 7:
  490. m_estateManager7 = value[i];
  491. break;
  492. case 8:
  493. m_estateManager8 = value[i];
  494. break;
  495. case 9:
  496. m_estateManager9 = value[i];
  497. break;
  498. }
  499. }
  500. // Clear the rest of them.. as they're no longer valid
  501. for (int j = i; j < 10; j++)
  502. {
  503. switch (j)
  504. {
  505. case 0:
  506. m_estateManager0 = LLUUID.Zero;
  507. break;
  508. case 1:
  509. m_estateManager1 = LLUUID.Zero;
  510. break;
  511. case 2:
  512. m_estateManager2 = LLUUID.Zero;
  513. break;
  514. case 3:
  515. m_estateManager3 = LLUUID.Zero;
  516. break;
  517. case 4:
  518. m_estateManager4 = LLUUID.Zero;
  519. break;
  520. case 5:
  521. m_estateManager5 = LLUUID.Zero;
  522. break;
  523. case 6:
  524. m_estateManager6 = LLUUID.Zero;
  525. break;
  526. case 7:
  527. m_estateManager7 = LLUUID.Zero;
  528. break;
  529. case 8:
  530. m_estateManager8 = LLUUID.Zero;
  531. break;
  532. case 9:
  533. m_estateManager9 = LLUUID.Zero;
  534. break;
  535. }
  536. }
  537. for (i = 0; i < 10; i++)
  538. {
  539. // Writes out the Estate managers to the XML file.
  540. configMember.forceSetConfigurationOption("estate_manager_" + i, (GetEstateManagerAtPos(i)).ToString());
  541. }
  542. }
  543. }
  544. #region EstateManager Get Methods to sort out skipped spots in the XML (suser error)
  545. private LLUUID GetEstateManagerAtPos(int pos)
  546. {
  547. // This is a helper for writing them out to the xml file
  548. switch (pos)
  549. {
  550. case 0:
  551. return m_estateManager0;
  552. case 1:
  553. return m_estateManager1;
  554. case 2:
  555. return m_estateManager2;
  556. case 3:
  557. return m_estateManager3;
  558. case 4:
  559. return m_estateManager4;
  560. case 5:
  561. return m_estateManager5;
  562. case 6:
  563. return m_estateManager6;
  564. case 7:
  565. return m_estateManager7;
  566. case 8:
  567. return m_estateManager8;
  568. case 9:
  569. return m_estateManager9;
  570. default:
  571. return LLUUID.Zero;
  572. }
  573. }
  574. private LLUUID[] GetEstateManagers()
  575. {
  576. int numEstateManagers = GetNumberOfEstateManagers();
  577. LLUUID[] rEstateManagers = new LLUUID[numEstateManagers];
  578. int pos = 0;
  579. for (int i = 0; i < numEstateManagers; i++)
  580. {
  581. pos = GetNextEstateManager(pos);
  582. rEstateManagers[i] = GetEstateManagerAtPos(pos);
  583. pos++;
  584. }
  585. return rEstateManagers;
  586. }
  587. private int GetNextEstateManager(int startpos)
  588. {
  589. // This is a utility function that skips over estate managers set to LLUUID.Zero
  590. int i = startpos;
  591. for (i = startpos; i < 10; i++)
  592. {
  593. if (GetEstateManagerAtPos(i) != LLUUID.Zero) return i;
  594. }
  595. return i;
  596. }
  597. private int GetNumberOfEstateManagers()
  598. {
  599. // This function returns the number of estate managers set
  600. // Regardless of whether there is a skipped spot
  601. int numEstateManagers = 0;
  602. if (m_estateManager0 != LLUUID.Zero) numEstateManagers++;
  603. if (m_estateManager1 != LLUUID.Zero) numEstateManagers++;
  604. if (m_estateManager2 != LLUUID.Zero) numEstateManagers++;
  605. if (m_estateManager3 != LLUUID.Zero) numEstateManagers++;
  606. if (m_estateManager4 != LLUUID.Zero) numEstateManagers++;
  607. if (m_estateManager5 != LLUUID.Zero) numEstateManagers++;
  608. if (m_estateManager6 != LLUUID.Zero) numEstateManagers++;
  609. if (m_estateManager7 != LLUUID.Zero) numEstateManagers++;
  610. if (m_estateManager8 != LLUUID.Zero) numEstateManagers++;
  611. if (m_estateManager9 != LLUUID.Zero) numEstateManagers++;
  612. return numEstateManagers;
  613. }
  614. public void AddEstateManager(LLUUID avatarID)
  615. {
  616. LLUUID[] testateManagers = GetEstateManagers();
  617. LLUUID[] nestateManagers = new LLUUID[testateManagers.Length + 1];
  618. int i = 0;
  619. for (i = 0; i < testateManagers.Length; i++)
  620. {
  621. nestateManagers[i] = testateManagers[i];
  622. }
  623. nestateManagers[i] = avatarID;
  624. //Saves it to the estate settings file
  625. estateManagers = nestateManagers;
  626. }
  627. public void RemoveEstateManager(LLUUID avatarID)
  628. {
  629. int notfoundparam = 11; // starting high so the condense routine (max ten) doesn't run if we don't find it.
  630. LLUUID[] testateManagers = GetEstateManagers(); // temporary estate managers list
  631. int i = 0;
  632. int foundpos = notfoundparam;
  633. // search for estate manager.
  634. for (i = 0; i < testateManagers.Length; i++)
  635. {
  636. if (testateManagers[i] == avatarID)
  637. {
  638. foundpos = i;
  639. break;
  640. }
  641. }
  642. if (foundpos < notfoundparam)
  643. {
  644. LLUUID[] restateManagers = new LLUUID[testateManagers.Length - 1];
  645. // fill new estate managers array up to the found spot
  646. for (int j = 0; j < foundpos; j++)
  647. restateManagers[j] = testateManagers[j];
  648. // skip over the estate manager we're removing and compress
  649. for (int j = foundpos + 1; j < testateManagers.Length; j++)
  650. restateManagers[j - 1] = testateManagers[j];
  651. estateManagers = restateManagers;
  652. }
  653. else
  654. {
  655. m_log.Error("[ESTATESETTINGS]: Unable to locate estate manager : " + avatarID.ToString() + " for removal");
  656. }
  657. }
  658. #endregion
  659. public void loadConfigurationOptions()
  660. {
  661. configMember.addConfigurationOption("billable_factor", ConfigurationOption.ConfigurationTypes.TYPE_FLOAT, String.Empty,
  662. "0.0", true);
  663. configMember.addConfigurationOption("estate_id", ConfigurationOption.ConfigurationTypes.TYPE_UINT32, String.Empty, "100",
  664. true);
  665. configMember.addConfigurationOption("parent_estate_id", ConfigurationOption.ConfigurationTypes.TYPE_UINT32,
  666. String.Empty, "1", true);
  667. configMember.addConfigurationOption("max_agents", ConfigurationOption.ConfigurationTypes.TYPE_BYTE, String.Empty, "40",
  668. true);
  669. configMember.addConfigurationOption("object_bonus_factor", ConfigurationOption.ConfigurationTypes.TYPE_FLOAT,
  670. String.Empty, "1.0", true);
  671. configMember.addConfigurationOption("redirect_grid_x", ConfigurationOption.ConfigurationTypes.TYPE_INT32, String.Empty,
  672. "0", true);
  673. configMember.addConfigurationOption("redirect_grid_y", ConfigurationOption.ConfigurationTypes.TYPE_INT32, String.Empty,
  674. "0", true);
  675. configMember.addConfigurationOption("region_flags", ConfigurationOption.ConfigurationTypes.TYPE_UINT32, String.Empty,
  676. "336723974", true); //Taken from a Linden sim for the moment.
  677. configMember.addConfigurationOption("sim_access", ConfigurationOption.ConfigurationTypes.TYPE_BYTE, String.Empty, "21",
  678. true);
  679. configMember.addConfigurationOption("sun_hour", ConfigurationOption.ConfigurationTypes.TYPE_FLOAT, String.Empty, "0",
  680. true);
  681. configMember.addConfigurationOption("terrain_raise_limit", ConfigurationOption.ConfigurationTypes.TYPE_FLOAT,
  682. String.Empty, "0", true);
  683. configMember.addConfigurationOption("terrain_lower_limit", ConfigurationOption.ConfigurationTypes.TYPE_FLOAT,
  684. String.Empty, "0", true);
  685. configMember.addConfigurationOption("use_fixed_sun", ConfigurationOption.ConfigurationTypes.TYPE_BOOLEAN, String.Empty,
  686. "false", true);
  687. configMember.addConfigurationOption("price_per_meter", ConfigurationOption.ConfigurationTypes.TYPE_UINT32,
  688. String.Empty, "1", true);
  689. configMember.addConfigurationOption("region_water_height",
  690. ConfigurationOption.ConfigurationTypes.TYPE_UINT16, String.Empty, "20", true);
  691. configMember.addConfigurationOption("region_allow_terraform",
  692. ConfigurationOption.ConfigurationTypes.TYPE_BOOLEAN, String.Empty, "true", true);
  693. configMember.addConfigurationOption("terrain_base_0", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, String.Empty,
  694. "b8d3965a-ad78-bf43-699b-bff8eca6c975", true);
  695. configMember.addConfigurationOption("terrain_base_1", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, String.Empty,
  696. "abb783e6-3e93-26c0-248a-247666855da3", true);
  697. configMember.addConfigurationOption("terrain_base_2", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, String.Empty,
  698. "179cdabd-398a-9b6b-1391-4dc333ba321f", true);
  699. configMember.addConfigurationOption("terrain_base_3", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, String.Empty,
  700. "beb169c7-11ea-fff2-efe5-0f24dc881df2", true);
  701. configMember.addConfigurationOption("terrain_detail_0", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID,
  702. String.Empty, "00000000-0000-0000-0000-000000000000", true);
  703. configMember.addConfigurationOption("terrain_detail_1", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID,
  704. String.Empty, "00000000-0000-0000-0000-000000000000", true);
  705. configMember.addConfigurationOption("terrain_detail_2", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID,
  706. String.Empty, "00000000-0000-0000-0000-000000000000", true);
  707. configMember.addConfigurationOption("terrain_detail_3", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID,
  708. String.Empty, "00000000-0000-0000-0000-000000000000", true);
  709. configMember.addConfigurationOption("terrain_start_height_0",
  710. ConfigurationOption.ConfigurationTypes.TYPE_FLOAT, String.Empty, "10.0", true);
  711. configMember.addConfigurationOption("terrain_start_height_1",
  712. ConfigurationOption.ConfigurationTypes.TYPE_FLOAT, String.Empty, "10.0", true);
  713. configMember.addConfigurationOption("terrain_start_height_2",
  714. ConfigurationOption.ConfigurationTypes.TYPE_FLOAT, String.Empty, "10.0", true);
  715. configMember.addConfigurationOption("terrain_start_height_3",
  716. ConfigurationOption.ConfigurationTypes.TYPE_FLOAT, String.Empty, "10.0", true);
  717. configMember.addConfigurationOption("terrain_height_range_0",
  718. ConfigurationOption.ConfigurationTypes.TYPE_FLOAT, String.Empty, "60.0", true);
  719. configMember.addConfigurationOption("terrain_height_range_1",
  720. ConfigurationOption.ConfigurationTypes.TYPE_FLOAT, String.Empty, "60.0", true);
  721. configMember.addConfigurationOption("terrain_height_range_2",
  722. ConfigurationOption.ConfigurationTypes.TYPE_FLOAT, String.Empty, "60.0", true);
  723. configMember.addConfigurationOption("terrain_height_range_3",
  724. ConfigurationOption.ConfigurationTypes.TYPE_FLOAT, String.Empty, "60.0", true);
  725. configMember.addConfigurationOption("terrain_file",
  726. ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, String.Empty,
  727. "default.r32", true);
  728. configMember.addConfigurationOption("terrain_multiplier", ConfigurationOption.ConfigurationTypes.TYPE_FLOAT,
  729. String.Empty, "60.0", true);
  730. configMember.addConfigurationOption("water_height", ConfigurationOption.ConfigurationTypes.TYPE_DOUBLE, String.Empty,
  731. "20.0", true);
  732. configMember.addConfigurationOption("terrain_image_id", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID,
  733. String.Empty, "00000000-0000-0000-0000-000000000000", true);
  734. configMember.addConfigurationOption("estate_name", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
  735. String.Empty, "TestEstate", true);
  736. configMember.addConfigurationOption("estate_manager_0", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID,
  737. String.Empty, "00000000-0000-0000-0000-000000000000", true);
  738. configMember.addConfigurationOption("estate_manager_1", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID,
  739. String.Empty, "00000000-0000-0000-0000-000000000000", true);
  740. configMember.addConfigurationOption("estate_manager_2", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID,
  741. String.Empty, "00000000-0000-0000-0000-000000000000", true);
  742. configMember.addConfigurationOption("estate_manager_3", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID,
  743. String.Empty, "00000000-0000-0000-0000-000000000000", true);
  744. configMember.addConfigurationOption("estate_manager_4", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID,
  745. String.Empty, "00000000-0000-0000-0000-000000000000", true);
  746. configMember.addConfigurationOption("estate_manager_5", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID,
  747. String.Empty, "00000000-0000-0000-0000-000000000000", true);
  748. configMember.addConfigurationOption("estate_manager_6", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID,
  749. String.Empty, "00000000-0000-0000-0000-000000000000", true);
  750. configMember.addConfigurationOption("estate_manager_7", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID,
  751. String.Empty, "00000000-0000-0000-0000-000000000000", true);
  752. configMember.addConfigurationOption("estate_manager_8", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID,
  753. String.Empty, "00000000-0000-0000-0000-000000000000", true);
  754. configMember.addConfigurationOption("estate_manager_9", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID,
  755. String.Empty, "00000000-0000-0000-0000-000000000000", true);
  756. }
  757. public bool handleIncomingConfiguration(string configuration_key, object configuration_result)
  758. {
  759. switch (configuration_key)
  760. {
  761. case "billable_factor":
  762. m_billableFactor = (float) configuration_result;
  763. break;
  764. case "estate_id":
  765. m_estateID = (uint) configuration_result;
  766. break;
  767. case "parent_estate_id":
  768. m_parentEstateID = (uint) configuration_result;
  769. break;
  770. case "max_agents":
  771. m_maxAgents = (byte) configuration_result;
  772. break;
  773. case "object_bonus_factor":
  774. m_objectBonusFactor = (float) configuration_result;
  775. break;
  776. case "redirect_grid_x":
  777. m_redirectGridX = (int) configuration_result;
  778. break;
  779. case "redirect_grid_y":
  780. m_redirectGridY = (int) configuration_result;
  781. break;
  782. case "region_flags":
  783. m_regionFlags = (Simulator.RegionFlags) ((uint) configuration_result);
  784. break;
  785. case "sim_access":
  786. m_simAccess = (Simulator.SimAccess) ((byte) configuration_result);
  787. break;
  788. case "sun_hour":
  789. m_sunHour = (float) configuration_result;
  790. break;
  791. case "terrain_raise_limit":
  792. m_terrainRaiseLimit = (float) configuration_result;
  793. break;
  794. case "terrain_lower_limit":
  795. m_terrainLowerLimit = (float) configuration_result;
  796. break;
  797. case "use_fixed_sun":
  798. m_useFixedSun = (bool) configuration_result;
  799. break;
  800. case "price_per_meter":
  801. m_pricePerMeter = Convert.ToInt32(configuration_result);
  802. break;
  803. case "region_water_height":
  804. m_regionWaterHeight = (ushort) configuration_result;
  805. break;
  806. case "region_allow_terraform":
  807. m_regionAllowTerraform = (bool) configuration_result;
  808. break;
  809. case "terrain_base_0":
  810. m_terrainBase0 = (LLUUID) configuration_result;
  811. break;
  812. case "terrain_base_1":
  813. m_terrainBase1 = (LLUUID) configuration_result;
  814. break;
  815. case "terrain_base_2":
  816. m_terrainBase2 = (LLUUID) configuration_result;
  817. break;
  818. case "terrain_base_3":
  819. m_terrainBase3 = (LLUUID) configuration_result;
  820. break;
  821. case "terrain_detail_0":
  822. m_terrainDetail0 = (LLUUID) configuration_result;
  823. break;
  824. case "terrain_detail_1":
  825. m_terrainDetail1 = (LLUUID) configuration_result;
  826. break;
  827. case "terrain_detail_2":
  828. m_terrainDetail2 = (LLUUID) configuration_result;
  829. break;
  830. case "terrain_detail_3":
  831. m_terrainDetail3 = (LLUUID) configuration_result;
  832. break;
  833. case "terrain_start_height_0":
  834. m_terrainStartHeight0 = (float) configuration_result;
  835. break;
  836. case "terrain_start_height_1":
  837. m_terrainStartHeight1 = (float) configuration_result;
  838. break;
  839. case "terrain_start_height_2":
  840. m_terrainStartHeight2 = (float) configuration_result;
  841. break;
  842. case "terrain_start_height_3":
  843. m_terrainStartHeight3 = (float) configuration_result;
  844. break;
  845. case "terrain_height_range_0":
  846. m_terrainHeightRange0 = (float) configuration_result;
  847. break;
  848. case "terrain_height_range_1":
  849. m_terrainHeightRange1 = (float) configuration_result;
  850. break;
  851. case "terrain_height_range_2":
  852. m_terrainHeightRange2 = (float) configuration_result;
  853. break;
  854. case "terrain_height_range_3":
  855. m_terrainHeightRange3 = (float) configuration_result;
  856. break;
  857. case "terrain_file":
  858. m_terrainFile = (string) configuration_result;
  859. break;
  860. case "estate_name":
  861. m_estateName = (string) configuration_result;
  862. break;
  863. case "terrain_multiplier":
  864. m_terrainMultiplier = Convert.ToDouble(configuration_result);
  865. break;
  866. case "water_height":
  867. double tmpVal = (double) configuration_result;
  868. m_waterHeight = (float) tmpVal;
  869. break;
  870. case "terrain_image_id":
  871. m_terrainImageID = (LLUUID) configuration_result;
  872. break;
  873. case "estate_manager_0":
  874. m_estateManager0 = (LLUUID) configuration_result;
  875. break;
  876. case "estate_manager_1":
  877. m_estateManager1 = (LLUUID) configuration_result;
  878. break;
  879. case "estate_manager_2":
  880. m_estateManager2 = (LLUUID) configuration_result;
  881. break;
  882. case "estate_manager_3":
  883. m_estateManager3 = (LLUUID) configuration_result;
  884. break;
  885. case "estate_manager_4":
  886. m_estateManager4 = (LLUUID) configuration_result;
  887. break;
  888. case "estate_manager_5":
  889. m_estateManager5 = (LLUUID) configuration_result;
  890. break;
  891. case "estate_manager_6":
  892. m_estateManager6 = (LLUUID) configuration_result;
  893. break;
  894. case "estate_manager_7":
  895. m_estateManager7 = (LLUUID) configuration_result;
  896. break;
  897. case "estate_manager_8":
  898. m_estateManager8 = (LLUUID) configuration_result;
  899. break;
  900. case "estate_manager_9":
  901. m_estateManager9 = (LLUUID) configuration_result;
  902. break;
  903. }
  904. return true;
  905. }
  906. }
  907. }