<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Fairlight+Lake</id>
	<title>Second Life Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Fairlight+Lake"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/wiki/Special:Contributions/Fairlight_Lake"/>
	<updated>2026-07-28T04:56:27Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Touch_Coordinates&amp;diff=59912</id>
		<title>Touch Coordinates</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Touch_Coordinates&amp;diff=59912"/>
		<updated>2008-03-24T22:57:58Z</updated>

		<summary type="html">&lt;p&gt;Fairlight Lake: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Feature Request: Get Touch Coordinates ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please use the talk page to discuss this Feature Request.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This features is currently investigated further by Qarl Linden/Lindenlabs at [[LSL_Touch_Position]].&#039;&#039;&#039;&lt;br /&gt;
===Proposal A===&lt;br /&gt;
&lt;br /&gt;
Implement the following command:&lt;br /&gt;
&lt;br /&gt;
  list [float x, float y, integer side, integer link_number] = llDetectedSideCoordinates(integer num_detected);&lt;br /&gt;
&lt;br /&gt;
This function returns the side x and y coordinates from within a touch event.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Goal:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The goal is to get more detailed feedback about where exactly an object was touched. It will return the prim number within the linkset, the side on that prim and the coordinates (x,y) where on that side it was touched.&lt;br /&gt;
&lt;br /&gt;
This will greatly help HUDs and other Panels to implement a user interface without using additional prims as buttons. You could make 10 switches as texture, put them on one single prim and then use the llDetectedTextureCoordinates function to find out which button was pressed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How to implement:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Add support for the llDetectedSideCoordinates LSL-command for the server and client.&lt;br /&gt;
* Change handling of client touching things so it is possible for the server to find out where the object was touched.&lt;br /&gt;
* To support scaling of the object, the x and y coordinates will be a float ranging from 0.0 to 1.0 and will be a relative value independant of real prim dimensions. So, x=0.5 and y=0.5 will mean the exact center of that side.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requested by:&#039;&#039;&#039; [[User:Fairlight Lake]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* greatly improve User Experience with HUDs&lt;br /&gt;
* reduce the number of used prims on operator panels and other objects that heavily rely on touch events to do different tasks&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* eventually slightly more overhead on touch event notification from client to server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Open questions:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* I am not sure if issues would arise with slanted sides.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Proposal B===&lt;br /&gt;
Same as &#039;&#039;&#039;Proposal A&#039;&#039;&#039; but with changes to the implementation.&lt;br /&gt;
&lt;br /&gt;
Implement the following command:&lt;br /&gt;
&lt;br /&gt;
  vector &amp;lt;float x, float y, integer side&amp;gt; = llDetectedSideCoordinates(integer num_detected);&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How to implement:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Add support for the llDetectedSideCoordinates LSL-command for the server and client.&lt;br /&gt;
* Change handling of client touching things so it is possible for the server to find out where the object was touched.&lt;br /&gt;
* To support scaling of the object, the x and y coordinates will be relative to the textures scale. The UV offset will effect the values.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Texture&#039;&#039;&#039;&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|_____&amp;lt;br/&amp;gt;__A__&amp;lt;br/&amp;gt;_____&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|+Textured face with repeats of (4,4) and offset of (0,0)&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; {{Hl2}}&lt;br /&gt;
|&lt;br /&gt;
! 0&lt;br /&gt;
! 1&lt;br /&gt;
! 2&lt;br /&gt;
! 3&lt;br /&gt;
|-&lt;br /&gt;
! valign=&amp;quot;top&amp;quot; {{Hl2}}|0&lt;br /&gt;
|_____&amp;lt;br/&amp;gt;__A__&amp;lt;br/&amp;gt;_____&lt;br /&gt;
|_____&amp;lt;br/&amp;gt;__A__&amp;lt;br/&amp;gt;_____&lt;br /&gt;
|_____&amp;lt;br/&amp;gt;__A__&amp;lt;br/&amp;gt;_____&lt;br /&gt;
|_____&amp;lt;br/&amp;gt;__A__&amp;lt;br/&amp;gt;_____&lt;br /&gt;
|-&lt;br /&gt;
! valign=&amp;quot;top&amp;quot; {{Hl2}}|1&lt;br /&gt;
|_____&amp;lt;br/&amp;gt;__A__&amp;lt;br/&amp;gt;_____&lt;br /&gt;
|_____&amp;lt;br/&amp;gt;__A__&amp;lt;br/&amp;gt;_____&lt;br /&gt;
|_____&amp;lt;br/&amp;gt;__A__&amp;lt;br/&amp;gt;_____&lt;br /&gt;
|_____&amp;lt;br/&amp;gt;__A__&amp;lt;br/&amp;gt;_____&lt;br /&gt;
|-&lt;br /&gt;
! valign=&amp;quot;top&amp;quot; {{Hl2}}|2&lt;br /&gt;
|_____&amp;lt;br/&amp;gt;__A__&amp;lt;br/&amp;gt;_____&lt;br /&gt;
|_____&amp;lt;br/&amp;gt;__A__&amp;lt;br/&amp;gt;_____&lt;br /&gt;
|_____&amp;lt;br/&amp;gt;__A__&amp;lt;br/&amp;gt;_____&lt;br /&gt;
|_____&amp;lt;br/&amp;gt;__A__&amp;lt;br/&amp;gt;_____&lt;br /&gt;
|-&lt;br /&gt;
! valign=&amp;quot;top&amp;quot; {{Hl2}}|3&lt;br /&gt;
|_____&amp;lt;br/&amp;gt;__A__&amp;lt;br/&amp;gt;_____&lt;br /&gt;
|_____&amp;lt;br/&amp;gt;__A__&amp;lt;br/&amp;gt;_____&lt;br /&gt;
|_____&amp;lt;br/&amp;gt;__A__&amp;lt;br/&amp;gt;_____&lt;br /&gt;
|_____&amp;lt;br/&amp;gt;__A__&amp;lt;br/&amp;gt;_____&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If the letter A were pressed in col-row marked (2,2) then the x and y of the return of llDetectedSideCoordinates be 2.5, 2.5 respectively.&lt;br /&gt;
|&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|+Textured face with repeats of (4,4) and offset of (-1,-1)&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; {{Hl2}}&lt;br /&gt;
|&lt;br /&gt;
! -1&lt;br /&gt;
! 0&lt;br /&gt;
! 1&lt;br /&gt;
! 2&lt;br /&gt;
|-&lt;br /&gt;
! valign=&amp;quot;top&amp;quot; {{Hl2}}|-1&lt;br /&gt;
|_____&amp;lt;br/&amp;gt;__A__&amp;lt;br/&amp;gt;_____&lt;br /&gt;
|_____&amp;lt;br/&amp;gt;__A__&amp;lt;br/&amp;gt;_____&lt;br /&gt;
|_____&amp;lt;br/&amp;gt;__A__&amp;lt;br/&amp;gt;_____&lt;br /&gt;
|_____&amp;lt;br/&amp;gt;__A__&amp;lt;br/&amp;gt;_____&lt;br /&gt;
|-&lt;br /&gt;
! valign=&amp;quot;top&amp;quot; {{Hl2}}|0&lt;br /&gt;
|_____&amp;lt;br/&amp;gt;__A__&amp;lt;br/&amp;gt;_____&lt;br /&gt;
|_____&amp;lt;br/&amp;gt;__A__&amp;lt;br/&amp;gt;_____&lt;br /&gt;
|_____&amp;lt;br/&amp;gt;__A__&amp;lt;br/&amp;gt;_____&lt;br /&gt;
|_____&amp;lt;br/&amp;gt;__A__&amp;lt;br/&amp;gt;_____&lt;br /&gt;
|-&lt;br /&gt;
! valign=&amp;quot;top&amp;quot; {{Hl2}}|1&lt;br /&gt;
|_____&amp;lt;br/&amp;gt;__A__&amp;lt;br/&amp;gt;_____&lt;br /&gt;
|_____&amp;lt;br/&amp;gt;__A__&amp;lt;br/&amp;gt;_____&lt;br /&gt;
|_____&amp;lt;br/&amp;gt;__A__&amp;lt;br/&amp;gt;_____&lt;br /&gt;
|_____&amp;lt;br/&amp;gt;__A__&amp;lt;br/&amp;gt;_____&lt;br /&gt;
|-&lt;br /&gt;
! valign=&amp;quot;top&amp;quot; {{Hl2}}|2&lt;br /&gt;
|_____&amp;lt;br/&amp;gt;__A__&amp;lt;br/&amp;gt;_____&lt;br /&gt;
|_____&amp;lt;br/&amp;gt;__A__&amp;lt;br/&amp;gt;_____&lt;br /&gt;
|_____&amp;lt;br/&amp;gt;__A__&amp;lt;br/&amp;gt;_____&lt;br /&gt;
|_____&amp;lt;br/&amp;gt;__A__&amp;lt;br/&amp;gt;_____&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If the letter A were pressed in col-row marked (-1,-1) then the x and y of the return of llDetectedSideCoordinates be -0.5, -0.5 respectively.&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;Modification by:&#039;&#039;&#039; [[User:Strife Onizuka|Strife Onizuka]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
It allows for the user to know not only where on the texture it was touched but which tile was touched. Since touch locations are expressed in texture coordinates, scaling of the object has no effect on the script.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
The programmer has to be aware of this feature when writing their interface.&lt;br /&gt;
&lt;br /&gt;
[[Category:Feature Requests]]&lt;/div&gt;</summary>
		<author><name>Fairlight Lake</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:Touch_Coordinates&amp;diff=7024</id>
		<title>Talk:Touch Coordinates</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:Touch_Coordinates&amp;diff=7024"/>
		<updated>2007-01-26T18:10:40Z</updated>

		<summary type="html">&lt;p&gt;Fairlight Lake: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Might be better implemented as providing the texture U and V. This would keep code simple when a texture spans a few surfaces, and would make the use more clear with spheres, tori, etc.&lt;br /&gt;
--[[User:Moshe Sapwood|Moshe Sapwood]] 09:31, 26 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
No problem with that, just as long as it&#039;s persistent through size changes to relief the script of having to get texture size, offset, prim size and all that and calculate the button positions dynamically all the time.&lt;br /&gt;
--[[User:Fairlight Lake|Fairlight Lake]] 19:10, 26 January 2007 (CET)&lt;/div&gt;</summary>
		<author><name>Fairlight Lake</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:Touch_Coordinates&amp;diff=7023</id>
		<title>Talk:Touch Coordinates</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:Touch_Coordinates&amp;diff=7023"/>
		<updated>2007-01-26T18:09:48Z</updated>

		<summary type="html">&lt;p&gt;Fairlight Lake: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Might be better implemented as providing the texture U and V. This would keep code simple when a texture spans a few surfaces, and would make the use more clear with spheres, tori, etc.&lt;br /&gt;
--[[User:Moshe Sapwood|Moshe Sapwood]] 09:31, 26 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
No problem with that, just as long as it&#039;s persistent through size changes to relief the script of having to get texture size, offset, prim size and all that and calculate the button positions dynamically all the time.&lt;/div&gt;</summary>
		<author><name>Fairlight Lake</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Touch_Coordinates&amp;diff=7005</id>
		<title>Touch Coordinates</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Touch_Coordinates&amp;diff=7005"/>
		<updated>2007-01-26T15:24:48Z</updated>

		<summary type="html">&lt;p&gt;Fairlight Lake: changed &amp;#039;texturecoordiantes&amp;#039; to &amp;#039;sidecoordinates&amp;#039; to make it more clear.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Feature Request: Get Touch Coordinates ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposal:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Implement the following command:&lt;br /&gt;
&lt;br /&gt;
  list [float x, float y, integer side, integer link_number] = llDetectedSideCoordinates(integer num_detected);&lt;br /&gt;
