Merge branch 'future' of https://github.com/Shyotl/SingularityViewer
This commit is contained in:
@@ -675,32 +675,41 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade
|
|||||||
{
|
{
|
||||||
LL_WARNS("ShaderLoading") << "GL ERROR in glCreateShaderObjectARB: " << error << LL_ENDL;
|
LL_WARNS("ShaderLoading") << "GL ERROR in glCreateShaderObjectARB: " << error << LL_ENDL;
|
||||||
glDeleteObjectARB(ret); //no longer need handle
|
glDeleteObjectARB(ret); //no longer need handle
|
||||||
|
ret=0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//load source
|
//load source
|
||||||
glShaderSourceARB(ret, count, (const GLcharARB**) text, NULL);
|
if(ret)
|
||||||
|
|
||||||
if (gDebugGL)
|
|
||||||
{
|
{
|
||||||
error = glGetError();
|
glShaderSourceARB(ret, count, (const GLcharARB**) text, NULL);
|
||||||
if (error != GL_NO_ERROR)
|
|
||||||
|
if (gDebugGL)
|
||||||
{
|
{
|
||||||
LL_WARNS("ShaderLoading") << "GL ERROR in glShaderSourceARB: " << error << LL_ENDL;
|
error = glGetError();
|
||||||
glDeleteObjectARB(ret); //no longer need handle
|
if (error != GL_NO_ERROR)
|
||||||
|
{
|
||||||
|
LL_WARNS("ShaderLoading") << "GL ERROR in glShaderSourceARB: " << error << LL_ENDL;
|
||||||
|
glDeleteObjectARB(ret); //no longer need handle
|
||||||
|
ret=0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//compile source
|
//compile source
|
||||||
glCompileShaderARB(ret);
|
if(ret)
|
||||||
|
|
||||||
if (gDebugGL)
|
|
||||||
{
|
{
|
||||||
error = glGetError();
|
glCompileShaderARB(ret);
|
||||||
if (error != GL_NO_ERROR)
|
|
||||||
|
if (gDebugGL)
|
||||||
{
|
{
|
||||||
LL_WARNS("ShaderLoading") << "GL ERROR in glCompileShaderARB: " << error << LL_ENDL;
|
error = glGetError();
|
||||||
glDeleteObjectARB(ret); //no longer need handle
|
if (error != GL_NO_ERROR)
|
||||||
|
{
|
||||||
|
LL_WARNS("ShaderLoading") << "GL ERROR in glCompileShaderARB: " << error << LL_ENDL;
|
||||||
|
glDeleteObjectARB(ret); //no longer need handle
|
||||||
|
ret=0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -733,13 +742,12 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade
|
|||||||
ret = 0;
|
ret = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(ret)
|
||||||
|
dumpObjectLog(ret,false);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
ret = 0;
|
|
||||||
}
|
|
||||||
static const LLCachedControl<bool> dump_raw_shaders("ShyotlDumpRawShaders",false);
|
static const LLCachedControl<bool> dump_raw_shaders("ShyotlDumpRawShaders",false);
|
||||||
if(dump_raw_shaders || ret)
|
if(dump_raw_shaders || !ret)
|
||||||
{
|
{
|
||||||
std::stringstream ostr;
|
std::stringstream ostr;
|
||||||
for (GLuint i = 0; i < count; i++)
|
for (GLuint i = 0; i < count; i++)
|
||||||
|
|||||||
@@ -2155,6 +2155,8 @@ void LLAgentCamera::changeCameraToMouselook(BOOL animate)
|
|||||||
|
|
||||||
if (mCameraMode != CAMERA_MODE_MOUSELOOK)
|
if (mCameraMode != CAMERA_MODE_MOUSELOOK)
|
||||||
{
|
{
|
||||||
|
mMouselookTimer.reset();
|
||||||
|
|
||||||
gFocusMgr.setKeyboardFocus( NULL );
|
gFocusMgr.setKeyboardFocus( NULL );
|
||||||
if (gSavedSettings.getBOOL("AONoStandsInMouselook")) LLFloaterAO::stopMotion(LLFloaterAO::getCurrentStandId(), FALSE,TRUE);
|
if (gSavedSettings.getBOOL("AONoStandsInMouselook")) LLFloaterAO::stopMotion(LLFloaterAO::getCurrentStandId(), FALSE,TRUE);
|
||||||
|
|
||||||
@@ -2802,7 +2804,16 @@ BOOL LLAgentCamera::setLookAt(ELookAtType target_type, LLViewerObject *object, L
|
|||||||
return mLookAt->setLookAt(target_type, object, position);
|
return mLookAt->setLookAt(target_type, object, position);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLAgentCamera::lookAtObject(LLUUID object_id, ECameraPosition camera_pos)
|
//-----------------------------------------------------------------------------
|
||||||
|
// lookAtLastChat()
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
void LLAgentCamera::lookAtLastChat()
|
||||||
|
{
|
||||||
|
lookAtObject(gAgent.getLastChatter());
|
||||||
|
}
|
||||||
|
|
||||||
|
//Pulled implementation out of lookAtLastChat and adapted to work for for general objects
|
||||||
|
void LLAgentCamera::lookAtObject(const LLUUID &object_id, bool self)
|
||||||
{
|
{
|
||||||
// Block if camera is animating or not in normal third person camera mode
|
// Block if camera is animating or not in normal third person camera mode
|
||||||
if (mCameraAnimating || !cameraThirdPerson())
|
if (mCameraAnimating || !cameraThirdPerson())
|
||||||
@@ -2811,125 +2822,13 @@ void LLAgentCamera::lookAtObject(LLUUID object_id, ECameraPosition camera_pos)
|
|||||||
}
|
}
|
||||||
|
|
||||||
LLViewerObject *chatter = gObjectList.findObject(object_id);
|
LLViewerObject *chatter = gObjectList.findObject(object_id);
|
||||||
if (chatter)
|
|
||||||
{
|
|
||||||
LLVector3 delta_pos;
|
|
||||||
if (chatter->isAvatar())
|
|
||||||
{
|
|
||||||
LLVOAvatar *chatter_av = (LLVOAvatar*)chatter;
|
|
||||||
if (!gAgentAvatarp && chatter_av->mHeadp)
|
|
||||||
{
|
|
||||||
delta_pos = chatter_av->mHeadp->getWorldPosition() - gAgentAvatarp->mHeadp->getWorldPosition();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
delta_pos = chatter->getPositionAgent() - gAgent.getPositionAgent();
|
|
||||||
}
|
|
||||||
delta_pos.normVec();
|
|
||||||
|
|
||||||
gAgent.setControlFlags(AGENT_CONTROL_STOP);
|
|
||||||
|
|
||||||
changeCameraToThirdPerson();
|
|
||||||
|
|
||||||
LLVector3 new_camera_pos = gAgentAvatarp->mHeadp->getWorldPosition();
|
|
||||||
LLVector3 left = delta_pos % LLVector3::z_axis;
|
|
||||||
left.normVec();
|
|
||||||
LLVector3 up = left % delta_pos;
|
|
||||||
up.normVec();
|
|
||||||
new_camera_pos -= delta_pos * 0.4f;
|
|
||||||
new_camera_pos += left * 0.3f;
|
|
||||||
new_camera_pos += up * 0.2f;
|
|
||||||
|
|
||||||
F32 radius = chatter_av->getVObjRadius();
|
|
||||||
LLVector3d view_dist(radius, radius, 0.0f);
|
|
||||||
|
|
||||||
if (chatter_av->mHeadp)
|
|
||||||
{
|
|
||||||
setFocusGlobal(gAgent.getPosGlobalFromAgent(chatter_av->mHeadp->getWorldPosition()), object_id);
|
|
||||||
mCameraFocusOffsetTarget = gAgent.getPosGlobalFromAgent(new_camera_pos) - gAgent.getPosGlobalFromAgent(chatter_av->mHeadp->getWorldPosition());
|
|
||||||
|
|
||||||
switch(camera_pos)
|
|
||||||
{
|
|
||||||
case CAMERA_POSITION_SELF:
|
|
||||||
mCameraFocusOffsetTarget = gAgent.getPosGlobalFromAgent(new_camera_pos) - gAgent.getPosGlobalFromAgent(chatter_av->mHeadp->getWorldPosition());
|
|
||||||
break;
|
|
||||||
case CAMERA_POSITION_OBJECT:
|
|
||||||
mCameraFocusOffsetTarget = view_dist;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
setFocusGlobal(chatter->getPositionGlobal(), object_id);
|
|
||||||
mCameraFocusOffsetTarget = gAgent.getPosGlobalFromAgent(new_camera_pos) - chatter->getPositionGlobal();
|
|
||||||
|
|
||||||
switch(camera_pos)
|
|
||||||
{
|
|
||||||
case CAMERA_POSITION_SELF:
|
|
||||||
mCameraFocusOffsetTarget = gAgent.getPosGlobalFromAgent(new_camera_pos) - chatter->getPositionGlobal();
|
|
||||||
break;
|
|
||||||
case CAMERA_POSITION_OBJECT:
|
|
||||||
mCameraFocusOffsetTarget = view_dist;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
setFocusOnAvatar(FALSE, TRUE);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
delta_pos = chatter->getRenderPosition() - gAgent.getPositionAgent();
|
|
||||||
delta_pos.normVec();
|
|
||||||
|
|
||||||
gAgent.setControlFlags(AGENT_CONTROL_STOP);
|
|
||||||
|
|
||||||
changeCameraToThirdPerson();
|
|
||||||
|
|
||||||
LLVector3 new_camera_pos = gAgentAvatarp->mHeadp->getWorldPosition();
|
|
||||||
LLVector3 left = delta_pos % LLVector3::z_axis;
|
|
||||||
left.normVec();
|
|
||||||
LLVector3 up = left % delta_pos;
|
|
||||||
up.normVec();
|
|
||||||
new_camera_pos -= delta_pos * 0.4f;
|
|
||||||
new_camera_pos += left * 0.3f;
|
|
||||||
new_camera_pos += up * 0.2f;
|
|
||||||
|
|
||||||
setFocusGlobal(chatter->getPositionGlobal(), object_id);
|
|
||||||
|
|
||||||
switch(camera_pos)
|
|
||||||
{
|
|
||||||
case CAMERA_POSITION_SELF:
|
|
||||||
mCameraFocusOffsetTarget = gAgent.getPosGlobalFromAgent(new_camera_pos) - chatter->getPositionGlobal();
|
|
||||||
break;
|
|
||||||
case CAMERA_POSITION_OBJECT:
|
|
||||||
F32 radius = chatter->getVObjRadius();
|
|
||||||
LLVector3d view_dist(radius, radius, 0.0f);
|
|
||||||
mCameraFocusOffsetTarget = view_dist;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
setFocusOnAvatar(FALSE, TRUE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
// lookAtLastChat()
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
void LLAgentCamera::lookAtLastChat()
|
|
||||||
{
|
|
||||||
// Block if camera is animating or not in normal third person camera mode
|
|
||||||
if (mCameraAnimating || !cameraThirdPerson())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
LLViewerObject *chatter = gObjectList.findObject(gAgent.getLastChatter());
|
|
||||||
if (!chatter)
|
if (!chatter)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
LLVector3 delta_pos;
|
LLVector3 delta_pos;
|
||||||
|
F32 radius = chatter->getVObjRadius();
|
||||||
if (chatter->isAvatar())
|
if (chatter->isAvatar())
|
||||||
{
|
{
|
||||||
LLVOAvatar *chatter_av = (LLVOAvatar*)chatter;
|
LLVOAvatar *chatter_av = (LLVOAvatar*)chatter;
|
||||||
@@ -2960,15 +2859,21 @@ void LLAgentCamera::lookAtLastChat()
|
|||||||
|
|
||||||
if (chatter_av->mHeadp)
|
if (chatter_av->mHeadp)
|
||||||
{
|
{
|
||||||
setFocusGlobal(gAgent.getPosGlobalFromAgent(chatter_av->mHeadp->getWorldPosition()), gAgent.getLastChatter());
|
setFocusGlobal(gAgent.getPosGlobalFromAgent(chatter_av->mHeadp->getWorldPosition()), object_id);
|
||||||
mCameraFocusOffsetTarget = gAgent.getPosGlobalFromAgent(new_camera_pos) - gAgent.getPosGlobalFromAgent(chatter_av->mHeadp->getWorldPosition());
|
if(self)
|
||||||
|
mCameraFocusOffsetTarget = gAgent.getPosGlobalFromAgent(new_camera_pos) - gAgent.getPosGlobalFromAgent(chatter_av->mHeadp->getWorldPosition());
|
||||||
|
else
|
||||||
|
mCameraFocusOffsetTarget.setVec(radius, radius, 0.f);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
setFocusGlobal(chatter->getPositionGlobal(), gAgent.getLastChatter());
|
setFocusGlobal(chatter->getPositionGlobal(), object_id);
|
||||||
mCameraFocusOffsetTarget = gAgent.getPosGlobalFromAgent(new_camera_pos) - chatter->getPositionGlobal();
|
if(self)
|
||||||
|
mCameraFocusOffsetTarget = gAgent.getPosGlobalFromAgent(new_camera_pos) - chatter->getPositionGlobal();
|
||||||
|
else
|
||||||
|
mCameraFocusOffsetTarget.setVec(radius, radius, 0.f);
|
||||||
}
|
}
|
||||||
setFocusOnAvatar(FALSE, TRUE);
|
setFocusOnAvatar(FALSE, TRUE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -2991,12 +2896,17 @@ void LLAgentCamera::lookAtLastChat()
|
|||||||
//setFocusOnAvatar(FALSE, FALSE);
|
//setFocusOnAvatar(FALSE, FALSE);
|
||||||
|
|
||||||
|
|
||||||
setFocusGlobal(chatter->getPositionGlobal(), gAgent.getLastChatter());
|
setFocusGlobal(chatter->getPositionGlobal(), object_id);
|
||||||
mCameraFocusOffsetTarget = gAgent.getPosGlobalFromAgent(new_camera_pos) - chatter->getPositionGlobal();
|
if(self)
|
||||||
|
mCameraFocusOffsetTarget = gAgent.getPosGlobalFromAgent(new_camera_pos) - chatter->getPositionGlobal();
|
||||||
|
else
|
||||||
|
mCameraFocusOffsetTarget.setVec(radius, radius, 0.f);
|
||||||
|
|
||||||
setFocusOnAvatar(FALSE, TRUE);
|
setFocusOnAvatar(FALSE, TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
BOOL LLAgentCamera::setPointAt(EPointAtType target_type, LLViewerObject *object, LLVector3 position)
|
BOOL LLAgentCamera::setPointAt(EPointAtType target_type, LLViewerObject *object, LLVector3 position)
|
||||||
{
|
{
|
||||||
// disallow pointing at attachments and avatars
|
// disallow pointing at attachments and avatars
|
||||||
|
|||||||
@@ -46,11 +46,6 @@ enum ECameraMode
|
|||||||
CAMERA_MODE_CUSTOMIZE_AVATAR,
|
CAMERA_MODE_CUSTOMIZE_AVATAR,
|
||||||
CAMERA_MODE_FOLLOW
|
CAMERA_MODE_FOLLOW
|
||||||
};
|
};
|
||||||
typedef enum e_camera_position
|
|
||||||
{
|
|
||||||
CAMERA_POSITION_SELF, /** Camera positioned at our position */
|
|
||||||
CAMERA_POSITION_OBJECT /** Camera positioned at observed object's position */
|
|
||||||
} ECameraPosition;
|
|
||||||
|
|
||||||
//------------------------------------------------------------------------
|
//------------------------------------------------------------------------
|
||||||
// LLAgentCamera
|
// LLAgentCamera
|
||||||
@@ -207,9 +202,9 @@ private:
|
|||||||
public:
|
public:
|
||||||
void updateLookAt(const S32 mouse_x, const S32 mouse_y);
|
void updateLookAt(const S32 mouse_x, const S32 mouse_y);
|
||||||
BOOL setLookAt(ELookAtType target_type, LLViewerObject *object = NULL, LLVector3 position = LLVector3::zero);
|
BOOL setLookAt(ELookAtType target_type, LLViewerObject *object = NULL, LLVector3 position = LLVector3::zero);
|
||||||
void lookAtObject(LLUUID object_id, ECameraPosition camera_pos);
|
|
||||||
ELookAtType getLookAtType();
|
ELookAtType getLookAtType();
|
||||||
void lookAtLastChat();
|
void lookAtLastChat();
|
||||||
|
void lookAtObject(const LLUUID &object_id, bool self=true);
|
||||||
void slamLookAt(const LLVector3 &look_at); // Set the physics data
|
void slamLookAt(const LLVector3 &look_at); // Set the physics data
|
||||||
BOOL setPointAt(EPointAtType target_type, LLViewerObject *object = NULL, LLVector3 position = LLVector3::zero);
|
BOOL setPointAt(EPointAtType target_type, LLViewerObject *object = NULL, LLVector3 position = LLVector3::zero);
|
||||||
EPointAtType getPointAtType();
|
EPointAtType getPointAtType();
|
||||||
@@ -370,6 +365,11 @@ private:
|
|||||||
** **
|
** **
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
|
//Custom
|
||||||
|
public:
|
||||||
|
F32 getMouseLookDuration() const { return mMouselookTimer.getElapsedTimeF32(); }
|
||||||
|
private:
|
||||||
|
LLTimer mMouselookTimer;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern LLAgentCamera gAgentCamera;
|
extern LLAgentCamera gAgentCamera;
|
||||||
|
|||||||
@@ -1044,7 +1044,7 @@ void LLFloaterAvatarList::focusOnCurrent()
|
|||||||
{
|
{
|
||||||
removeFocusFromAll();
|
removeFocusFromAll();
|
||||||
entry->setFocus(TRUE);
|
entry->setFocus(TRUE);
|
||||||
gAgentCamera.lookAtObject(mFocusedAvatar, CAMERA_POSITION_OBJECT);
|
gAgentCamera.lookAtObject(mFocusedAvatar, false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1084,7 +1084,7 @@ void LLFloaterAvatarList::focusOnPrev(BOOL marked_only)
|
|||||||
removeFocusFromAll();
|
removeFocusFromAll();
|
||||||
prev->setFocus(TRUE);
|
prev->setFocus(TRUE);
|
||||||
mFocusedAvatar = prev->getID();
|
mFocusedAvatar = prev->getID();
|
||||||
gAgentCamera.lookAtObject(mFocusedAvatar, CAMERA_POSITION_OBJECT);
|
gAgentCamera.lookAtObject(mFocusedAvatar, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1129,7 +1129,7 @@ void LLFloaterAvatarList::focusOnNext(BOOL marked_only)
|
|||||||
removeFocusFromAll();
|
removeFocusFromAll();
|
||||||
next->setFocus(TRUE);
|
next->setFocus(TRUE);
|
||||||
mFocusedAvatar = next->getID();
|
mFocusedAvatar = next->getID();
|
||||||
gAgentCamera.lookAtObject(mFocusedAvatar, CAMERA_POSITION_OBJECT);
|
gAgentCamera.lookAtObject(mFocusedAvatar, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -370,9 +370,21 @@ void LLViewerShaderMgr::setShaders()
|
|||||||
}
|
}
|
||||||
|
|
||||||
//setup preprocessor definitions
|
//setup preprocessor definitions
|
||||||
|
LLShaderMgr::instance()->mDefinitions.clear();
|
||||||
LLShaderMgr::instance()->mDefinitions["samples"] = llformat("%d", gSavedSettings.getU32("RenderFSAASamples")/*gGLManager.getNumFBOFSAASamples(gSavedSettings.getU32("RenderFSAASamples"))*/);
|
LLShaderMgr::instance()->mDefinitions["samples"] = llformat("%d", gSavedSettings.getU32("RenderFSAASamples")/*gGLManager.getNumFBOFSAASamples(gSavedSettings.getU32("RenderFSAASamples"))*/);
|
||||||
LLShaderMgr::instance()->mDefinitions["NUM_TEX_UNITS"] = llformat("%d", gGLManager.mNumTextureImageUnits);
|
LLShaderMgr::instance()->mDefinitions["NUM_TEX_UNITS"] = llformat("%d", gGLManager.mNumTextureImageUnits);
|
||||||
|
if(gGLManager.mGLVersion >= 3.f)
|
||||||
|
{
|
||||||
|
LLShaderMgr::instance()->mDefinitions["texture2D"] = "texture";
|
||||||
|
LLShaderMgr::instance()->mDefinitions["textureCube"] = "texture";
|
||||||
|
LLShaderMgr::instance()->mDefinitions["texture2DLod"] = "textureLod";
|
||||||
|
LLShaderMgr::instance()->mDefinitions["texture2DRect"] = "texture";
|
||||||
|
LLShaderMgr::instance()->mDefinitions["shadow2D"] = "texture";
|
||||||
|
LLShaderMgr::instance()->mDefinitions["shadow2DRect"] = "texture";
|
||||||
|
LLShaderMgr::instance()->mDefinitions["shadow2DProj"] = "textureProj";
|
||||||
|
LLShaderMgr::instance()->mDefinitions["ftransform()"] = "gl_ModelViewProjectionMatrix * gl_Vertex";
|
||||||
|
}
|
||||||
|
|
||||||
initAttribsAndUniforms();
|
initAttribsAndUniforms();
|
||||||
gPipeline.releaseGLBuffers();
|
gPipeline.releaseGLBuffers();
|
||||||
|
|
||||||
|
|||||||
@@ -4501,6 +4501,20 @@ void LLViewerWindow::destroyWindow()
|
|||||||
|
|
||||||
void LLViewerWindow::drawMouselookInstructions()
|
void LLViewerWindow::drawMouselookInstructions()
|
||||||
{
|
{
|
||||||
|
static const F32 INSTRUCTIONS_OPAQUE_TIME = 10.f;
|
||||||
|
static const F32 INSTRUCTIONS_FADE_TIME = 5.f;
|
||||||
|
|
||||||
|
F32 mouselook_duration = gAgentCamera.getMouseLookDuration();
|
||||||
|
if( mouselook_duration >= (INSTRUCTIONS_OPAQUE_TIME+INSTRUCTIONS_OPAQUE_TIME) )
|
||||||
|
return;
|
||||||
|
|
||||||
|
F32 alpha = 1.f;
|
||||||
|
|
||||||
|
if( mouselook_duration > INSTRUCTIONS_OPAQUE_TIME) //instructions are fading
|
||||||
|
{
|
||||||
|
alpha = (F32) sqrt(1.f-pow(((mouselook_duration-INSTRUCTIONS_OPAQUE_TIME)/INSTRUCTIONS_FADE_TIME),2.f));
|
||||||
|
}
|
||||||
|
|
||||||
// Draw instructions for mouselook ("Press ESC to leave Mouselook" in a box at the top of the screen.)
|
// Draw instructions for mouselook ("Press ESC to leave Mouselook" in a box at the top of the screen.)
|
||||||
const std::string instructions = "Press ESC to leave Mouselook.";
|
const std::string instructions = "Press ESC to leave Mouselook.";
|
||||||
const LLFontGL* font = LLResMgr::getInstance()->getRes( LLFONT_SANSSERIF );
|
const LLFontGL* font = LLResMgr::getInstance()->getRes( LLFONT_SANSSERIF );
|
||||||
@@ -4515,7 +4529,7 @@ void LLViewerWindow::drawMouselookInstructions()
|
|||||||
|
|
||||||
{
|
{
|
||||||
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
|
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
|
||||||
gGL.color4f( 0.9f, 0.9f, 0.9f, 1.0f );
|
gGL.color4f( 0.9f, 0.9f, 0.9f, alpha );
|
||||||
gl_rect_2d( instructions_rect );
|
gl_rect_2d( instructions_rect );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4523,7 +4537,7 @@ void LLViewerWindow::drawMouselookInstructions()
|
|||||||
instructions, 0,
|
instructions, 0,
|
||||||
instructions_rect.mLeft + INSTRUCTIONS_PAD,
|
instructions_rect.mLeft + INSTRUCTIONS_PAD,
|
||||||
instructions_rect.mTop - INSTRUCTIONS_PAD,
|
instructions_rect.mTop - INSTRUCTIONS_PAD,
|
||||||
LLColor4( 0.0f, 0.0f, 0.0f, 1.f ),
|
LLColor4( 0.0f, 0.0f, 0.0f, alpha ),
|
||||||
LLFontGL::LEFT, LLFontGL::TOP);
|
LLFontGL::LEFT, LLFontGL::TOP);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user