&lt;br /&gt;
This function returns the side x and y coordinates from within a touch event.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Goal:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The goal is to get more detailed feedback about where exactly an object was touched. It will return the prim number within the linkset, the side on that prim and the coordinates (x,y) where on that side it was touched.&lt;br /&gt;
&lt;br /&gt;
This will greatly help HUDs and other Panels to implement a user interface without using additional prims as buttons. You could make 10 switches as texture, put them on one single prim and then use the llDetectedTextureCoordinates function to find out which button was pressed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How to implement:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Add support for the llDetectedSideCoordinates LSL-command for the server and client.&lt;br /&gt;
* Change handling of client touching things so it is possible for the server to find out where the object was touched.&lt;br /&gt;
* To support scaling of the object, the x and y coordinates will be a float ranging from 0.0 to 1.0 and will be a relative value independant of real prim dimensions. So, x=0.5 and y=0.5 will mean the exact center of that side.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requested by:&#039;&#039;&#039; [[User:Fairlight Lake]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* greatly improve User Experience with HUDs&lt;br /&gt;
* reduce the number of used prims on operator panels and other objects that heavily rely on touch events to do different tasks&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* eventually slightly more overhead on touch event notification from client to server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Open questions:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* I am not sure if issues would arise with slanted sides.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please use the talk page to discuss this Feature Request.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Category:Feature Requests]]&lt;/div&gt;</summary>
		<author><name>Fairlight Lake</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Touch_Coordinates&amp;diff=7004</id>
		<title>Touch Coordinates</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Touch_Coordinates&amp;diff=7004"/>
		<updated>2007-01-26T15:20:27Z</updated>

		<summary type="html">&lt;p&gt;Fairlight Lake: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Feature Request: Get Touch Coordinates ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposal:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Implement the following command:&lt;br /&gt;
&lt;br /&gt;
  list [float x, float y, integer side, integer link_number] = llDetectedTextureCoordinates(integer num_detected);&lt;br /&gt;
&lt;br /&gt;
This function returns the texture x and y coordinates from within a touch event.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Goal:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The goal is to get more detailed feedback about where exactly an object was touched. It will return the prim number within the linkset, the side on that prim and the coordinates (x,y) where on that side it was touched.&lt;br /&gt;
&lt;br /&gt;
This will greatly help HUDs and other Panels to implement a user interface without using additional prims as buttons. You could make 10 switches as texture, put them on one single prim and then use the llDetectedTextureCoordinates function to find out which button was pressed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How to implement:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Add support for the llDetectedTextureCoordinates LSL-command for the server and client.&lt;br /&gt;
* Change handling of client touching things so it is possible for the server to find out where the object was touched.&lt;br /&gt;
* To support scaling of the object, the x and y coordinates will be a float ranging from 0.0 to 1.0 and will be a relative value independant of real prim dimensions. So, x=0.5 and y=0.5 will mean the exact center of that side.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requested by:&#039;&#039;&#039; [[User:Fairlight Lake]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* greatly improve User Experience with HUDs&lt;br /&gt;
* reduce the number of used prims on operator panels and other objects that heavily rely on touch events to do different tasks&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* eventually slightly more overhead on touch event notification from client to server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Open questions:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* I am not sure if issues would arise with slanted sides.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please use the talk page to discuss this Feature Request.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Category:Feature Requests]]&lt;/div&gt;</summary>
		<author><name>Fairlight Lake</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Touch_Coordinates&amp;diff=7003</id>
		<title>Touch Coordinates</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Touch_Coordinates&amp;diff=7003"/>
		<updated>2007-01-26T15:17:53Z</updated>

		<summary type="html">&lt;p&gt;Fairlight Lake: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Feature Request: Get Touch Coordinates ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposal:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Implement the following command:&lt;br /&gt;
&lt;br /&gt;
  list [float x, float y, integer side, integer link_number] = llDetectedTextureCoordinates(integer num_detected);&lt;br /&gt;
&lt;br /&gt;
This function returns the texture x and y coordinates from within a touch event.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Goal:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The goal is to get more detailed feedback about where exactly an object was touched. It will return the prim number within the linkset, the side on that prim and the coordinates (x,y) where on that side it was touched.&lt;br /&gt;
&lt;br /&gt;
This will greatly help HUDs and other Panels to implement a user interface without using additional prims as buttons. You could make 10 switches as texture, put them on one single prim and then use the llDetectedTextureCoordinates function to find out which button was pressed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How to implement:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Add support for the llDetectedTextureCoordinates LSL-command for the server and client.&lt;br /&gt;
* Change handling of client touching things so it is possible for the server to find out where the object was touched.&lt;br /&gt;
* To support scaling of the object, the x and y coordinates will be a float ranging from 0.0 to 1.0 and will be a relative value independant of real prim dimensions. So, x=0.5 and y=0.5 will mean the exact center of that side.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requested by:&#039;&#039;&#039; [[User:Fairlight Lake]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* greatly improve User Experience with HUDs&lt;br /&gt;
* reduce the number of used prims on operator panels and other objects that heavily rely on touch events to do different tasks&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* eventually slightly more overhead on touch event notification from client to server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please use the talk page to discuss this Feature Request.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Category:Feature Requests]]&lt;/div&gt;</summary>
		<author><name>Fairlight Lake</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Touch_Coordinates&amp;diff=7002</id>
		<title>Touch Coordinates</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Touch_Coordinates&amp;diff=7002"/>
		<updated>2007-01-26T15:16:09Z</updated>

		<summary type="html">&lt;p&gt;Fairlight Lake: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Feature Request: Get Touch Coordinates ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposal:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Implement the following command:&lt;br /&gt;
&lt;br /&gt;
  list [integer x, integer y, integer side, integer link_number] = llDetectedTextureCoordinates(integer num_detected);&lt;br /&gt;
&lt;br /&gt;
This function returns the texture x and y coordinates from within a touch event.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Goal:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The goal is to get more detailed feedback about where exactly an object was touched. It will return the prim number within the linkset, the side on that prim and the coordinates (x,y) where on that side it was touched.&lt;br /&gt;
&lt;br /&gt;
This will greatly help HUDs and other Panels to implement a user interface without using additional prims as buttons. You could make 10 switches as texture, put them on one single prim and then use the llDetectedTextureCoordinates function to find out which button was pressed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How to implement:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Add support for the llDetectedTextureCoordinates LSL-command for the server and client.&lt;br /&gt;
* Change handling of client touching things so it is possible for the server to find out where the object was touched.&lt;br /&gt;
* To support scaling of the object, the x and y coordinates will be an integer ranging from 0.0 to 1.0 and will be a relative value independant of real prim dimensions. So, x=0.5 and y=0.5 will mean the exact center of that side.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requested by:&#039;&#039;&#039; [[User:Fairlight Lake]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* greatly improve User Experience with HUDs&lt;br /&gt;
* reduce the number of used prims on operator panels and other objects that heavily rely on touch events to do different tasks&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* eventually slightly more overhead on touch event notification from client to server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please use the talk page to discuss this Feature Request.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Category:Feature Requests]]&lt;/div&gt;</summary>
		<author><name>Fairlight Lake</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Touch_Coordinates&amp;diff=7001</id>
		<title>Touch Coordinates</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Touch_Coordinates&amp;diff=7001"/>
		<updated>2007-01-26T15:14:57Z</updated>

		<summary type="html">&lt;p&gt;Fairlight Lake: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Feature Request: Get Touch Coordinates ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposal:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Implement the following command:&lt;br /&gt;
&lt;br /&gt;
  list [integer x, integer y, integer side, integer link_number] = llDetectedTextureCoordinates(integer num_detected);&lt;br /&gt;
&lt;br /&gt;
This function returns the texture x and y coordinates from within a touch event.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Goal:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The goal is to get more detailed feedback about where exactly an object was touched. It will return the prim number within the linkset, the side on that prim and the coordinates (x,y) where on that side it was touched.&lt;br /&gt;
&lt;br /&gt;
This will greatly help HUDs and other Panels to implement a user interface without using additional prims as buttons. You could make 10 switches as texture, put them on one single prim and then use the llDetectedTextureCoordinates function to find out which button was pressed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How to implement:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  * Add support for the llDetectedTextureCoordinates LSL-command for the server and client.&lt;br /&gt;
  * Change handling of client touching things so it is possible for the server to find out where the object was touched.&lt;br /&gt;
  * To support scaling of the object, the x and y coordinates will be an integer ranging from 0.0 to 1.0 and will be a relative value independant of real prim dimensions. So, x=0.5 and y=0.5 will mean the exact center of that side.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requested by:&#039;&#039;&#039; [[User:Fairlight Lake]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  * greatly improve User Experience with HUDs&lt;br /&gt;
  * reduce the number of used prims on operator panels and other objects that heavily rely on touch events to do different tasks&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  * eventually slightly more overhead on touch event notification from client to server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please use the talk page to discuss this Feature Request.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Category:Feature Requests]]&lt;/div&gt;</summary>
		<author><name>Fairlight Lake</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Touch_Coordinates&amp;diff=7000</id>
		<title>Touch Coordinates</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Touch_Coordinates&amp;diff=7000"/>
		<updated>2007-01-26T14:58:16Z</updated>

		<summary type="html">&lt;p&gt;Fairlight Lake: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Feature Request: Get Touch Coordinates ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposal:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Implement the following command:&lt;br /&gt;
&lt;br /&gt;
  list [integer x, integer y, integer side, integer link_number] = llDetectedTextureCoordinates(integer num_detected);&lt;br /&gt;
&lt;br /&gt;
This function returns the texture x and y coordinates from within a touch event.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Goal:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The goal is to get more detailed feedback about where exactly an object was touched. It will return the prim number within the linkset, the side on that prim and the coordinates (x,y) where on that side it was touched.&lt;br /&gt;
&lt;br /&gt;
This will greatly help HUDs and other Panels to implement a user interface without using additional prims as buttons. You could make 10 switches as texture, put them on one single prim and then use the llDetectedTextureCoordinates function to find out which button was pressed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How to implement:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  * Add support for the llDetectedTextureCoordinates LSL-command for the server and client.&lt;br /&gt;
  * Change handling of client touching things so it is possible for the server to find out where the object was touched.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requested by:&#039;&#039;&#039; [[User:Fairlight Lake]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  * greatly improve User Experience with HUDs&lt;br /&gt;
  * reduce the number of used prims on operator panels and other objects that heavily rely on touch events to do different tasks&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  * eventually slightly more overhead on touch event notification from client to server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please use the talk page to discuss this Feature Request.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Category:Feature Requests]]&lt;/div&gt;</summary>
		<author><name>Fairlight Lake</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Fairlight_Lake&amp;diff=6999</id>
		<title>User:Fairlight Lake</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Fairlight_Lake&amp;diff=6999"/>
		<updated>2007-01-26T14:41:29Z</updated>

		<summary type="html">&lt;p&gt;Fairlight Lake: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;LSL coder, cpp novice, IT specialist and geek!&lt;br /&gt;
&lt;br /&gt;
My feature requests:&lt;br /&gt;
&lt;br /&gt;
[[Feature_Request_Touch_Coordinates]]&lt;/div&gt;</summary>
		<author><name>Fairlight Lake</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Compiling_the_viewer_(MSVS2005)&amp;diff=5278</id>
		<title>Compiling the viewer (MSVS2005)</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Compiling_the_viewer_(MSVS2005)&amp;diff=5278"/>
		<updated>2007-01-13T11:49:43Z</updated>

		<summary type="html">&lt;p&gt;Fairlight Lake: /* Version: slviewer-src-20070112a */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|align=right&lt;br /&gt;
  |__TOC__&lt;br /&gt;
  |}&lt;br /&gt;
== Introduction ==&lt;br /&gt;
The 2005 version of the Microsoft compiler upgrades the way it handles 64 bit architecture. In order to compile under the 2005 version, you will need to do some edits to the code where typecasts were lazily handled before, as they cause errors now. You&#039;ll also will find some POSIX names deprecated and replaced by ISO C++ standards. Be sure to refer to the other [[Compiling the viewer (MS Windows)|compilation steps]] with the 2003 version for more help.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
* Visual Studio 2005 &#039;&#039;&#039;&#039;&#039;-or-&#039;&#039;&#039;&#039;&#039; [http://msdn.microsoft.com/vstudio/express/visualc/download/ Visual C++ 2005 Express]&amp;lt;small&amp;gt;(Free)&amp;lt;/small&amp;gt;&lt;br /&gt;
** [http://www.microsoft.com/downloads/details.aspx?familyid=0BAF2B35-C656-4969-ACE8-E4C0C0716ADB&amp;amp;displaylang=en Microsoft Platform SDK]&lt;br /&gt;
** A DirectX 9.0 SDK released on or after Summer of 2003 [http://download.microsoft.com/download/5/1/f/51ff8357-0af3-418b-9d0b-e9a5cdc39759/dxsdk_dec2006.EXE DirectX 9.0 SDK (December 2006)] [http://www.microsoft.com/downloads/details.aspx?FamilyID=9216652f-51e0-402e-b7b5-feb68d00f298&amp;amp;displaylang=en DirectX 9.0 SDK Update (Summer 2003)]&lt;br /&gt;
*** Note: If you have previously installed an older version of the DirectX 9.0 SDK, remove it first (from Control Panel -&amp;gt; Add or Remove Programs) before installing this version.  Installing the new SDK &amp;quot;on top&amp;quot; of an older version may cause problems.&lt;br /&gt;
** Set up the project globals:&lt;br /&gt;
*** Start Microsoft Visual Studio 2005&lt;br /&gt;
*** Go to Tools/Options/Projects/VC++ Directories&lt;br /&gt;
*** Make sure that the &#039;&#039;&#039;includes&#039;&#039;&#039;[[:Image:MSVS2005 Global Project Options Include Files.JPG|(&#039;&#039;&#039;screen shot&#039;&#039;&#039;)]] and &#039;&#039;&#039;libraries&#039;&#039;&#039;[[:Image:MSVS2005 Global Project Options Library Files.JPG|(&#039;&#039;&#039;screen shot&#039;&#039;&#039;)]] paths have the Platform SDK paths first, then the DirectX SDK paths, and then the Visual C++ paths. You may need to check &amp;quot;Show All Settings&amp;quot; at the bottom for VC++ Directories to show.&lt;br /&gt;
*** If the DirectX SDK paths aren&#039;t present, add them to both &#039;&#039;&#039;includes&#039;&#039;&#039; and &#039;&#039;&#039;libraries&#039;&#039;&#039;.&lt;br /&gt;
* [http://www.cygwin.com/ Cygwin]&lt;br /&gt;
** When you run the cygwin setup utility make sure you have selected to install patchutil, flex, and bison (all located under &amp;quot;devel&amp;quot;) which are not part of the default install. The project files use several hardcoded references that expect Cygwin to be installed at C:\cygwin, if it&#039;s not you&#039;ll need to edit those references.&lt;br /&gt;
&lt;br /&gt;
== Libraries ==&lt;br /&gt;
&lt;br /&gt;
Download the library directory from LL, extract it, and copy the files into your SL viewer source code directory, maintaining the same directory structure.  Includeded are all the libraries LL ships in this file, but LL does not distribute the source to the following, and you will need to follow the instructions to acquire below:&lt;br /&gt;
&lt;br /&gt;
=== Fmod ===&lt;br /&gt;
* Download &amp;amp; extract [http://www.fmod.org/ifmoddownload.html fmod 3.75 api for win32].&lt;br /&gt;
* Copy &amp;quot;fmodapi375win\api\inc\fmod.h&amp;quot; to &amp;quot;linden\libraries\include&amp;quot;&lt;br /&gt;
* Copy &amp;quot;fmodapi375win\api\inc\fmod_errors.h&amp;quot; to &amp;quot;linden\libraries\include&amp;quot;&lt;br /&gt;
* Copy &amp;quot;fmodapi375win\api\lib\fmodvc.lib&amp;quot; to &amp;quot;linden\libraries\i686-win32\lib_release&amp;quot;&lt;br /&gt;
* Copy &amp;quot;fmodapi375win\api\lib\fmodvc.lib&amp;quot; to &amp;quot;linden\libraries\i686-win32\lib_debug&amp;quot;&lt;br /&gt;
* Copy &amp;quot;fmodapi375win\api\fmod.dll&amp;quot; to &amp;quot;linden\indra\newview&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== gl ===&lt;br /&gt;
* Download [http://oss.sgi.com/projects/ogl-sample/sdk.html glext.h, glxext.h, and wglext.h]&lt;br /&gt;
* Copy them to &amp;quot;libraries\i686-win32\include\GL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Quicktime ===&lt;br /&gt;
* Download &amp;amp; install the [http://developer.apple.com/quicktime/download/ Quicktime SDK for Windows]&lt;br /&gt;
* Copy &amp;quot;QuicktimeSDK\Libraries\QTMLClient.lib&amp;quot; to &amp;quot;\libraries\i686-win32\lib_release&amp;quot;.&lt;br /&gt;
* Copy &amp;quot;QuicktimeSDK\Libraries\QTMLClient.lib&amp;quot; to &amp;quot;\libraries\i686-win32\lib_debug&amp;quot;.&lt;br /&gt;
* Copy the contents of &amp;quot;QuicktimeSDK\CIncludes&amp;quot; into &amp;quot;\libraries\i686-win32\include\quicktime&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Boost++ ===&lt;br /&gt;
Update boost from vc71 to vc80:&lt;br /&gt;
* [http://www.boost-consulting.com/download.html Download &amp;amp; install Boost++]&lt;br /&gt;
* Open the Visual Studio 2005 Command Prompt&lt;br /&gt;
* Delete &amp;quot;linden\libraries\include\boost&amp;quot;&lt;br /&gt;
* Copy &amp;quot;%programfiles%\boost\boost1_33_1\boost&amp;quot; to &amp;quot;linden\libraries\include&amp;quot;&lt;br /&gt;
* Copy &amp;quot;%programfiles%\boost\boost_1_33_1\lib\libboost_regex-vc80-mt-s-1_33_1.lib&amp;quot;&lt;br /&gt;
:# to &amp;quot;\linden\libraries\i686-win32\lib_release&amp;quot; and&lt;br /&gt;
:# to &amp;quot;\linden\libraries\i686-win32\lib_debug&amp;quot;&lt;br /&gt;
* Right click on the &#039;&#039;newview&#039;&#039; project, and select &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
* [[:Image:MSVS2005 newview Property Pages Config Linker Input.JPG|(&#039;&#039;&#039;screen shot&#039;&#039;&#039;)]] Under &#039;&#039;&#039;Configuration Properties&#039;&#039;&#039;, &#039;&#039;&#039;Linker&#039;&#039;&#039;, &#039;&#039;&#039;Input&#039;&#039;&#039; &lt;br /&gt;
** find and change &amp;quot;&#039;&#039;libboost_regex-vc71-mt-s.lib&#039;&#039;&amp;quot;[[:Image:MSVS2005 newview Property Pages Config Linker Input.JPG|(&#039;&#039;&#039;screen shot&#039;&#039;&#039;)]] to &amp;quot;&#039;&#039;libboost_regex-vc80-mt-s-1_33_1.lib&#039;&#039;&amp;quot;[[:Image:MSVS2005 newview Property Pages Config Linker Input List Changed.JPG|(&#039;&#039;&#039;screen shot&#039;&#039;&#039;)]] in the &#039;&#039;Additional Dependencies&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== unistd.h (Express only) ===&lt;br /&gt;
* Create an empty file &amp;quot;linden\libraries\include\unistd.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Done!&lt;br /&gt;
&lt;br /&gt;
== First Steps ==&lt;br /&gt;
=== Environment Setup ===&lt;br /&gt;
* Open the \indra\indra_complete\indra_complete.sln solution in Visual Studio 2005.&lt;br /&gt;
* If Visual Studio prompts to update your project files, allow it to do so.  When the results are displayed, you may see warnings, but you should not see any errors.&lt;br /&gt;
* Pick either ReleaseNoOpt (for debugging) or ReleaseForDownload (for production) (in the box beside the green arrow under the tool bar). Any of the following changes you make will only apply to this solution configuration.&lt;br /&gt;
* Right click newview in the left hand frame and click &amp;quot;Set as StartUp Project&amp;quot;.&lt;br /&gt;
* Right click on each project in the solution, with the exception of &#039;&#039;lscript_compile_fb&#039;&#039;, and follow these steps for each:&lt;br /&gt;
:#[[:Image:MSVS2005_Project_Property_Pages_Config_CPP_General.JPG|(&#039;&#039;&#039;screen shot&#039;&#039;&#039;)]] Under &#039;&#039;&#039;Configuration Properties&#039;&#039;&#039;, &#039;&#039;&#039;C/C++&#039;&#039;&#039;, &#039;&#039;&#039;General&#039;&#039;&#039;, change &#039;&#039;&#039;Treat Warnings As Errors&#039;&#039;&#039; to &amp;quot;&#039;&#039;No&#039;&#039;&amp;quot; &lt;br /&gt;
:#[[:Image:MSVS2005 Project Property Pages Config CPP Preprocessor.JPG |(&#039;&#039;&#039;screen shot&#039;&#039;&#039;)]] Under &#039;&#039;&#039;Configuration Properties&#039;&#039;&#039;, &#039;&#039;&#039;C/C++&#039;&#039;&#039;, &#039;&#039;&#039;PreProcessor&#039;&#039;&#039;, insert the line &amp;quot;&#039;&#039;;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE&#039;&#039;&amp;quot;&lt;br /&gt;
:#[[:Image:MSVS2005 Project Property Pages Config CPP Language.JPG|(&#039;&#039;&#039;screen shot&#039;&#039;&#039;)]] Under &#039;&#039;&#039;Configuration Properties&#039;&#039;&#039;, &#039;&#039;&#039;C/C++&#039;&#039;&#039;, &#039;&#039;&#039;Language&#039;&#039;&#039;, change &#039;&#039;&#039;Treat wchar_t as Built-in Type&#039;&#039;&#039; to &amp;quot;&#039;&#039;No (/Zc:wchar_t-)&#039;&#039;&amp;quot;&lt;br /&gt;
** You must set the PreProcessor definitions for each project individually, but for the other two settings you can highlight all of the project files at the same time (except lscript_compile_fb) and change them simultaneously&lt;br /&gt;
*for the &amp;quot;llwindow&amp;quot; project an additional define is required&lt;br /&gt;
** Under &#039;&#039;&#039;Configuration Properties&#039;&#039;&#039;, &#039;&#039;&#039;C/C++&#039;&#039;&#039;, &#039;&#039;&#039;PreProcessor&#039;&#039;&#039;, insert the line &amp;quot;&#039;&#039;;_CRT_NON_CONFORMING_SWPRINTFS&#039;&#039;&amp;quot;&lt;br /&gt;
*for the &amp;quot;llmessage&amp;quot; project an additional define is required&lt;br /&gt;
** Under &#039;&#039;&#039;Configuration Properties&#039;&#039;&#039;, &#039;&#039;&#039;C/C++&#039;&#039;&#039;, &#039;&#039;&#039;PreProcessor&#039;&#039;&#039;, insert the line &amp;quot;&#039;&#039;;_SCL_SECURE_NO_DEPRECATE&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Code Editing ===&lt;br /&gt;
&lt;br /&gt;
==== Version: slviewer-src-20070108c ====&lt;br /&gt;
Use CTRL+G to help find these lines and edit them, likewise:&lt;br /&gt;
&lt;br /&gt;
*In linden\indra\llcommon\llstringtable.h @ line 103&lt;br /&gt;
 --103: typedef std::hash_multimap&amp;lt;U32, LLStringTableEntry *&amp;gt; string_hash_t;&lt;br /&gt;
 ++103: typedef std&#039;&#039;&#039;&#039;&#039;ext&#039;&#039;&#039;&#039;&#039;::hash_multimap&amp;lt;U32, LLStringTableEntry *&amp;gt; string_hash_t;&lt;br /&gt;
&lt;br /&gt;
*In linden\indra\llcommon\llerror.h @ line 38, and linden\indra\win_updater\updater.cpp @ line 40&lt;br /&gt;
 ++#if LL_WINDOWS&lt;br /&gt;
 ++# if (_MSC_VER &amp;gt;= 1400)&lt;br /&gt;
 ++#  pragma warning(disable : 4996)&lt;br /&gt;
 ++# endif&lt;br /&gt;
 ++#endif&lt;br /&gt;
&lt;br /&gt;
*In linden\indra\llcommon\u64.cpp @ line 36&lt;br /&gt;
 --36: char *aptr = strpbrk(str,&amp;quot;0123456789&amp;quot;);&lt;br /&gt;
 ++36: &#039;&#039;&#039;&#039;&#039;const&#039;&#039;&#039;&#039;&#039; char *aptr = strpbrk(str,&amp;quot;0123456789&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\llprimitive\llprimitive.cpp @ line 1200&lt;br /&gt;
 --1200: exception_faces |= (1 &amp;lt;&amp;lt; i);&lt;br /&gt;
 ++1200: exception_faces |= ((U64)1 &amp;lt;&amp;lt; i);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\llui\llsliderctrl.cpp @ line 218&lt;br /&gt;
 --218: F32 displayed_value = (F32)(floor(getValueF32() * pow(10, mPrecision) + 0.5) / pow(10, mPrecision));&lt;br /&gt;
 ++218: F32 displayed_value = (F32)(floor(getValueF32() * pow(10&#039;&#039;&#039;&#039;&#039;.0&#039;&#039;&#039;&#039;&#039;, mPrecision) + 0.5) / pow(10&#039;&#039;&#039;&#039;&#039;.0&#039;&#039;&#039;&#039;&#039;, mPrecision));&lt;br /&gt;
&lt;br /&gt;
*linden\indra\llui\llspinctrl.cpp @ line 251&lt;br /&gt;
 --251: F32 displayed_value = (F32)floor(getValue().asReal() * pow(10, mPrecision) + 0.5) / (F32)pow(10, mPrecision);&lt;br /&gt;
 ++251: F32 displayed_value = (F32)floor(getValue().asReal() * pow(10&#039;&#039;&#039;&#039;&#039;.0&#039;&#039;&#039;&#039;&#039;, mPrecision) + 0.5) / (F32)pow(10&#039;&#039;&#039;&#039;&#039;.0&#039;&#039;&#039;&#039;&#039;, mPrecision);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\newview\llstartup.cpp @ line 1459&lt;br /&gt;
 --1459: gUTCOffset = (server_utc_time - now);&lt;br /&gt;
 ++1459: gUTCOffset = (server_utc_time - &#039;&#039;&#039;&#039;&#039;(S32)&#039;&#039;&#039;&#039;&#039;now);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\newview\llpaneldirevents.cpp @ line 137, and line 169&lt;br /&gt;
 --137: internal_time = utc_to_pacific_time(utc_time, gPacificDaylightTime);&lt;br /&gt;
 ++137: internal_time = utc_to_pacific_time(&#039;&#039;&#039;&#039;&#039;(S32)&#039;&#039;&#039;&#039;&#039;utc_time, gPacificDaylightTime);&lt;br /&gt;
&lt;br /&gt;
 --169: internal_time = utc_to_pacific_time(utc_time, gPacificDaylightTime);&lt;br /&gt;
 ++169: internal_time = utc_to_pacific_time(&#039;&#039;&#039;&#039;&#039;(S32)&#039;&#039;&#039;&#039;&#039;utc_time, gPacificDaylightTime);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\newview\llfloaterreporter.cpp @ line 668&lt;br /&gt;
 --668: msg-&amp;gt;addU32Fast(_PREHASH_Time, mcd-&amp;gt;mTime);&lt;br /&gt;
 ++668: msg-&amp;gt;addU32Fast(_PREHASH_Time, &#039;&#039;&#039;&#039;&#039;(U32)&#039;&#039;&#039;&#039;&#039;mcd-&amp;gt;mTime);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\newview\llfloaterland.cpp @ line 2609, and line 2878&lt;br /&gt;
 --2609: S32 now = time(NULL);&lt;br /&gt;
 ++2609: S32 now = &#039;&#039;&#039;&#039;&#039;(S32)&#039;&#039;&#039;&#039;&#039;time(NULL);&lt;br /&gt;
&lt;br /&gt;
 --2878: S32 now = time(NULL);&lt;br /&gt;
 ++2878: S32 now = &#039;&#039;&#039;&#039;&#039;(S32)&#039;&#039;&#039;&#039;&#039;time(NULL);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\newview\llfloaterbump.cpp @ line 120&lt;br /&gt;
 --120: timep = utc_to_pacific_time(mcd-&amp;gt;mTime, gPacificDaylightTime);&lt;br /&gt;
 ++120: timep = utc_to_pacific_time(&#039;&#039;&#039;&#039;&#039;(S32)&#039;&#039;&#039;&#039;&#039;mcd-&amp;gt;mTime, gPacificDaylightTime);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\newview\viewer.cpp @ line 2510&lt;br /&gt;
 --2510: srand(time(NULL));&lt;br /&gt;
 ++2510: srand(&#039;&#039;&#039;&#039;&#039;(U32)&#039;&#039;&#039;&#039;&#039;time(NULL));&lt;br /&gt;
 &lt;br /&gt;
*linden\indra\newview\llurlwhitelist.cpp @ line 43&lt;br /&gt;
 --43: mUrlListIter ( 0 )&lt;br /&gt;
 ++43: mUrlListIter ( &#039;&#039;&#039;&#039;&#039;LLUrlWhiteList::mUrlListIter&#039;&#039;&#039;&#039;&#039; )&lt;br /&gt;
&lt;br /&gt;
==== Version: slviewer-src-20070112a ====&lt;br /&gt;
Use CTRL+G to help find these lines and edit them, likewise:&lt;br /&gt;
&lt;br /&gt;
*In linden\indra\llcommon\llstringtable.h @ line 103&lt;br /&gt;
 --103: typedef std::hash_multimap&amp;lt;U32, LLStringTableEntry *&amp;gt; string_hash_t;&lt;br /&gt;
 ++103: typedef std&#039;&#039;&#039;&#039;&#039;ext&#039;&#039;&#039;&#039;&#039;::hash_multimap&amp;lt;U32, LLStringTableEntry *&amp;gt; string_hash_t;&lt;br /&gt;
&lt;br /&gt;
*In linden\indra\llcommon\llerror.h @ line 38, and linden\indra\win_updater\updater.cpp @ line 40&lt;br /&gt;
 ++#if LL_WINDOWS&lt;br /&gt;
 ++# if (_MSC_VER &amp;gt;= 1400)&lt;br /&gt;
 ++#  pragma warning(disable : 4996)&lt;br /&gt;
 ++# endif&lt;br /&gt;
 ++#endif&lt;br /&gt;
&lt;br /&gt;
*In linden\indra\llcommon\u64.cpp @ line 36&lt;br /&gt;
 --36: char *aptr = strpbrk(str,&amp;quot;0123456789&amp;quot;);&lt;br /&gt;
 ++36: &#039;&#039;&#039;&#039;&#039;const&#039;&#039;&#039;&#039;&#039; char *aptr = strpbrk(str,&amp;quot;0123456789&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\llprimitive\llprimitive.cpp @ line 1200&lt;br /&gt;
 --1200: exception_faces |= (1 &amp;lt;&amp;lt; i);&lt;br /&gt;
 ++1200: exception_faces |= ((U64)1 &amp;lt;&amp;lt; i);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\llui\llsliderctrl.cpp @ line 218&lt;br /&gt;
 --218: F32 displayed_value = (F32)(floor(getValueF32() * pow(10, mPrecision) + 0.5) / pow(10, mPrecision));&lt;br /&gt;
 ++218: F32 displayed_value = (F32)(floor(getValueF32() * pow(10&#039;&#039;&#039;&#039;&#039;.0&#039;&#039;&#039;&#039;&#039;, mPrecision) + 0.5) / pow(10&#039;&#039;&#039;&#039;&#039;.0&#039;&#039;&#039;&#039;&#039;, mPrecision));&lt;br /&gt;
&lt;br /&gt;
*linden\indra\llui\llspinctrl.cpp @ line 251&lt;br /&gt;
 --251: F32 displayed_value = (F32)floor(getValue().asReal() * pow(10, mPrecision) + 0.5) / (F32)pow(10, mPrecision);&lt;br /&gt;
 ++251: F32 displayed_value = (F32)floor(getValue().asReal() * pow(10&#039;&#039;&#039;&#039;&#039;.0&#039;&#039;&#039;&#039;&#039;, mPrecision) + 0.5) / (F32)pow(10&#039;&#039;&#039;&#039;&#039;.0&#039;&#039;&#039;&#039;&#039;, mPrecision);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\newview\llstartup.cpp @ line 1459&lt;br /&gt;
 --1459: gUTCOffset = (server_utc_time - now);&lt;br /&gt;
 ++1459: gUTCOffset = (server_utc_time - &#039;&#039;&#039;&#039;&#039;(S32)&#039;&#039;&#039;&#039;&#039;now);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\newview\llpaneldirevents.cpp @ line 137, and line 169&lt;br /&gt;
 --137: internal_time = utc_to_pacific_time(utc_time, gPacificDaylightTime);&lt;br /&gt;
 ++137: internal_time = utc_to_pacific_time(&#039;&#039;&#039;&#039;&#039;(S32)&#039;&#039;&#039;&#039;&#039;utc_time, gPacificDaylightTime);&lt;br /&gt;
&lt;br /&gt;
 --169: internal_time = utc_to_pacific_time(utc_time, gPacificDaylightTime);&lt;br /&gt;
 ++169: internal_time = utc_to_pacific_time(&#039;&#039;&#039;&#039;&#039;(S32)&#039;&#039;&#039;&#039;&#039;utc_time, gPacificDaylightTime);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\newview\llfloaterreporter.cpp @ line 668&lt;br /&gt;
 --668: msg-&amp;gt;addU32Fast(_PREHASH_Time, mcd-&amp;gt;mTime);&lt;br /&gt;
 ++668: msg-&amp;gt;addU32Fast(_PREHASH_Time, &#039;&#039;&#039;&#039;&#039;(U32)&#039;&#039;&#039;&#039;&#039;mcd-&amp;gt;mTime);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\newview\llfloaterland.cpp @ line 2609, and line 2878&lt;br /&gt;
 --2609: S32 now = time(NULL);&lt;br /&gt;
 ++2609: S32 now = &#039;&#039;&#039;&#039;&#039;(S32)&#039;&#039;&#039;&#039;&#039;time(NULL);&lt;br /&gt;
&lt;br /&gt;
 --2878: S32 now = time(NULL);&lt;br /&gt;
 ++2878: S32 now = &#039;&#039;&#039;&#039;&#039;(S32)&#039;&#039;&#039;&#039;&#039;time(NULL);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\newview\llfloaterbump.cpp @ line 120&lt;br /&gt;
 --120: timep = utc_to_pacific_time(mcd-&amp;gt;mTime, gPacificDaylightTime);&lt;br /&gt;
 ++120: timep = utc_to_pacific_time(&#039;&#039;&#039;&#039;&#039;(S32)&#039;&#039;&#039;&#039;&#039;mcd-&amp;gt;mTime, gPacificDaylightTime);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\newview\viewer.cpp @ line 2515&lt;br /&gt;
 --2515: srand(time(NULL));&lt;br /&gt;
 ++2515: srand(&#039;&#039;&#039;&#039;&#039;(U32)&#039;&#039;&#039;&#039;&#039;time(NULL));&lt;br /&gt;
 &lt;br /&gt;
*linden\indra\newview\llurlwhitelist.cpp @ line 43&lt;br /&gt;
 --43: mUrlListIter ( 0 )&lt;br /&gt;
 ++43: mUrlListIter ( &#039;&#039;&#039;&#039;&#039;LLUrlWhiteList::mUrlListIter&#039;&#039;&#039;&#039;&#039; )&lt;br /&gt;
&lt;br /&gt;
==== Misc. Code Editing ====&lt;br /&gt;
*linden\indra\llinventory\llinventory.cpp @ line 1433&lt;br /&gt;
 ++1433: @ (S32)now&lt;br /&gt;
&lt;br /&gt;
=== Disable llMozLib ===&lt;br /&gt;
*linden\indra\llcommon\llpreprocessor.h @ line 51&lt;br /&gt;
 --51: #define LL_LIBXUL_ENABLED		1&lt;br /&gt;
 ++51: #define LL_LIBXUL_ENABLED		&#039;&#039;&#039;&#039;&#039;0&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Ready, Set, Build! ==&lt;br /&gt;
* Build either ReleaseNoOpt (for debugging) or ReleaseForDownload (for production).&lt;br /&gt;
* SecondLife.exe will be built in \indra\newview\ReleaseNoOpt or \indra\newview\ReleaseForDownload&lt;br /&gt;
* Create a shortcut to SecondLife.exe, and change the start location to \indra\newview\ (all the .dll will be found there.)&lt;br /&gt;
&lt;br /&gt;
=== Problems Running? ===&lt;br /&gt;
&lt;br /&gt;
If you can&#039;t connect once you&#039;ve built the viewer:&lt;br /&gt;
&lt;br /&gt;
* If you&#039;re getting errors while trying to load your inventory, try [[Stuck logging in|clearing your cache and deleting other temporary files]].&lt;br /&gt;
&lt;br /&gt;
=== Cannot open include file: &#039;windows.h&#039; problem ===&lt;br /&gt;
If you run into this problem:&lt;br /&gt;
 ..\..\..\boost/regex/v4/fileiter.hpp(44) : fatal error C1083: Cannot open include file: &#039;windows.h&#039;: No such file or directory&lt;br /&gt;
Fix it with this: (thanks Fairlight!)&lt;br /&gt;
 set INCLUDE=C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include;%INCLUDE%&lt;br /&gt;
 set LIB=C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib;%LIB%&lt;/div&gt;</summary>
		<author><name>Fairlight Lake</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Compiling_the_viewer_(MSVS2005)&amp;diff=5277</id>
		<title>Compiling the viewer (MSVS2005)</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Compiling_the_viewer_(MSVS2005)&amp;diff=5277"/>
		<updated>2007-01-13T11:48:53Z</updated>

		<summary type="html">&lt;p&gt;Fairlight Lake: Added patch instructions for new Version slviewer-src-20070112a of the source&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|align=right&lt;br /&gt;
  |__TOC__&lt;br /&gt;
  |}&lt;br /&gt;
== Introduction ==&lt;br /&gt;
The 2005 version of the Microsoft compiler upgrades the way it handles 64 bit architecture. In order to compile under the 2005 version, you will need to do some edits to the code where typecasts were lazily handled before, as they cause errors now. You&#039;ll also will find some POSIX names deprecated and replaced by ISO C++ standards. Be sure to refer to the other [[Compiling the viewer (MS Windows)|compilation steps]] with the 2003 version for more help.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
* Visual Studio 2005 &#039;&#039;&#039;&#039;&#039;-or-&#039;&#039;&#039;&#039;&#039; [http://msdn.microsoft.com/vstudio/express/visualc/download/ Visual C++ 2005 Express]&amp;lt;small&amp;gt;(Free)&amp;lt;/small&amp;gt;&lt;br /&gt;
** [http://www.microsoft.com/downloads/details.aspx?familyid=0BAF2B35-C656-4969-ACE8-E4C0C0716ADB&amp;amp;displaylang=en Microsoft Platform SDK]&lt;br /&gt;
** A DirectX 9.0 SDK released on or after Summer of 2003 [http://download.microsoft.com/download/5/1/f/51ff8357-0af3-418b-9d0b-e9a5cdc39759/dxsdk_dec2006.EXE DirectX 9.0 SDK (December 2006)] [http://www.microsoft.com/downloads/details.aspx?FamilyID=9216652f-51e0-402e-b7b5-feb68d00f298&amp;amp;displaylang=en DirectX 9.0 SDK Update (Summer 2003)]&lt;br /&gt;
*** Note: If you have previously installed an older version of the DirectX 9.0 SDK, remove it first (from Control Panel -&amp;gt; Add or Remove Programs) before installing this version.  Installing the new SDK &amp;quot;on top&amp;quot; of an older version may cause problems.&lt;br /&gt;
** Set up the project globals:&lt;br /&gt;
*** Start Microsoft Visual Studio 2005&lt;br /&gt;
*** Go to Tools/Options/Projects/VC++ Directories&lt;br /&gt;
*** Make sure that the &#039;&#039;&#039;includes&#039;&#039;&#039;[[:Image:MSVS2005 Global Project Options Include Files.JPG|(&#039;&#039;&#039;screen shot&#039;&#039;&#039;)]] and &#039;&#039;&#039;libraries&#039;&#039;&#039;[[:Image:MSVS2005 Global Project Options Library Files.JPG|(&#039;&#039;&#039;screen shot&#039;&#039;&#039;)]] paths have the Platform SDK paths first, then the DirectX SDK paths, and then the Visual C++ paths. You may need to check &amp;quot;Show All Settings&amp;quot; at the bottom for VC++ Directories to show.&lt;br /&gt;
*** If the DirectX SDK paths aren&#039;t present, add them to both &#039;&#039;&#039;includes&#039;&#039;&#039; and &#039;&#039;&#039;libraries&#039;&#039;&#039;.&lt;br /&gt;
* [http://www.cygwin.com/ Cygwin]&lt;br /&gt;
** When you run the cygwin setup utility make sure you have selected to install patchutil, flex, and bison (all located under &amp;quot;devel&amp;quot;) which are not part of the default install. The project files use several hardcoded references that expect Cygwin to be installed at C:\cygwin, if it&#039;s not you&#039;ll need to edit those references.&lt;br /&gt;
&lt;br /&gt;
== Libraries ==&lt;br /&gt;
&lt;br /&gt;
Download the library directory from LL, extract it, and copy the files into your SL viewer source code directory, maintaining the same directory structure.  Includeded are all the libraries LL ships in this file, but LL does not distribute the source to the following, and you will need to follow the instructions to acquire below:&lt;br /&gt;
&lt;br /&gt;
=== Fmod ===&lt;br /&gt;
* Download &amp;amp; extract [http://www.fmod.org/ifmoddownload.html fmod 3.75 api for win32].&lt;br /&gt;
* Copy &amp;quot;fmodapi375win\api\inc\fmod.h&amp;quot; to &amp;quot;linden\libraries\include&amp;quot;&lt;br /&gt;
* Copy &amp;quot;fmodapi375win\api\inc\fmod_errors.h&amp;quot; to &amp;quot;linden\libraries\include&amp;quot;&lt;br /&gt;
* Copy &amp;quot;fmodapi375win\api\lib\fmodvc.lib&amp;quot; to &amp;quot;linden\libraries\i686-win32\lib_release&amp;quot;&lt;br /&gt;
* Copy &amp;quot;fmodapi375win\api\lib\fmodvc.lib&amp;quot; to &amp;quot;linden\libraries\i686-win32\lib_debug&amp;quot;&lt;br /&gt;
* Copy &amp;quot;fmodapi375win\api\fmod.dll&amp;quot; to &amp;quot;linden\indra\newview&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== gl ===&lt;br /&gt;
* Download [http://oss.sgi.com/projects/ogl-sample/sdk.html glext.h, glxext.h, and wglext.h]&lt;br /&gt;
* Copy them to &amp;quot;libraries\i686-win32\include\GL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Quicktime ===&lt;br /&gt;
* Download &amp;amp; install the [http://developer.apple.com/quicktime/download/ Quicktime SDK for Windows]&lt;br /&gt;
* Copy &amp;quot;QuicktimeSDK\Libraries\QTMLClient.lib&amp;quot; to &amp;quot;\libraries\i686-win32\lib_release&amp;quot;.&lt;br /&gt;
* Copy &amp;quot;QuicktimeSDK\Libraries\QTMLClient.lib&amp;quot; to &amp;quot;\libraries\i686-win32\lib_debug&amp;quot;.&lt;br /&gt;
* Copy the contents of &amp;quot;QuicktimeSDK\CIncludes&amp;quot; into &amp;quot;\libraries\i686-win32\include\quicktime&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Boost++ ===&lt;br /&gt;
Update boost from vc71 to vc80:&lt;br /&gt;
* [http://www.boost-consulting.com/download.html Download &amp;amp; install Boost++]&lt;br /&gt;
* Open the Visual Studio 2005 Command Prompt&lt;br /&gt;
* Delete &amp;quot;linden\libraries\include\boost&amp;quot;&lt;br /&gt;
* Copy &amp;quot;%programfiles%\boost\boost1_33_1\boost&amp;quot; to &amp;quot;linden\libraries\include&amp;quot;&lt;br /&gt;
* Copy &amp;quot;%programfiles%\boost\boost_1_33_1\lib\libboost_regex-vc80-mt-s-1_33_1.lib&amp;quot;&lt;br /&gt;
:# to &amp;quot;\linden\libraries\i686-win32\lib_release&amp;quot; and&lt;br /&gt;
:# to &amp;quot;\linden\libraries\i686-win32\lib_debug&amp;quot;&lt;br /&gt;
* Right click on the &#039;&#039;newview&#039;&#039; project, and select &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
* [[:Image:MSVS2005 newview Property Pages Config Linker Input.JPG|(&#039;&#039;&#039;screen shot&#039;&#039;&#039;)]] Under &#039;&#039;&#039;Configuration Properties&#039;&#039;&#039;, &#039;&#039;&#039;Linker&#039;&#039;&#039;, &#039;&#039;&#039;Input&#039;&#039;&#039; &lt;br /&gt;
** find and change &amp;quot;&#039;&#039;libboost_regex-vc71-mt-s.lib&#039;&#039;&amp;quot;[[:Image:MSVS2005 newview Property Pages Config Linker Input.JPG|(&#039;&#039;&#039;screen shot&#039;&#039;&#039;)]] to &amp;quot;&#039;&#039;libboost_regex-vc80-mt-s-1_33_1.lib&#039;&#039;&amp;quot;[[:Image:MSVS2005 newview Property Pages Config Linker Input List Changed.JPG|(&#039;&#039;&#039;screen shot&#039;&#039;&#039;)]] in the &#039;&#039;Additional Dependencies&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== unistd.h (Express only) ===&lt;br /&gt;
* Create an empty file &amp;quot;linden\libraries\include\unistd.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Done!&lt;br /&gt;
&lt;br /&gt;
== First Steps ==&lt;br /&gt;
=== Environment Setup ===&lt;br /&gt;
* Open the \indra\indra_complete\indra_complete.sln solution in Visual Studio 2005.&lt;br /&gt;
* If Visual Studio prompts to update your project files, allow it to do so.  When the results are displayed, you may see warnings, but you should not see any errors.&lt;br /&gt;
* Pick either ReleaseNoOpt (for debugging) or ReleaseForDownload (for production) (in the box beside the green arrow under the tool bar). Any of the following changes you make will only apply to this solution configuration.&lt;br /&gt;
* Right click newview in the left hand frame and click &amp;quot;Set as StartUp Project&amp;quot;.&lt;br /&gt;
* Right click on each project in the solution, with the exception of &#039;&#039;lscript_compile_fb&#039;&#039;, and follow these steps for each:&lt;br /&gt;
:#[[:Image:MSVS2005_Project_Property_Pages_Config_CPP_General.JPG|(&#039;&#039;&#039;screen shot&#039;&#039;&#039;)]] Under &#039;&#039;&#039;Configuration Properties&#039;&#039;&#039;, &#039;&#039;&#039;C/C++&#039;&#039;&#039;, &#039;&#039;&#039;General&#039;&#039;&#039;, change &#039;&#039;&#039;Treat Warnings As Errors&#039;&#039;&#039; to &amp;quot;&#039;&#039;No&#039;&#039;&amp;quot; &lt;br /&gt;
:#[[:Image:MSVS2005 Project Property Pages Config CPP Preprocessor.JPG |(&#039;&#039;&#039;screen shot&#039;&#039;&#039;)]] Under &#039;&#039;&#039;Configuration Properties&#039;&#039;&#039;, &#039;&#039;&#039;C/C++&#039;&#039;&#039;, &#039;&#039;&#039;PreProcessor&#039;&#039;&#039;, insert the line &amp;quot;&#039;&#039;;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE&#039;&#039;&amp;quot;&lt;br /&gt;
:#[[:Image:MSVS2005 Project Property Pages Config CPP Language.JPG|(&#039;&#039;&#039;screen shot&#039;&#039;&#039;)]] Under &#039;&#039;&#039;Configuration Properties&#039;&#039;&#039;, &#039;&#039;&#039;C/C++&#039;&#039;&#039;, &#039;&#039;&#039;Language&#039;&#039;&#039;, change &#039;&#039;&#039;Treat wchar_t as Built-in Type&#039;&#039;&#039; to &amp;quot;&#039;&#039;No (/Zc:wchar_t-)&#039;&#039;&amp;quot;&lt;br /&gt;
** You must set the PreProcessor definitions for each project individually, but for the other two settings you can highlight all of the project files at the same time (except lscript_compile_fb) and change them simultaneously&lt;br /&gt;
*for the &amp;quot;llwindow&amp;quot; project an additional define is required&lt;br /&gt;
** Under &#039;&#039;&#039;Configuration Properties&#039;&#039;&#039;, &#039;&#039;&#039;C/C++&#039;&#039;&#039;, &#039;&#039;&#039;PreProcessor&#039;&#039;&#039;, insert the line &amp;quot;&#039;&#039;;_CRT_NON_CONFORMING_SWPRINTFS&#039;&#039;&amp;quot;&lt;br /&gt;
*for the &amp;quot;llmessage&amp;quot; project an additional define is required&lt;br /&gt;
** Under &#039;&#039;&#039;Configuration Properties&#039;&#039;&#039;, &#039;&#039;&#039;C/C++&#039;&#039;&#039;, &#039;&#039;&#039;PreProcessor&#039;&#039;&#039;, insert the line &amp;quot;&#039;&#039;;_SCL_SECURE_NO_DEPRECATE&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Code Editing ===&lt;br /&gt;
&lt;br /&gt;
==== Version: slviewer-src-20070108c ====&lt;br /&gt;
Use CTRL+G to help find these lines and edit them, likewise:&lt;br /&gt;
&lt;br /&gt;
*In linden\indra\llcommon\llstringtable.h @ line 103&lt;br /&gt;
 --103: typedef std::hash_multimap&amp;lt;U32, LLStringTableEntry *&amp;gt; string_hash_t;&lt;br /&gt;
 ++103: typedef std&#039;&#039;&#039;&#039;&#039;ext&#039;&#039;&#039;&#039;&#039;::hash_multimap&amp;lt;U32, LLStringTableEntry *&amp;gt; string_hash_t;&lt;br /&gt;
&lt;br /&gt;
*In linden\indra\llcommon\llerror.h @ line 38, and linden\indra\win_updater\updater.cpp @ line 40&lt;br /&gt;
 ++#if LL_WINDOWS&lt;br /&gt;
 ++# if (_MSC_VER &amp;gt;= 1400)&lt;br /&gt;
 ++#  pragma warning(disable : 4996)&lt;br /&gt;
 ++# endif&lt;br /&gt;
 ++#endif&lt;br /&gt;
&lt;br /&gt;
*In linden\indra\llcommon\u64.cpp @ line 36&lt;br /&gt;
 --36: char *aptr = strpbrk(str,&amp;quot;0123456789&amp;quot;);&lt;br /&gt;
 ++36: &#039;&#039;&#039;&#039;&#039;const&#039;&#039;&#039;&#039;&#039; char *aptr = strpbrk(str,&amp;quot;0123456789&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\llprimitive\llprimitive.cpp @ line 1200&lt;br /&gt;
 --1200: exception_faces |= (1 &amp;lt;&amp;lt; i);&lt;br /&gt;
 ++1200: exception_faces |= ((U64)1 &amp;lt;&amp;lt; i);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\llui\llsliderctrl.cpp @ line 218&lt;br /&gt;
 --218: F32 displayed_value = (F32)(floor(getValueF32() * pow(10, mPrecision) + 0.5) / pow(10, mPrecision));&lt;br /&gt;
 ++218: F32 displayed_value = (F32)(floor(getValueF32() * pow(10&#039;&#039;&#039;&#039;&#039;.0&#039;&#039;&#039;&#039;&#039;, mPrecision) + 0.5) / pow(10&#039;&#039;&#039;&#039;&#039;.0&#039;&#039;&#039;&#039;&#039;, mPrecision));&lt;br /&gt;
&lt;br /&gt;
*linden\indra\llui\llspinctrl.cpp @ line 251&lt;br /&gt;
 --251: F32 displayed_value = (F32)floor(getValue().asReal() * pow(10, mPrecision) + 0.5) / (F32)pow(10, mPrecision);&lt;br /&gt;
 ++251: F32 displayed_value = (F32)floor(getValue().asReal() * pow(10&#039;&#039;&#039;&#039;&#039;.0&#039;&#039;&#039;&#039;&#039;, mPrecision) + 0.5) / (F32)pow(10&#039;&#039;&#039;&#039;&#039;.0&#039;&#039;&#039;&#039;&#039;, mPrecision);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\newview\llstartup.cpp @ line 1459&lt;br /&gt;
 --1459: gUTCOffset = (server_utc_time - now);&lt;br /&gt;
 ++1459: gUTCOffset = (server_utc_time - &#039;&#039;&#039;&#039;&#039;(S32)&#039;&#039;&#039;&#039;&#039;now);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\newview\llpaneldirevents.cpp @ line 137, and line 169&lt;br /&gt;
 --137: internal_time = utc_to_pacific_time(utc_time, gPacificDaylightTime);&lt;br /&gt;
 ++137: internal_time = utc_to_pacific_time(&#039;&#039;&#039;&#039;&#039;(S32)&#039;&#039;&#039;&#039;&#039;utc_time, gPacificDaylightTime);&lt;br /&gt;
&lt;br /&gt;
 --169: internal_time = utc_to_pacific_time(utc_time, gPacificDaylightTime);&lt;br /&gt;
 ++169: internal_time = utc_to_pacific_time(&#039;&#039;&#039;&#039;&#039;(S32)&#039;&#039;&#039;&#039;&#039;utc_time, gPacificDaylightTime);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\newview\llfloaterreporter.cpp @ line 668&lt;br /&gt;
 --668: msg-&amp;gt;addU32Fast(_PREHASH_Time, mcd-&amp;gt;mTime);&lt;br /&gt;
 ++668: msg-&amp;gt;addU32Fast(_PREHASH_Time, &#039;&#039;&#039;&#039;&#039;(U32)&#039;&#039;&#039;&#039;&#039;mcd-&amp;gt;mTime);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\newview\llfloaterland.cpp @ line 2609, and line 2878&lt;br /&gt;
 --2609: S32 now = time(NULL);&lt;br /&gt;
 ++2609: S32 now = &#039;&#039;&#039;&#039;&#039;(S32)&#039;&#039;&#039;&#039;&#039;time(NULL);&lt;br /&gt;
&lt;br /&gt;
 --2878: S32 now = time(NULL);&lt;br /&gt;
 ++2878: S32 now = &#039;&#039;&#039;&#039;&#039;(S32)&#039;&#039;&#039;&#039;&#039;time(NULL);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\newview\llfloaterbump.cpp @ line 120&lt;br /&gt;
 --120: timep = utc_to_pacific_time(mcd-&amp;gt;mTime, gPacificDaylightTime);&lt;br /&gt;
 ++120: timep = utc_to_pacific_time(&#039;&#039;&#039;&#039;&#039;(S32)&#039;&#039;&#039;&#039;&#039;mcd-&amp;gt;mTime, gPacificDaylightTime);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\newview\viewer.cpp @ line 2510&lt;br /&gt;
 --2510: srand(time(NULL));&lt;br /&gt;
 ++2510: srand(&#039;&#039;&#039;&#039;&#039;(U32)&#039;&#039;&#039;&#039;&#039;time(NULL));&lt;br /&gt;
 &lt;br /&gt;
*linden\indra\newview\llurlwhitelist.cpp @ line 43&lt;br /&gt;
 --43: mUrlListIter ( 0 )&lt;br /&gt;
 ++43: mUrlListIter ( &#039;&#039;&#039;&#039;&#039;LLUrlWhiteList::mUrlListIter&#039;&#039;&#039;&#039;&#039; )&lt;br /&gt;
&lt;br /&gt;
==== Version: slviewer-src-20070112a ====&lt;br /&gt;
Use CTRL+G to help find these lines and edit them, likewise:&lt;br /&gt;
&lt;br /&gt;
*In linden\indra\llcommon\llstringtable.h @ line 103&lt;br /&gt;
 --103: typedef std::hash_multimap&amp;lt;U32, LLStringTableEntry *&amp;gt; string_hash_t;&lt;br /&gt;
 ++103: typedef std&#039;&#039;&#039;&#039;&#039;ext&#039;&#039;&#039;&#039;&#039;::hash_multimap&amp;lt;U32, LLStringTableEntry *&amp;gt; string_hash_t;&lt;br /&gt;
&lt;br /&gt;
*In linden\indra\llcommon\llerror.h @ line 38, and linden\indra\win_updater\updater.cpp @ line 40&lt;br /&gt;
 ++#if LL_WINDOWS&lt;br /&gt;
 ++# if (_MSC_VER &amp;gt;= 1400)&lt;br /&gt;
 ++#  pragma warning(disable : 4996)&lt;br /&gt;
 ++# endif&lt;br /&gt;
 ++#endif&lt;br /&gt;
&lt;br /&gt;
*In linden\indra\llcommon\u64.cpp @ line 36&lt;br /&gt;
 --36: char *aptr = strpbrk(str,&amp;quot;0123456789&amp;quot;);&lt;br /&gt;
 ++36: &#039;&#039;&#039;&#039;&#039;const&#039;&#039;&#039;&#039;&#039; char *aptr = strpbrk(str,&amp;quot;0123456789&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\llprimitive\llprimitive.cpp @ line 1200&lt;br /&gt;
 --1200: exception_faces |= (1 &amp;lt;&amp;lt; i);&lt;br /&gt;
 ++1200: exception_faces |= ((U64)1 &amp;lt;&amp;lt; i);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\llui\llsliderctrl.cpp @ line 218&lt;br /&gt;
 --218: F32 displayed_value = (F32)(floor(getValueF32() * pow(10, mPrecision) + 0.5) / pow(10, mPrecision));&lt;br /&gt;
 ++218: F32 displayed_value = (F32)(floor(getValueF32() * pow(10&#039;&#039;&#039;&#039;&#039;.0&#039;&#039;&#039;&#039;&#039;, mPrecision) + 0.5) / pow(10&#039;&#039;&#039;&#039;&#039;.0&#039;&#039;&#039;&#039;&#039;, mPrecision));&lt;br /&gt;
&lt;br /&gt;
*linden\indra\llui\llspinctrl.cpp @ line 251&lt;br /&gt;
 --251: F32 displayed_value = (F32)floor(getValue().asReal() * pow(10, mPrecision) + 0.5) / (F32)pow(10, mPrecision);&lt;br /&gt;
 ++251: F32 displayed_value = (F32)floor(getValue().asReal() * pow(10&#039;&#039;&#039;&#039;&#039;.0&#039;&#039;&#039;&#039;&#039;, mPrecision) + 0.5) / (F32)pow(10&#039;&#039;&#039;&#039;&#039;.0&#039;&#039;&#039;&#039;&#039;, mPrecision);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\newview\llstartup.cpp @ line 1459&lt;br /&gt;
 --1459: gUTCOffset = (server_utc_time - now);&lt;br /&gt;
 ++1459: gUTCOffset = (server_utc_time - &#039;&#039;&#039;&#039;&#039;(S32)&#039;&#039;&#039;&#039;&#039;now);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\newview\llpaneldirevents.cpp @ line 137, and line 169&lt;br /&gt;
 --137: internal_time = utc_to_pacific_time(utc_time, gPacificDaylightTime);&lt;br /&gt;
 ++137: internal_time = utc_to_pacific_time(&#039;&#039;&#039;&#039;&#039;(S32)&#039;&#039;&#039;&#039;&#039;utc_time, gPacificDaylightTime);&lt;br /&gt;
&lt;br /&gt;
 --169: internal_time = utc_to_pacific_time(utc_time, gPacificDaylightTime);&lt;br /&gt;
 ++169: internal_time = utc_to_pacific_time(&#039;&#039;&#039;&#039;&#039;(S32)&#039;&#039;&#039;&#039;&#039;utc_time, gPacificDaylightTime);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\newview\llfloaterreporter.cpp @ line 668&lt;br /&gt;
 --668: msg-&amp;gt;addU32Fast(_PREHASH_Time, mcd-&amp;gt;mTime);&lt;br /&gt;
 ++668: msg-&amp;gt;addU32Fast(_PREHASH_Time, &#039;&#039;&#039;&#039;&#039;(U32)&#039;&#039;&#039;&#039;&#039;mcd-&amp;gt;mTime);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\newview\llfloaterland.cpp @ line 2609, and line 2878&lt;br /&gt;
 --2609: S32 now = time(NULL);&lt;br /&gt;
 ++2609: S32 now = &#039;&#039;&#039;&#039;&#039;(S32)&#039;&#039;&#039;&#039;&#039;time(NULL);&lt;br /&gt;
&lt;br /&gt;
 --2878: S32 now = time(NULL);&lt;br /&gt;
 ++2878: S32 now = &#039;&#039;&#039;&#039;&#039;(S32)&#039;&#039;&#039;&#039;&#039;time(NULL);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\newview\llfloaterbump.cpp @ line 120&lt;br /&gt;
 --120: timep = utc_to_pacific_time(mcd-&amp;gt;mTime, gPacificDaylightTime);&lt;br /&gt;
 ++120: timep = utc_to_pacific_time(&#039;&#039;&#039;&#039;&#039;(S32)&#039;&#039;&#039;&#039;&#039;mcd-&amp;gt;mTime, gPacificDaylightTime);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\newview\viewer.cpp @ line 2510&lt;br /&gt;
 --2515: srand(time(NULL));&lt;br /&gt;
 ++2515: srand(&#039;&#039;&#039;&#039;&#039;(U32)&#039;&#039;&#039;&#039;&#039;time(NULL));&lt;br /&gt;
 &lt;br /&gt;
*linden\indra\newview\llurlwhitelist.cpp @ line 43&lt;br /&gt;
 --43: mUrlListIter ( 0 )&lt;br /&gt;
 ++43: mUrlListIter ( &#039;&#039;&#039;&#039;&#039;LLUrlWhiteList::mUrlListIter&#039;&#039;&#039;&#039;&#039; )&lt;br /&gt;
&lt;br /&gt;
==== Misc. Code Editing ====&lt;br /&gt;
*linden\indra\llinventory\llinventory.cpp @ line 1433&lt;br /&gt;
 ++1433: @ (S32)now&lt;br /&gt;
&lt;br /&gt;
=== Disable llMozLib ===&lt;br /&gt;
*linden\indra\llcommon\llpreprocessor.h @ line 51&lt;br /&gt;
 --51: #define LL_LIBXUL_ENABLED		1&lt;br /&gt;
 ++51: #define LL_LIBXUL_ENABLED		&#039;&#039;&#039;&#039;&#039;0&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Ready, Set, Build! ==&lt;br /&gt;
* Build either ReleaseNoOpt (for debugging) or ReleaseForDownload (for production).&lt;br /&gt;
* SecondLife.exe will be built in \indra\newview\ReleaseNoOpt or \indra\newview\ReleaseForDownload&lt;br /&gt;
* Create a shortcut to SecondLife.exe, and change the start location to \indra\newview\ (all the .dll will be found there.)&lt;br /&gt;
&lt;br /&gt;
=== Problems Running? ===&lt;br /&gt;
&lt;br /&gt;
If you can&#039;t connect once you&#039;ve built the viewer:&lt;br /&gt;
&lt;br /&gt;
* If you&#039;re getting errors while trying to load your inventory, try [[Stuck logging in|clearing your cache and deleting other temporary files]].&lt;br /&gt;
&lt;br /&gt;
=== Cannot open include file: &#039;windows.h&#039; problem ===&lt;br /&gt;
If you run into this problem:&lt;br /&gt;
 ..\..\..\boost/regex/v4/fileiter.hpp(44) : fatal error C1083: Cannot open include file: &#039;windows.h&#039;: No such file or directory&lt;br /&gt;
Fix it with this: (thanks Fairlight!)&lt;br /&gt;
 set INCLUDE=C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include;%INCLUDE%&lt;br /&gt;
 set LIB=C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib;%LIB%&lt;/div&gt;</summary>
		<author><name>Fairlight Lake</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Community_Bounties&amp;diff=4722</id>
		<title>Community Bounties</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Community_Bounties&amp;diff=4722"/>
		<updated>2007-01-10T18:35:27Z</updated>

		<summary type="html">&lt;p&gt;Fairlight Lake: /* MSVC 2005 Support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== MSVC 2005 Support ==&lt;br /&gt;
HOWTO From Start to Finish, plus any codefixes required to get Second Life to successfully compile &#039;&#039;&#039;and run&#039;&#039;&#039; under MS Visual Studio 2005 (SP2) &#039;&#039;&#039;and&#039;&#039;&#039; Visual Studio 2005 Express.&lt;br /&gt;
&lt;br /&gt;
* $50 via PayPal [[User:Adam Zaius|Adam Zaius]] 10:33, 8 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
* Done by [[User:Fox Diller|Fox Diller]] with the exception of the Mozilla libraries. HowTo available at [[Compiling the viewer (MS Windows - MSVS2005-MSVC2005 Express)]] -- [[User:Fairlight Lake|Fairlight Lake]] 10 January 2007&lt;br /&gt;
&lt;br /&gt;
== Pixel Shader Support ==&lt;br /&gt;
&lt;br /&gt;
* $505 via PledgeBank [[User:SignpostMarv Martin|SignpostMarv Martin]] 17:43, 8 January 2007 (PST)&lt;br /&gt;
** $5 per pledger, 100 pledgers required by [[August 31]], [[2007]]&lt;br /&gt;
** See http://www.pledgebank.com/sl-pixelshader for more details&lt;br /&gt;
&lt;br /&gt;
== VLC instead of QuickTime ==&lt;br /&gt;
Swap out QuickTime for Video Lan Client&lt;br /&gt;
&lt;br /&gt;
* $510 via PledgeBank [[User:SignpostMarv Martin|SignpostMarv Martin]] 17:43, 8 January 2007 (PST)&lt;br /&gt;
** $10 per pledger, 50 pledgers required by [[August 31]], [[2007]]&lt;br /&gt;
** See http://www.pledgebank.com/sl-vlc-not-qt for more details&lt;br /&gt;
&lt;br /&gt;
== PNG Import/Export ==&lt;br /&gt;
&lt;br /&gt;
* $50 via PledgeBank [[User:SignpostMarv Martin|SignpostMarv Martin]] 17:43, 8 January 2007 (PST)&lt;br /&gt;
** $1 per pledger, 49 pledgers required by [[August 31]], [[2007]]&lt;br /&gt;
** See http://www.pledgebank.com/sl-png-support for more details&lt;br /&gt;
&lt;br /&gt;
== Improvements to the Snapshot feature ==&lt;br /&gt;
&lt;br /&gt;
* $100 via PledgeBank [[User:SignpostMarv Martin|SignpostMarv Martin]] 17:43, 8 January 2007 (PST)&lt;br /&gt;
** $5 per pledger, 19 pledgers required by [[August 31]], [[2007]]&lt;br /&gt;
** See http://www.pledgebank.com/sl-improve-snaps for more details&lt;br /&gt;
&lt;br /&gt;
[[Category:Bounties|Bounties (Community)]]&lt;br /&gt;
[[Category:Future Roundtables|Bounties (Community)]]&lt;/div&gt;</summary>
		<author><name>Fairlight Lake</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Compiling_the_viewer_(MSVS2005)&amp;diff=4604</id>
		<title>Compiling the viewer (MSVS2005)</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Compiling_the_viewer_(MSVS2005)&amp;diff=4604"/>
		<updated>2007-01-10T00:21:51Z</updated>

		<summary type="html">&lt;p&gt;Fairlight Lake: /* Cannot open include file: &amp;#039;windows.h&amp;#039; problem */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
By no means do I consider myself an expert. These are just the steps and fixes from myself, and the team in the irc.efnet.org channel #opensl.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
=== Basics ===&lt;br /&gt;
* Visual Studio 2005 (&#039;&#039;May work with MC++ 2005 Express&#039;&#039;)&lt;br /&gt;
** [http://www.microsoft.com/downloads/details.aspx?familyid=0BAF2B35-C656-4969-ACE8-E4C0C0716ADB&amp;amp;displaylang=en Microsoft Platform SDK]&lt;br /&gt;
** NEED NEWER DIRECTX [http://www.microsoft.com/downloads/details.aspx?FamilyID=9216652f-51e0-402e-b7b5-feb68d00f298&amp;amp;displaylang=en DirectX 9.0 SDK Update (Summer 2003)]&lt;br /&gt;
*** Note: If you have previously installed an older version of the DirectX 9.0 SDK, remove it first (from Control Panel -&amp;gt; Add or Remove Programs) before installing this version.  Installing the new SDK &amp;quot;on top&amp;quot; of an older version may cause problems.&lt;br /&gt;
** Set up the project globals:&lt;br /&gt;
*** Start Microsoft Visual Studio 2005&lt;br /&gt;
*** Go to Tools/Options/Projects/VC++ Directories&lt;br /&gt;
*** Make sure that the &#039;&#039;&#039;includes&#039;&#039;&#039;[[:Image:MSVS2005 Global Project Options Include Files.JPG|(&#039;&#039;&#039;screen shot&#039;&#039;&#039;)]] and &#039;&#039;&#039;libraries&#039;&#039;&#039;[[:Image:MSVS2005 Global Project Options Library Files.JPG|(&#039;&#039;&#039;screen shot&#039;&#039;&#039;)]] paths have the Platform SDK paths first, then the DirectX SDK paths, and then the Visual C++ paths.&lt;br /&gt;
*** If the DirectX SDK paths aren&#039;t present, add them to both &#039;&#039;&#039;includes&#039;&#039;&#039; and &#039;&#039;&#039;libraries&#039;&#039;&#039;.&lt;br /&gt;
* [http://www.activestate.com/Products/ActivePython/?mp=1 ActivePython 2.3x]&lt;br /&gt;
* [http://www.activestate.com/Products/ActivePerl/?mp=1 ActivePerl]&lt;br /&gt;
* [http://www.cygwin.com/ Cygwin]&lt;br /&gt;
** When you run the cygwin setup utility make sure you have selected to install patchutil, flex, and bison (all located under &amp;quot;devel&amp;quot;) which are not part of the default install.&lt;br /&gt;
&lt;br /&gt;
=== Fmod ===&lt;br /&gt;
* Download &amp;amp; extract [http://www.fmod.org/ifmoddownload.html fmod 3.75 api for win32].&lt;br /&gt;
* Copy &amp;quot;fmodapi375win\api\inc\fmod.h&amp;quot; to &amp;quot;libraries\include&amp;quot;&lt;br /&gt;
* Copy &amp;quot;fmodapi375win\api\inc\fmod_errors.h&amp;quot; to &amp;quot;libraries\include&amp;quot;&lt;br /&gt;
* Copy &amp;quot;fmodapi375win\api\lib\fmodvc.lib&amp;quot; to &amp;quot;libraries\i686-win32\lib_release&amp;quot;&lt;br /&gt;
* Copy &amp;quot;fmodapi375win\api\lib\fmodvc.lib&amp;quot; to &amp;quot;libraries\i686-win32\lib_debug&amp;quot;&lt;br /&gt;
* Copy &amp;quot;fmodapi375win\api\fmod.dll&amp;quot; to &amp;quot;indra\newview&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== gl ===&lt;br /&gt;
* Download [http://oss.sgi.com/projects/ogl-sample/sdk.html glext.h, glxext.h, and wglext.h]&lt;br /&gt;
* Copy them to &amp;quot;libraries\i686-win32\include\GL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Quicktime ===&lt;br /&gt;
* Download &amp;amp; install the [http://developer.apple.com/quicktime/download/ Quicktime SDK for Windows]&lt;br /&gt;
* Copy &amp;quot;QuicktimeSDK\Libraries\QTMLClient.lib&amp;quot; to &amp;quot;\libraries\i686-win32\lib_release&amp;quot;.&lt;br /&gt;
* Copy &amp;quot;QuicktimeSDK\Libraries\QTMLClient.lib&amp;quot; to &amp;quot;\libraries\i686-win32\lib_debug&amp;quot;.&lt;br /&gt;
* Copy the contents of &amp;quot;QuicktimeSDK\CIncludes&amp;quot; into &amp;quot;\libraries\i686-win32\include\quicktime&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== First Steps ==&lt;br /&gt;
=== Enviroment Setup ===&lt;br /&gt;
* Open the \indra\indra_complete\indra_complete.sln solution in Visual Studio 2005.&lt;br /&gt;
* Set newview to be the startup project.&lt;br /&gt;
* Right click on each project in the solution, with the exception of &#039;&#039;lscript_compile_fb&#039;&#039;, and follow these steps for each:&lt;br /&gt;
** 1. [[:Image:MSVS2005_Project_Property_Pages_Config_CPP_General.JPG|(&#039;&#039;&#039;screen shot&#039;&#039;&#039;)]] Under &#039;&#039;&#039;Configuration Properties&#039;&#039;&#039;, &#039;&#039;&#039;C/C++&#039;&#039;&#039;, &#039;&#039;&#039;General&#039;&#039;&#039;, change &#039;&#039;&#039;Treat Warnings As Errors&#039;&#039;&#039; to &amp;quot;&#039;&#039;No&#039;&#039;&amp;quot; &lt;br /&gt;
** 2. [[:Image:MSVS2005 Project Property Pages Config CPP Preprocessor.JPG |(&#039;&#039;&#039;screen shot&#039;&#039;&#039;)]] Under &#039;&#039;&#039;Configuration Properties&#039;&#039;&#039;, &#039;&#039;&#039;C/C++&#039;&#039;&#039;, &#039;&#039;&#039;PreProcessor&#039;&#039;&#039;, insert the line &amp;quot;&#039;&#039;;_CRT_SECURE_NO_DEPRECATE&#039;&#039;&amp;quot;&lt;br /&gt;
** 3. [[:Image:MSVS2005 Project Property Pages Config CPP Language.JPG|(&#039;&#039;&#039;screen shot&#039;&#039;&#039;)]] Under &#039;&#039;&#039;Configuration Properties&#039;&#039;&#039;, &#039;&#039;&#039;C/C++&#039;&#039;&#039;, &#039;&#039;&#039;Language&#039;&#039;&#039;, change &#039;&#039;&#039;Treat wchar_t as Built-in Type&#039;&#039;&#039; to &amp;quot;&#039;&#039;No (/Zc:wchar_t-)&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Code Editing ===&lt;br /&gt;
*In linden\indra\llcommon\llstringtable.h @ line 103&lt;br /&gt;
 --103: typedef std::hash_multimap&amp;lt;U32, LLStringTableEntry *&amp;gt; string_hash_t;&lt;br /&gt;
 ++103: typedef std&#039;&#039;&#039;&#039;&#039;ext&#039;&#039;&#039;&#039;&#039;::hash_multimap&amp;lt;U32, LLStringTableEntry *&amp;gt; string_hash_t;&lt;br /&gt;
&lt;br /&gt;
*In linden\indra\llcommon\llerror.h @ line 38, and linden\indra\win_updater\updater.cpp @ line 40&lt;br /&gt;
 ++#if LL_WINDOWS&lt;br /&gt;
 ++# if (_MSC_VER &amp;gt;= 1400)&lt;br /&gt;
 ++#  pragma warning(disable : 4996)&lt;br /&gt;
 ++# endif&lt;br /&gt;
 ++#endif&lt;br /&gt;
&lt;br /&gt;
*In linden\indra\llcommon\u64.cpp @ line 36&lt;br /&gt;
 --36: char *aptr = strpbrk(str,&amp;quot;0123456789&amp;quot;);&lt;br /&gt;
 ++36: &#039;&#039;&#039;&#039;&#039;const&#039;&#039;&#039;&#039;&#039; char *aptr = strpbrk(str,&amp;quot;0123456789&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\llprimitive\llprimitive.cpp @ line 1200&lt;br /&gt;
 --1200: exception_faces |= (1 &amp;lt;&amp;lt; i);&lt;br /&gt;
 ++1200: exception_faces |= ((U64)1 &amp;lt;&amp;lt; i);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\llui\llsliderctrl.cpp @ line 218&lt;br /&gt;
 --218: F32 displayed_value = (F32)(floor(getValueF32() * pow(10, mPrecision) + 0.5) / pow(10, mPrecision));&lt;br /&gt;
 ++218: F32 displayed_value = (F32)(floor(getValueF32() * pow(10&#039;&#039;&#039;&#039;&#039;.0&#039;&#039;&#039;&#039;&#039;, mPrecision) + 0.5) / pow(10&#039;&#039;&#039;&#039;&#039;.0&#039;&#039;&#039;&#039;&#039;, mPrecision));&lt;br /&gt;
&lt;br /&gt;
*linden\indra\newview\llstartup.cpp @ line 1459&lt;br /&gt;
 --1459: gUTCOffset = (server_utc_time - now);&lt;br /&gt;
 ++1459: gUTCOffset = (server_utc_time - &#039;&#039;&#039;&#039;&#039;(S32)&#039;&#039;&#039;&#039;&#039;now);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\newview\llpaneldirevents.cpp @ line 137, and line 169&lt;br /&gt;
 --137: internal_time = utc_to_pacific_time(utc_time, gPacificDaylightTime);&lt;br /&gt;
 ++137: internal_time = utc_to_pacific_time(&#039;&#039;&#039;&#039;&#039;(S32)&#039;&#039;&#039;&#039;&#039;utc_time, gPacificDaylightTime);&lt;br /&gt;
&lt;br /&gt;
 --169: internal_time = utc_to_pacific_time(utc_time, gPacificDaylightTime);&lt;br /&gt;
 ++169: internal_time = utc_to_pacific_time(&#039;&#039;&#039;&#039;&#039;(S32)&#039;&#039;&#039;&#039;&#039;utc_time, gPacificDaylightTime);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\newview\llfloaterreporter.cpp @ line 668&lt;br /&gt;
 --668: msg-&amp;gt;addU32Fast(_PREHASH_Time, mcd-&amp;gt;mTime);&lt;br /&gt;
 ++668: msg-&amp;gt;addU32Fast(_PREHASH_Time, &#039;&#039;&#039;&#039;&#039;(U32)&#039;&#039;&#039;&#039;&#039;mcd-&amp;gt;mTime);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\newview\llfloaterland.cpp @ line 2609, and line 2878&lt;br /&gt;
 --2609: S32 now = time(NULL);&lt;br /&gt;
 ++2609: S32 now = &#039;&#039;&#039;&#039;&#039;(S32)&#039;&#039;&#039;&#039;&#039;time(NULL);&lt;br /&gt;
&lt;br /&gt;
 --2878: S32 now = time(NULL);&lt;br /&gt;
 ++2878: S32 now = &#039;&#039;&#039;&#039;&#039;(S32)&#039;&#039;&#039;&#039;&#039;time(NULL);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\newview\llfloaterbump.cpp @ line 120&lt;br /&gt;
 --120: timep = utc_to_pacific_time(mcd-&amp;gt;mTime, gPacificDaylightTime);&lt;br /&gt;
 ++120: timep = utc_to_pacific_time(&#039;&#039;&#039;&#039;&#039;(S32)&#039;&#039;&#039;&#039;&#039;mcd-&amp;gt;mTime, gPacificDaylightTime);&lt;br /&gt;
&lt;br /&gt;
*linden\indra\newview\viewer.cpp @ line 2510&lt;br /&gt;
 --2510: srand(time(NULL));&lt;br /&gt;
 ++2510: srand(&#039;&#039;&#039;&#039;&#039;(U32)&#039;&#039;&#039;&#039;&#039;time(NULL));&lt;br /&gt;
 &lt;br /&gt;
*linden\indra\newview\llurlwhitelist.cpp @ line 43&lt;br /&gt;
 --43: mUrlListIter ( 0 )&lt;br /&gt;
 ++43: mUrlListIter ( &#039;&#039;&#039;&#039;&#039;LLUrlWhiteList::mUrlListIter&#039;&#039;&#039;&#039;&#039; )&lt;br /&gt;
&lt;br /&gt;
==== Misc. Code Editing ====&lt;br /&gt;
*linden\indra\test\llinventory.cpp @ line 1433 (&#039;&#039;&#039;Test doesn&#039;t need to be built...&#039;&#039;&#039;)&lt;br /&gt;
 ++1433: @ (S32)now&lt;br /&gt;
&lt;br /&gt;
=== Rebuild Boost Regex Library for Visual Studio C++ 8.0 ===&lt;br /&gt;
* Download &amp;amp; extract [http://sourceforge.net/project/showfiles.php?group_id=7586&amp;amp;package_id=8041 Boost] source for win32.&lt;br /&gt;
* Open the &#039;&#039;&#039;Visual Studio 2005 Command Prompt&#039;&#039;&#039;&lt;br /&gt;
* cd &amp;quot;boost_1_33_1\libs\regex\build\&amp;quot; &lt;br /&gt;
* run &amp;quot;&#039;&#039;&#039;nmake -fvc8.mak&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
* Get Coffee&lt;br /&gt;
* Copy &amp;quot;&#039;&#039;&#039;boost_1_33_1\libs\regex\build\vc80\libboost_regex-vc80-mt-s-1_33_1.lib&#039;&#039;&#039;&amp;quot; to &amp;quot;&#039;&#039;&#039;\linden\libraries\i686-win32\lib_release\libboost_regex-vc80-mt-s-1_33_1.lib&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
* Copy &amp;quot;&#039;&#039;&#039;boost_1_33_1\libs\regex\build\vc80\libboost_regex-vc80-mt-s-1_33_1.lib&#039;&#039;&#039;&amp;quot; to &amp;quot;&#039;&#039;&#039;\linden\libraries\i686-win32\lib_debug\libboost_regex-vc80-mt-s-1_33_1.lib&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
* Right click on the &#039;&#039;newview&#039;&#039; project, and select &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
* [[:Image:MSVS2005 newview Property Pages Config Linker Input.JPG|(&#039;&#039;&#039;screen shot&#039;&#039;&#039;)]] Under &#039;&#039;&#039;Configuration Properties&#039;&#039;&#039;, &#039;&#039;&#039;Linker&#039;&#039;&#039;, &#039;&#039;&#039;Input&#039;&#039;&#039; &lt;br /&gt;
** find and change &amp;quot;&#039;&#039;libboost_regex-vc71-mt-s.lib&#039;&#039;&amp;quot;[[:Image:MSVS2005 newview Property Pages Config Linker Input.JPG|(&#039;&#039;&#039;screen shot&#039;&#039;&#039;)]] to &amp;quot;&#039;&#039;libboost_regex-vc80-mt-s-1_33_1.lib&#039;&#039;&amp;quot;[[:Image:MSVS2005 newview Property Pages Config Linker Input List Changed.JPG|(&#039;&#039;&#039;screen shot&#039;&#039;&#039;)]] in the &#039;&#039;Additional Dependencies&#039;&#039;&lt;br /&gt;
* Done!&lt;br /&gt;
&lt;br /&gt;
==== Cannot open include file: &#039;windows.h&#039; problem ====&lt;br /&gt;
----&lt;br /&gt;
If you run into this problem:&lt;br /&gt;
 ..\..\..\boost/regex/v4/fileiter.hpp(44) : fatal error C1083: Cannot open include file: &#039;windows.h&#039;: No such file or directory&lt;br /&gt;
Fix it with this: (thanks Fairlight!)&lt;br /&gt;
 set INCLUDE=C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include;%INCLUDE%&lt;br /&gt;
 set LIB=C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib;%LIB%&lt;br /&gt;
&lt;br /&gt;
=== Disable llMozLib ===&lt;br /&gt;
*linden\indra\llcommon\llpreprocessor.h @ line 51&lt;br /&gt;
 --51: #define LL_LIBXUL_ENABLED		1&lt;br /&gt;
 ++51: #define LL_LIBXUL_ENABLED		&#039;&#039;&#039;&#039;&#039;0&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Ready, Set, Build! ===&lt;br /&gt;
* Build either ReleaseNoOpt (for debugging) or ReleaseForDownload (for production).&lt;br /&gt;
* newview.exe will be built in \indra\newview\ReleaseNoOpt or \indra\newview\ReleaseForDownload&lt;br /&gt;
* Create a shortcut to newview, and change the start location to \indra\newview\ (all the .dll will be found there.)&lt;/div&gt;</summary>
		<author><name>Fairlight Lake</name></author>
	</entry>
</feed>