diff options
| author | Oz Linden <oz@lindenlab.com> | 2011-05-26 11:30:39 -0400 | 
|---|---|---|
| committer | Oz Linden <oz@lindenlab.com> | 2011-05-26 11:30:39 -0400 | 
| commit | 0eb13bb6824d520fe66e85cba9168a94f4d27635 (patch) | |
| tree | 83fee739a6deb3d077625ed3b06fdefa96606d3c | |
| parent | fb9ef6233125d55d47104333d6b0062509850ff4 (diff) | |
storm-1189: remove more of the code for classic clouds
| -rw-r--r-- | indra/newview/CMakeLists.txt | 87 | ||||
| -rw-r--r-- | indra/newview/llcloud.cpp | 538 | ||||
| -rw-r--r-- | indra/newview/llcloud.h | 199 | ||||
| -rw-r--r-- | indra/newview/lldrawable.cpp | 5 | ||||
| -rw-r--r-- | indra/newview/lldrawpool.cpp | 1 | ||||
| -rw-r--r-- | indra/newview/lldrawpoolalpha.cpp | 1 | ||||
| -rw-r--r-- | indra/newview/lldrawpoolclouds.cpp | 97 | ||||
| -rw-r--r-- | indra/newview/lldrawpoolclouds.h | 54 | ||||
| -rw-r--r-- | indra/newview/llspatialpartition.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llspatialpartition.h | 7 | ||||
| -rw-r--r-- | indra/newview/llstartup.cpp | 6 | ||||
| -rw-r--r-- | indra/newview/llviewerobject.cpp | 3 | ||||
| -rw-r--r-- | indra/newview/llviewerobject.h | 2 | ||||
| -rw-r--r-- | indra/newview/llviewerobjectlist.cpp | 3 | ||||
| -rw-r--r-- | indra/newview/llviewerregion.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llviewerregion.h | 1 | ||||
| -rw-r--r-- | indra/newview/llvoclouds.cpp | 293 | ||||
| -rw-r--r-- | indra/newview/llvoclouds.h | 79 | ||||
| -rw-r--r-- | indra/newview/llworld.cpp | 70 | 
19 files changed, 45 insertions, 1405 deletions
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 5a9ee92b0c..e8ee43d7a0 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -517,7 +517,7 @@ set(viewer_SOURCE_FILES      llviewerfloaterreg.cpp      llviewerfoldertype.cpp      llviewergenericmessage.cpp -    llviewergesture.cpp     +    llviewergesture.cpp      llviewerhelp.cpp      llviewerhelputil.cpp      llviewerhome.cpp @@ -564,7 +564,6 @@ set(viewer_SOURCE_FILES      llvoavatardefines.cpp      llvoavatarself.cpp      llvocache.cpp -    llvoclouds.cpp      llvograss.cpp      llvoground.cpp      llvoicecallhandler.cpp @@ -691,7 +690,6 @@ set(viewer_HEADER_FILES      lldrawpoolalpha.h      lldrawpoolavatar.h      lldrawpoolbump.h -    lldrawpoolclouds.h      lldrawpoolground.h      lldrawpoolsimple.h      lldrawpoolsky.h @@ -995,7 +993,7 @@ set(viewer_HEADER_FILES      llsurface.h      llsurfacepatch.h      llsyswellitem.h -    llsyswellwindow.h     +    llsyswellwindow.h      lltable.h      llteleporthistory.h      llteleporthistorystorage.h @@ -1067,7 +1065,7 @@ set(viewer_HEADER_FILES      llviewerfloaterreg.h      llviewerfoldertype.h      llviewergenericmessage.h -    llviewergesture.h     +    llviewergesture.h      llviewerhelp.h      llviewerhome.h      llviewerinventory.h @@ -1111,7 +1109,6 @@ set(viewer_HEADER_FILES      llvoavatardefines.h      llvoavatarself.h      llvocache.h -    llvoclouds.h      llvograss.h      llvoground.h      llvoicechannel.h @@ -1223,7 +1220,7 @@ if (WINDOWS)      # precompiled header configuration      # llviewerprecompiledheaders.cpp generates      # the .pch file. -    # All sources added to viewer_SOURCE_FILES  +    # All sources added to viewer_SOURCE_FILES      # at this point use it.      if(USE_PRECOMPILED_HEADERS)          set_source_files_properties(llviewerprecompiledheaders.cpp @@ -1232,7 +1229,7 @@ if (WINDOWS)              )          set(viewer_SOURCE_FILES "${viewer_SOURCE_FILES}" llviewerprecompiledheaders.cpp)      endif(USE_PRECOMPILED_HEADERS) -     +      # Add resource files to the project.      # viewerRes.rc is the only buildable file, but      # the rest are all dependencies of it. @@ -1277,8 +1274,8 @@ if (WINDOWS)      set_source_files_properties(${viewer_RESOURCE_FILES}                                  PROPERTIES HEADER_FILE_ONLY TRUE) -    set(viewer_RESOURCE_FILES  -        res/viewerRes.rc  +    set(viewer_RESOURCE_FILES +        res/viewerRes.rc          ${viewer_RESOURCE_FILES}          ) @@ -1286,7 +1283,7 @@ if (WINDOWS)      if (NOT STANDALONE)          list(APPEND viewer_SOURCE_FILES ${viewer_RESOURCE_FILES}) -    endif (NOT STANDALONE)       +    endif (NOT STANDALONE)      find_library(DINPUT_LIBRARY dinput8 ${DIRECTX_LIBRARY_DIR})      find_library(DXGUID_LIBRARY dxguid ${DIRECTX_LIBRARY_DIR}) @@ -1495,7 +1492,7 @@ if (WINDOWS)          ${SHARED_LIB_STAGING_DIR}/Debug/libtcmalloc_minimal-debug.dll          )       endif(USE_GOOGLE_PERFTOOLS) -  +      set(COPY_INPUT_DEPENDENCIES        # The following commented dependencies are determined at variably at build time. Can't do this here. @@ -1593,24 +1590,24 @@ if (WINDOWS)          --grid=${GRID}          --source=${CMAKE_CURRENT_SOURCE_DIR}          --touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/copy_touched.bat -      DEPENDS  +      DEPENDS          ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py          stage_third_party_libs          ${COPY_INPUT_DEPENDENCIES}        COMMENT "Performing viewer_manifest copy"        ) -     -    add_custom_target(copy_w_viewer_manifest ALL DEPENDS ${CMAKE_CFG_INTDIR}/copy_touched.bat)  + +    add_custom_target(copy_w_viewer_manifest ALL DEPENDS ${CMAKE_CFG_INTDIR}/copy_touched.bat)      add_dependencies(${VIEWER_BINARY_NAME} stage_third_party_libs llcommon copy_w_viewer_manifest) -     +      if (EXISTS ${CMAKE_SOURCE_DIR}/copy_win_scripts)        add_dependencies(${VIEWER_BINARY_NAME} copy_win_scripts)      endif (EXISTS ${CMAKE_SOURCE_DIR}/copy_win_scripts) -         -    add_dependencies(${VIEWER_BINARY_NAME}  -      SLPlugin  -      windows-updater  + +    add_dependencies(${VIEWER_BINARY_NAME} +      SLPlugin +      windows-updater        windows-crash-logger        ) @@ -1620,7 +1617,7 @@ if (WINDOWS)              TARGET ${VIEWER_BINARY_NAME} POST_BUILD              COMMAND ${CMAKE_SOURCE_DIR}/tools/vstool/vstool.exe              ARGS -              --solution  +              --solution                ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}.sln                --workingdir                ${VIEWER_BINARY_NAME} @@ -1638,12 +1635,12 @@ if (WINDOWS)            ${CMAKE_CURRENT_SOURCE_DIR}/..            ${CMAKE_CURRENT_BINARY_DIR}            ${CMAKE_CFG_INTDIR} -        DEPENDS  -          lleventhost  +        DEPENDS +          lleventhost            ${EVENT_HOST_SCRIPTS}            ${CMAKE_CURRENT_SOURCE_DIR}/event_host_manifest.py          ) -     +        add_custom_command(          OUTPUT ${CMAKE_CFG_INTDIR}/touched.bat          COMMAND ${PYTHON_EXECUTABLE} @@ -1659,15 +1656,15 @@ if (WINDOWS)            --login_channel=${VIEWER_LOGIN_CHANNEL}            --source=${CMAKE_CURRENT_SOURCE_DIR}            --touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/touched.bat -        DEPENDS  -            ${VIEWER_BINARY_NAME}  +        DEPENDS +            ${VIEWER_BINARY_NAME}              ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py              ${COPY_INPUT_DEPENDENCIES}          ) -      add_custom_target(package ALL DEPENDS  +      add_custom_target(package ALL DEPENDS          ${CMAKE_CFG_INTDIR}/touched.bat -        windows-setup-build-all  +        windows-setup-build-all          )          # temporarily disable packaging of event_host until hg subrepos get          # sorted out on the parabuild cluster... @@ -1735,7 +1732,7 @@ else (USE_KDU)          ${LLIMAGEJ2COJ_LIBRARIES}          )  endif (USE_KDU) -     +  build_version(viewer)  set(ARTWORK_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE PATH @@ -1794,13 +1791,13 @@ if (LINUX)        --dest=${CMAKE_CURRENT_BINARY_DIR}/packaged        --grid=${GRID}        --source=${CMAKE_CURRENT_SOURCE_DIR} -    DEPENDS  +    DEPENDS        ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py        ${COPY_INPUT_DEPENDENCIES}      COMMENT "Performing viewer_manifest copy"      ) -     -  add_custom_target(copy_l_viewer_manifest ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/.${product}.copy_touched)  + +  add_custom_target(copy_l_viewer_manifest ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/.${product}.copy_touched)    if (PACKAGE)      add_custom_target(package ALL DEPENDS ${product}.tar.bz2) @@ -1845,7 +1842,7 @@ if (DARWIN)    add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_quicktime media_plugin_webkit mac-updater mac-crash-logger)    if (PACKAGE) -      add_custom_target(package ALL DEPENDS ${VIEWER_BINARY_NAME})  +      add_custom_target(package ALL DEPENDS ${VIEWER_BINARY_NAME})        add_custom_command(          TARGET package POST_BUILD @@ -1940,7 +1937,7 @@ if (LL_TESTS)    )    ################################################## -  # DISABLING PRECOMPILED HEADERS USAGE FOR TESTS  +  # DISABLING PRECOMPILED HEADERS USAGE FOR TESTS    ##################################################    # if(USE_PRECOMPILED_HEADERS)    #     set_source_files_properties( @@ -1954,33 +1951,33 @@ if (LL_TESTS)    #set(TEST_DEBUG on)    set(test_sources llcapabilitylistener.cpp)    ################################################## -  # DISABLING PRECOMPILED HEADERS USAGE FOR TESTS  +  # DISABLING PRECOMPILED HEADERS USAGE FOR TESTS    ##################################################    # if(USE_PRECOMPILED_HEADERS)    #     set(test_sources "${test_sources}" llviewerprecompiledheaders.cpp)    # endif(USE_PRECOMPILED_HEADERS) -  set(test_libs  -    ${LLMESSAGE_LIBRARIES}  -    ${WINDOWS_LIBRARIES}  +  set(test_libs +    ${LLMESSAGE_LIBRARIES} +    ${WINDOWS_LIBRARIES}      ${LLVFS_LIBRARIES}      ${LLMATH_LIBRARIES} -    ${LLCOMMON_LIBRARIES}  +    ${LLCOMMON_LIBRARIES}      ${GOOGLEMOCK_LIBRARIES}      ) -  LL_ADD_INTEGRATION_TEST(llcapabilitylistener  -    "${test_sources}"  +  LL_ADD_INTEGRATION_TEST(llcapabilitylistener +    "${test_sources}"      "${test_libs}"      ${PYTHON_EXECUTABLE}      "${CMAKE_SOURCE_DIR}/llmessage/tests/test_llsdmessage_peer.py"      ) -  set(test_libs  -    ${LLMESSAGE_LIBRARIES}  -    ${WINDOWS_LIBRARIES}  +  set(test_libs +    ${LLMESSAGE_LIBRARIES} +    ${WINDOWS_LIBRARIES}      ${LLVFS_LIBRARIES}      ${LLMATH_LIBRARIES} -    ${LLCOMMON_LIBRARIES}  +    ${LLCOMMON_LIBRARIES}      ${GOOGLEMOCK_LIBRARIES}      ${OPENSSL_LIBRARIES}      ${CRYPTO_LIBRARIES} diff --git a/indra/newview/llcloud.cpp b/indra/newview/llcloud.cpp deleted file mode 100644 index cda0f6e4a2..0000000000 --- a/indra/newview/llcloud.cpp +++ /dev/null @@ -1,538 +0,0 @@ -/**  - * @file llcloud.cpp - * @brief Implementation of viewer LLCloudLayer class - * - * $LicenseInfo:firstyear=2001&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -#include "llviewerprecompiledheaders.h" - -#include "llmath.h" -//#include "vmath.h" -#include "v3math.h" -#include "v4math.h" -#include "llquaternion.h" -#include "llrand.h" -#include "v4color.h" - -#include "llwind.h" -#include "llcloud.h" -#include "llgl.h" -#include "llviewerobjectlist.h" -#include "llvoclouds.h" -#include "llvosky.h" -#include "llsky.h" -#include "llviewerregion.h" -#include "patch_dct.h" -#include "patch_code.h" -#include "llglheaders.h" -#include "pipeline.h" -#include "lldrawpool.h" -#include "llworld.h" - -extern LLPipeline gPipeline; - -const F32 CLOUD_UPDATE_RATE = 1.0f;  // Global time dilation for clouds -const F32 CLOUD_GROW_RATE = 0.05f; -const F32 CLOUD_DECAY_RATE = -0.05f; -const F32 CLOUD_VELOCITY_SCALE = 0.01f; -const F32 CLOUD_DENSITY = 25.f; -const S32 CLOUD_COUNT_MAX = 20; -const F32 CLOUD_HEIGHT_RANGE = 48.f; -const F32 CLOUD_HEIGHT_MEAN = 192.f; - -enum -{ -	LL_PUFF_GROWING = 0, -	LL_PUFF_DYING = 1 -}; - -// Used for patch decoder -S32 gBuffer[16*16]; - - -//static -S32 LLCloudPuff::sPuffCount = 0; - -LLCloudPuff::LLCloudPuff() : -	mAlpha(0.01f), -	mRate(CLOUD_GROW_RATE*CLOUD_UPDATE_RATE), -	mLifeState(LL_PUFF_GROWING) -{ -} - -LLCloudGroup::LLCloudGroup() : -	mCloudLayerp(NULL), -	mDensity(0.f), -	mTargetPuffCount(0), -	mVOCloudsp(NULL) -{ -} - -void LLCloudGroup::cleanup() -{ -	if (mVOCloudsp) -	{ -		if (!mVOCloudsp->isDead()) -		{ -			gObjectList.killObject(mVOCloudsp); -		} -		mVOCloudsp = NULL; -	} -} - -void LLCloudGroup::setCenterRegion(const LLVector3 ¢er) -{ -	mCenterRegion = center; -} - -void LLCloudGroup::updatePuffs(const F32 dt) -{ -	mDensity = mCloudLayerp->getDensityRegion(mCenterRegion); - -	if (!mVOCloudsp) -	{ -		mVOCloudsp = (LLVOClouds *)gObjectList.createObjectViewer(LLViewerObject::LL_VO_CLOUDS, mCloudLayerp->getRegion()); -		mVOCloudsp->setCloudGroup(this); -		mVOCloudsp->setPositionRegion(mCenterRegion); -		mVOCloudsp->setScale(LLVector3(256.f/CLOUD_GROUPS_PER_EDGE + CLOUD_PUFF_WIDTH, -										 256.f/CLOUD_GROUPS_PER_EDGE + CLOUD_PUFF_WIDTH, -										 CLOUD_HEIGHT_RANGE + CLOUD_PUFF_HEIGHT)*0.5f); -		gPipeline.createObject(mVOCloudsp); -	} - -	LLVector3 velocity; -	LLVector3d vel_d; -	// Update the positions of all of the clouds -	for (U32 i = 0; i < mCloudPuffs.size(); i++) -	{ -		LLCloudPuff &puff = mCloudPuffs[i]; -		velocity = mCloudLayerp->getRegion()->mWind.getCloudVelocity(mCloudLayerp->getRegion()->getPosRegionFromGlobal(puff.mPositionGlobal)); -		velocity *= CLOUD_VELOCITY_SCALE*CLOUD_UPDATE_RATE; -		vel_d.setVec(velocity); -		mCloudPuffs[i].mPositionGlobal += vel_d; -		mCloudPuffs[i].mAlpha += mCloudPuffs[i].mRate * dt; -		mCloudPuffs[i].mAlpha = llmin(1.f, mCloudPuffs[i].mAlpha); -		mCloudPuffs[i].mAlpha = llmax(0.f, mCloudPuffs[i].mAlpha); -	} -} - -void LLCloudGroup::updatePuffOwnership() -{ -	U32 i = 0; -	while (i < mCloudPuffs.size()) -	{ -		if (mCloudPuffs[i].getLifeState() == LL_PUFF_DYING) -		{ -			i++; -			continue; -		} -		if (inGroup(mCloudPuffs[i])) -		{ -			i++; -			continue; -		} - -		//llinfos << "Cloud moving to new group" << llendl; -		LLCloudGroup *new_cgp = LLWorld::getInstance()->findCloudGroup(mCloudPuffs[i]); -		if (!new_cgp) -		{ -			//llinfos << "Killing puff not in group" << llendl; -			mCloudPuffs[i].setLifeState(LL_PUFF_DYING); -			mCloudPuffs[i].mRate = CLOUD_DECAY_RATE*CLOUD_UPDATE_RATE; -			i++; -			continue; -		} -		//llinfos << "Puff handed off!" << llendl; -		LLCloudPuff puff; -		puff.mPositionGlobal = mCloudPuffs[i].mPositionGlobal; -		puff.mAlpha = mCloudPuffs[i].mAlpha; -		mCloudPuffs.erase(mCloudPuffs.begin() + i); -		new_cgp->mCloudPuffs.push_back(puff); -	} - -	//llinfos << "Puff count: " << LLCloudPuff::sPuffCount << llendl; -} - -void LLCloudGroup::updatePuffCount() -{ -	if (!mVOCloudsp) -	{ -		return; -	} -	S32 i; -	S32 target_puff_count = llround(CLOUD_DENSITY * mDensity); -	target_puff_count = llmax(0, target_puff_count); -	target_puff_count = llmin(CLOUD_COUNT_MAX, target_puff_count); -	S32 current_puff_count = (S32) mCloudPuffs.size(); -	// Create a new cloud if we need one -	if (current_puff_count < target_puff_count) -	{ -		LLVector3d puff_pos_global; -		mCloudPuffs.resize(target_puff_count); -		for (i = current_puff_count; i < target_puff_count; i++) -		{ -			puff_pos_global = mVOCloudsp->getPositionGlobal(); -			F32 x = ll_frand(256.f/CLOUD_GROUPS_PER_EDGE) - 128.f/CLOUD_GROUPS_PER_EDGE; -			F32 y = ll_frand(256.f/CLOUD_GROUPS_PER_EDGE) - 128.f/CLOUD_GROUPS_PER_EDGE; -			F32 z = ll_frand(CLOUD_HEIGHT_RANGE) - 0.5f*CLOUD_HEIGHT_RANGE; -			puff_pos_global += LLVector3d(x, y, z); -			mCloudPuffs[i].mPositionGlobal = puff_pos_global; -			mCloudPuffs[i].mAlpha = 0.01f; -			LLCloudPuff::sPuffCount++; -		} -	} - -	// Count the number of live puffs -	S32 live_puff_count = 0; -	for (i = 0; i < (S32) mCloudPuffs.size(); i++) -	{ -		if (mCloudPuffs[i].getLifeState() != LL_PUFF_DYING) -		{ -			live_puff_count++; -		} -	} - - -	// Start killing enough puffs so the live puff count == target puff count -	S32 new_dying_count = llmax(0, live_puff_count - target_puff_count); -	i = 0; -	while (new_dying_count > 0) -	{ -		if (mCloudPuffs[i].getLifeState() != LL_PUFF_DYING) -		{ -			//llinfos << "Killing extra live cloud" << llendl; -			mCloudPuffs[i].setLifeState(LL_PUFF_DYING); -			mCloudPuffs[i].mRate = CLOUD_DECAY_RATE*CLOUD_UPDATE_RATE; -			new_dying_count--; -		} -		i++; -	} - -	// Remove fully dead puffs -	i = 0; -	while (i < (S32) mCloudPuffs.size()) -	{ -		if (mCloudPuffs[i].isDead()) -		{ -			//llinfos << "Removing dead puff!" << llendl; -			mCloudPuffs.erase(mCloudPuffs.begin() + i); -			LLCloudPuff::sPuffCount--; -		} -		else -		{ -			i++; -		} -	} -} - -BOOL LLCloudGroup::inGroup(const LLCloudPuff &puff) const -{ -	// Do min/max check on center of the cloud puff -	F32 min_x, min_y, max_x, max_y; -	F32 delta = 128.f/CLOUD_GROUPS_PER_EDGE; -	min_x = mCenterRegion.mV[VX] - delta; -	min_y = mCenterRegion.mV[VY] - delta; -	max_x = mCenterRegion.mV[VX] + delta; -	max_y = mCenterRegion.mV[VY] + delta; - -	LLVector3 pos_region = mCloudLayerp->getRegion()->getPosRegionFromGlobal(puff.getPositionGlobal()); - -	if ((pos_region.mV[VX] < min_x) -		|| (pos_region.mV[VY] < min_y) -		|| (pos_region.mV[VX] > max_x) -		|| (pos_region.mV[VY] > max_y)) -	{ -		return FALSE; -	} -	return TRUE; -} - -LLCloudLayer::LLCloudLayer() -: 	mOriginGlobal(0.0f, 0.0f, 0.0f), -	mMetersPerEdge(1.0f), -	mMetersPerGrid(1.0f), -	mWindp(NULL), -	mDensityp(NULL) -{ -	S32 i, j; -	for (i = 0; i < 4; i++) -	{ -		mNeighbors[i] = NULL; -	} - -	F32 x, y; -	for (i = 0; i < CLOUD_GROUPS_PER_EDGE; i++) -	{ -		y = (0.5f + i)*(256.f/CLOUD_GROUPS_PER_EDGE); -		for (j = 0; j < CLOUD_GROUPS_PER_EDGE; j++) -		{ -			x = (0.5f + j)*(256.f/CLOUD_GROUPS_PER_EDGE); - -			mCloudGroups[i][j].setCloudLayerp(this); -			mCloudGroups[i][j].setCenterRegion(LLVector3(x, y, CLOUD_HEIGHT_MEAN)); -		} -	} -} - - - -LLCloudLayer::~LLCloudLayer() -{ -	destroy(); -} - - -void LLCloudLayer::create(LLViewerRegion *regionp) -{ -	llassert(regionp); - -	mRegionp = regionp; -	mDensityp = new F32 [CLOUD_GRIDS_PER_EDGE * CLOUD_GRIDS_PER_EDGE]; - -	U32 i; -	for (i = 0; i < CLOUD_GRIDS_PER_EDGE*CLOUD_GRIDS_PER_EDGE; i++) -	{ -		mDensityp[i] = 0.f; -	} -} - -void LLCloudLayer::setRegion(LLViewerRegion *regionp) -{ -	mRegionp = regionp; -} - -void LLCloudLayer::destroy() -{ -	reset(); - -	delete [] mDensityp; -	mDensityp = NULL; -	mWindp = NULL; -} - - -void LLCloudLayer::reset() -{ -	// Kill all of the existing puffs -	S32 i, j; - -	for (i = 0; i < CLOUD_GROUPS_PER_EDGE; i++) -	{ -		for (j = 0; j < CLOUD_GROUPS_PER_EDGE; j++) -		{ -			mCloudGroups[i][j].cleanup(); -		} -	} -} - -void LLCloudLayer::setWindPointer(LLWind *windp) -{ -	if (mWindp) -	{ -		mWindp->setCloudDensityPointer(NULL); -	} -	mWindp = windp; -	if (mWindp) -	{ -		mWindp->setCloudDensityPointer(mDensityp); -	} -} - - -void LLCloudLayer::setWidth(F32 width) -{ -	mMetersPerEdge = width; -	mMetersPerGrid = width / CLOUD_GRIDS_PER_EDGE; -} - - -F32 LLCloudLayer::getDensityRegion(const LLVector3 &pos_region) -{	 -	// "position" is region-local -	S32 i, j, ii, jj; - -	i = lltrunc(pos_region.mV[VX] / mMetersPerGrid); -	j = lltrunc(pos_region.mV[VY] / mMetersPerGrid); -	ii = i + 1; -	jj = j + 1; - - -	// clamp  -	if (i >= (S32)CLOUD_GRIDS_PER_EDGE) -	{ -		i = CLOUD_GRIDS_PER_EDGE - 1; -		ii = i; -	} -	else if (i < 0) -	{ -		i = 0; -		ii = i; -	} -	else if (ii >= (S32)CLOUD_GRIDS_PER_EDGE || ii < 0) -	{ -		ii = i; -	} - -	if (j >= (S32)CLOUD_GRIDS_PER_EDGE) -	{ -		j = CLOUD_GRIDS_PER_EDGE - 1; -		jj = j; -	} -	else if (j < 0) -	{ -		j = 0; -		jj = j; -	} -	else if (jj >= (S32)CLOUD_GRIDS_PER_EDGE || jj < 0) -	{ -		jj = j; -	} - -	F32 dx = (pos_region.mV[VX] - (F32) i * mMetersPerGrid) / mMetersPerGrid; -	F32 dy = (pos_region.mV[VY] - (F32) j * mMetersPerGrid) / mMetersPerGrid; -	F32 omdx = 1.0f - dx; -	F32 omdy = 1.0f - dy; - -	F32 density = dx * dy * *(mDensityp + ii + jj * CLOUD_GRIDS_PER_EDGE) +  -	   			  dx * omdy * *(mDensityp + i + jj * CLOUD_GRIDS_PER_EDGE) + -				  omdx * dy * *(mDensityp + ii + j * CLOUD_GRIDS_PER_EDGE) + -				  omdx * omdy * *(mDensityp + i + j * CLOUD_GRIDS_PER_EDGE);	   - -	return density; -} - -void LLCloudLayer::decompress(LLBitPack &bitpack, LLGroupHeader *group_headerp) -{ -	LLPatchHeader  patch_header; - -	init_patch_decompressor(group_headerp->patch_size); - -	// Don't use the packed group_header stride because the strides used on -	// simulator and viewer are not equal. -	group_headerp->stride = group_headerp->patch_size; 		// offset required to step up one row -	set_group_of_patch_header(group_headerp); - -	decode_patch_header(bitpack, &patch_header); -	decode_patch(bitpack, gBuffer); -	decompress_patch(mDensityp, gBuffer, &patch_header);  -} - -void LLCloudLayer::updatePuffs(const F32 dt) -{ -	// We want to iterate through all of the cloud groups -	// and update their density targets - -	S32 i, j; -	 -	for (i = 0; i < CLOUD_GROUPS_PER_EDGE; i++) -	{ -		for (j = 0; j < CLOUD_GROUPS_PER_EDGE; j++) -		{ -			mCloudGroups[i][j].updatePuffs(dt); -		} -	} -} - -void LLCloudLayer::updatePuffOwnership() -{ -	S32 i, j; -	 -	for (i = 0; i < CLOUD_GROUPS_PER_EDGE; i++) -	{ -		for (j = 0; j < CLOUD_GROUPS_PER_EDGE; j++) -		{ -			mCloudGroups[i][j].updatePuffOwnership(); -		} -	} -} - -void LLCloudLayer::updatePuffCount() -{ -	S32 i, j; -	 -	for (i = 0; i < CLOUD_GROUPS_PER_EDGE; i++) -	{ -		for (j = 0; j < CLOUD_GROUPS_PER_EDGE; j++) -		{ -			mCloudGroups[i][j].updatePuffCount(); -		} -	} -} - -LLCloudGroup *LLCloudLayer::findCloudGroup(const LLCloudPuff &puff) -{ -	S32 i, j; -	 -	for (i = 0; i < CLOUD_GROUPS_PER_EDGE; i++) -	{ -		for (j = 0; j < CLOUD_GROUPS_PER_EDGE; j++) -		{ -			if (mCloudGroups[i][j].inGroup(puff)) -			{ -				return &(mCloudGroups[i][j]); -			} -		} -	} -	return NULL; -} - - - -void LLCloudLayer::connectNeighbor(LLCloudLayer *cloudp, U32 direction) -{ -	if (direction >= 4) -	{ -		// Only care about cardinal 4 directions. -		return; -	} - -	mNeighbors[direction] = cloudp; -	if (cloudp) -		mNeighbors[direction]->mNeighbors[gDirOpposite[direction]] = this; -} - - -void LLCloudLayer::disconnectNeighbor(U32 direction) -{ -	if (direction >= 4) -	{ -		// Only care about cardinal 4 directions. -		return; -	} - -	if (mNeighbors[direction]) -	{ -		mNeighbors[direction]->mNeighbors[gDirOpposite[direction]] = NULL; -		mNeighbors[direction] = NULL; -	} -} - - -void LLCloudLayer::disconnectAllNeighbors() -{ -	S32 i; -	for (i = 0; i < 4; i++) -	{ -		disconnectNeighbor(i); -	} -} diff --git a/indra/newview/llcloud.h b/indra/newview/llcloud.h deleted file mode 100644 index 0435ba1ece..0000000000 --- a/indra/newview/llcloud.h +++ /dev/null @@ -1,199 +0,0 @@ -/**  - * @file llcloud.h - * @brief Description of viewer LLCloudLayer class - * - * $LicenseInfo:firstyear=2001&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -#ifndef LL_LLCLOUD_H -#define LL_LLCLOUD_H - -// Some ideas on how clouds should work -// -// Each region has a cloud layer -// Each cloud layer has pre-allocated space for N clouds -// The LLSky class knows the max number of clouds to render M. -// All clouds use the same texture, but the tex-coords can take on 8 configurations  -// (four rotations, front and back) -//  -// The sky's part -// -------------- -// The sky knows that A clouds have been assigned to regions and there are B left over.  -// Divide B by number of active regions to get C. -// Ask each region to add C more clouds and return total number D. -// Add up all the D's to get a new A. -// -// The cloud layer's part -// ---------------------- -// The cloud layer is a grid of possibility.  Each grid's value represents the probablility -// (0.0 to 1.0) that a cloud placement query will succeed.   -// -// The sky asks the region to add C more clouds. -// The cloud layer tries a total of E times to place clouds and returns total cloud count. -//  -// Clouds move according to local wind velocity. -// If a cloud moves out of region then it's location is sent to neighbor region -// or it is allowed to drift and decay. -// -// The clouds in non-visible regions do not propagate every frame. -// Each frame one non-visible region is allowed to propagate it's clouds  -// (might have to check to see if incoming cloud was already visible or not). -// -//  - -#include "llmath.h" -//#include "vmath.h" -#include "v3math.h" -#include "v3dmath.h" -#include "v4math.h" -#include "v4color.h" -#include "llpointer.h" -#include "lldarray.h" - -#include "llframetimer.h" - -const U32 CLOUD_GRIDS_PER_EDGE 			= 16; - -const F32 CLOUD_PUFF_WIDTH	= 64.f; -const F32 CLOUD_PUFF_HEIGHT	= 48.f; - -class LLWind; -class LLVOClouds; -class LLViewerRegion; -class LLCloudLayer; -class LLBitPack; -class LLGroupHeader; - -const S32 CLOUD_GROUPS_PER_EDGE = 4; - -class LLCloudPuff -{ -public: -	LLCloudPuff(); - -	const LLVector3d &getPositionGlobal() const		{ return mPositionGlobal; } -	friend class LLCloudGroup; - -	void updatePuffs(const F32 dt); -	void updatePuffOwnership(); - -	F32 getAlpha() const							{ return mAlpha; } -	U32 getLifeState() const						{ return mLifeState; } -	void setLifeState(const U32 state)				{ mLifeState = state; } -	BOOL isDead() const								{ return mAlpha <= 0.f; }	 - - -	static S32	sPuffCount; -protected: -	F32			mAlpha; -	F32			mRate; -	LLVector3d	mPositionGlobal; - -	BOOL		mLifeState; -}; - -class LLCloudGroup -{ -public: -	LLCloudGroup(); - -	void cleanup(); - -	void setCloudLayerp(LLCloudLayer *clp)			{ mCloudLayerp = clp; } -	void setCenterRegion(const LLVector3 ¢er); - -	void updatePuffs(const F32 dt); -	void updatePuffOwnership(); -	void updatePuffCount(); - -	BOOL inGroup(const LLCloudPuff &puff) const; - -	F32 getDensity() const							{ return mDensity; } -	S32 getNumPuffs() const							{ return (S32) mCloudPuffs.size(); } -	const LLCloudPuff &getPuff(const S32 i)			{ return mCloudPuffs[i]; } -protected: -	LLCloudLayer *mCloudLayerp; -	LLVector3 mCenterRegion; -	F32 mDensity; -	S32 mTargetPuffCount; - -	std::vector<LLCloudPuff> mCloudPuffs; -	LLPointer<LLVOClouds> mVOCloudsp; -}; - - -class LLCloudLayer -{ -public: -	LLCloudLayer(); -	~LLCloudLayer(); - -	void create(LLViewerRegion *regionp); -	void destroy(); - -	void reset();						// Clears all active cloud puffs - - -	void updatePuffs(const F32 dt); -	void updatePuffOwnership(); -	void updatePuffCount(); - -	LLCloudGroup *findCloudGroup(const LLCloudPuff &puff); - -	void setRegion(LLViewerRegion *regionp); -	LLViewerRegion* getRegion() const						{ return mRegionp; } -	void setWindPointer(LLWind *windp); -	void setOriginGlobal(const LLVector3d &origin_global)	{ mOriginGlobal = origin_global; } -	void setWidth(F32 width); - -	void setBrightness(F32 brightness); -	void setSunColor(const LLColor4 &color); - -	F32 getDensityRegion(const LLVector3 &pos_region);		// "position" is in local coordinates - -	void decompress(LLBitPack &bitpack, LLGroupHeader *group_header); - -	LLCloudLayer* getNeighbor(const S32 n) const					{ return mNeighbors[n]; } - -	void connectNeighbor(LLCloudLayer *cloudp, U32 direction); -	void disconnectNeighbor(U32 direction); -	void disconnectAllNeighbors(); - -public: -	LLVector3d 	mOriginGlobal; -	F32			mMetersPerEdge; -	F32			mMetersPerGrid; - - -	F32 mMaxAlpha;						// The max cloud puff _render_ alpha - -protected: -	LLCloudLayer		*mNeighbors[4]; -	LLWind				*mWindp; -	LLViewerRegion		*mRegionp; -	F32 				*mDensityp;			// the probability density grid -	 -	LLCloudGroup		mCloudGroups[CLOUD_GROUPS_PER_EDGE][CLOUD_GROUPS_PER_EDGE]; -}; - - -#endif diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp index bdc12ec0e3..8f7b992093 100644 --- a/indra/newview/lldrawable.cpp +++ b/indra/newview/lldrawable.cpp @@ -385,7 +385,6 @@ void LLDrawable::makeActive()  			pcode == LLViewerObject::LL_VO_SURFACE_PATCH ||  			pcode == LLViewerObject::LL_VO_PART_GROUP ||  			pcode == LLViewerObject::LL_VO_HUD_PART_GROUP || -			pcode == LLViewerObject::LL_VO_CLOUDS ||  			pcode == LLViewerObject::LL_VO_GROUND ||  			pcode == LLViewerObject::LL_VO_SKY)  		{ @@ -1513,10 +1512,6 @@ BOOL LLDrawable::isAnimating() const  	{  		return TRUE;  	} -	if (mVObjp->getPCode() == LLViewerObject::LL_VO_CLOUDS) -	{ -		return TRUE; -	}  	if (!isRoot() && !mVObjp->getAngularVelocity().isExactlyZero())  	{ diff --git a/indra/newview/lldrawpool.cpp b/indra/newview/lldrawpool.cpp index 25e4bc847c..08b31d687b 100644 --- a/indra/newview/lldrawpool.cpp +++ b/indra/newview/lldrawpool.cpp @@ -35,7 +35,6 @@  #include "lldrawpoolalpha.h"  #include "lldrawpoolavatar.h"  #include "lldrawpoolbump.h" -#include "lldrawpoolclouds.h"  #include "lldrawpoolground.h"  #include "lldrawpoolsimple.h"  #include "lldrawpoolsky.h" diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp index 8b5a2ce781..9fb7968d96 100644 --- a/indra/newview/lldrawpoolalpha.cpp +++ b/indra/newview/lldrawpoolalpha.cpp @@ -357,7 +357,6 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask)  			bool draw_glow_for_this_partition = mVertexShaderLevel > 0 && // no shaders = no glow.  				// All particle systems seem to come off the wire with texture entries which claim that they glow.  This is probably a bug in the data.  Suppress.  				group->mSpatialPartition->mPartitionType != LLViewerRegion::PARTITION_PARTICLE && -				group->mSpatialPartition->mPartitionType != LLViewerRegion::PARTITION_CLOUD &&  				group->mSpatialPartition->mPartitionType != LLViewerRegion::PARTITION_HUD_PARTICLE;  			LLSpatialGroup::drawmap_elem_t& draw_info = group->mDrawMap[LLRenderPass::PASS_ALPHA]; diff --git a/indra/newview/lldrawpoolclouds.cpp b/indra/newview/lldrawpoolclouds.cpp deleted file mode 100644 index 5db1d8cfed..0000000000 --- a/indra/newview/lldrawpoolclouds.cpp +++ /dev/null @@ -1,97 +0,0 @@ -/**  - * @file lldrawpoolclouds.cpp - * @brief LLDrawPoolClouds class implementation - * - * $LicenseInfo:firstyear=2006&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -#include "llviewerprecompiledheaders.h" - -#include "lldrawpoolclouds.h" - -#include "llface.h" -#include "llsky.h" -#include "llviewercamera.h" -#include "llvoclouds.h" -#include "pipeline.h" - -LLDrawPoolClouds::LLDrawPoolClouds() : -	LLDrawPool(POOL_CLOUDS) -{ -} - -LLDrawPool *LLDrawPoolClouds::instancePool() -{ -	return new LLDrawPoolClouds(); -} - -BOOL LLDrawPoolClouds::addFace(LLFace* face) -{ -	llerrs << "WTF?" << llendl; -	return FALSE; -} - -void LLDrawPoolClouds::enqueue(LLFace *facep) -{ -	mDrawFace.push_back(facep); -	facep->mDistance = (facep->mCenterAgent - gCamera->getOrigin()) * gCamera->getAtAxis(); -} - -void LLDrawPoolClouds::beginRenderPass(S32 pass) -{ -	glEnableClientState(GL_VERTEX_ARRAY); -	glEnableClientState(GL_TEXTURE_COORD_ARRAY); -	glEnableClientState(GL_NORMAL_ARRAY); -} - -void LLDrawPoolClouds::prerender() -{ -	mVertexShaderLevel = gPipeline.getVertexShaderLevel(LLPipeline::SHADER_ENVIRONMENT); -} - -void LLDrawPoolClouds::render(S32 pass) -{ -	LLFastTimer ftm(LLFastTimer::FTM_RENDER_CLOUDS); - 	if (!(gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_CLOUDS))) -	{ -		return; -	} -	 -	if (mDrawFace.empty()) -	{ -		return; -	} - -	LLGLSPipelineAlpha gls_pipeline_alpha; -	LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE); -	glAlphaFunc(GL_GREATER,0.01f); - -	gPipeline.enableLightsFullbright(LLColor4(1.f,1.f,1.f)); - -	mDrawFace[0]->bindTexture(); - -	std::sort(mDrawFace.begin(), mDrawFace.end(), LLFace::CompareDistanceGreater()); - -	drawLoop(); -} - - diff --git a/indra/newview/lldrawpoolclouds.h b/indra/newview/lldrawpoolclouds.h deleted file mode 100644 index 019f11a795..0000000000 --- a/indra/newview/lldrawpoolclouds.h +++ /dev/null @@ -1,54 +0,0 @@ -/**  - * @file lldrawpoolclouds.h - * @brief LLDrawPoolClouds class definition - * - * $LicenseInfo:firstyear=2006&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -#ifndef LL_LLDRAWPOOLCLOUDS_H -#define LL_LLDRAWPOOLCLOUDS_H - -#include "lldrawpool.h" - -class LLDrawPoolClouds : public LLDrawPool -{ -public: -	enum -	{ -		VERTEX_DATA_MASK =	LLVertexBuffer::MAP_VERTEX | -							LLVertexBuffer::MAP_NORMAL | -							LLVertexBuffer::MAP_TEXCOORD0 -	}; - -	BOOL addFace(LLFace* face); -	virtual U32 getVertexDataMask() { return VERTEX_DATA_MASK; } - -	LLDrawPoolClouds(); - -	/*virtual*/ void prerender(); -	/*virtual*/ LLDrawPool *instancePool(); -	/*virtual*/ void enqueue(LLFace *face); -	/*virtual*/ void beginRenderPass(S32 pass); -	/*virtual*/ void render(S32 pass = 0); -}; - -#endif // LL_LLDRAWPOOLSKY_H diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index fa329eb0ae..cb82ad3209 100644 --- a/indra/newview/llspatialpartition.cpp +++ b/indra/newview/llspatialpartition.cpp @@ -2818,7 +2818,7 @@ void renderBoundingBox(LLDrawable* drawable, BOOL set_color = TRUE)  						gGL.color4f(0,1,1,1);  						break;  				case LLViewerObject::LL_VO_CLOUDS: -						gGL.color4f(0.5f,0.5f,0.5f,1.0f); +						// no longer used  						break;  				case LLViewerObject::LL_VO_PART_GROUP:  				case LLViewerObject::LL_VO_HUD_PART_GROUP: diff --git a/indra/newview/llspatialpartition.h b/indra/newview/llspatialpartition.h index 0d9cad914a..bc2bcd7c1d 100644 --- a/indra/newview/llspatialpartition.h +++ b/indra/newview/llspatialpartition.h @@ -662,13 +662,6 @@ public:  	LLGrassPartition();  }; -//spatial partition for clouds (implemented in LLVOClouds.cpp) -class LLCloudPartition : public LLParticlePartition -{ -public: -	LLCloudPartition(); -}; -  //class for wrangling geometry out of volumes (implemented in LLVOVolume.cpp)  class LLVolumeGeometryManager: public LLGeometryManager  { diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index c6b73dae13..34614a4b78 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -163,7 +163,6 @@  #include "llviewerwindow.h"  #include "llvoavatar.h"  #include "llvoavatarself.h" -#include "llvoclouds.h"  #include "llweb.h"  #include "llworld.h"  #include "llworldmapmessage.h" @@ -3149,11 +3148,6 @@ bool process_login_success_response()  			gMoonTextureID = id;  		} -		id = global_textures["cloud_texture_id"]; -		if(id.notNull()) -		{ -			gCloudTextureID = id; -		}  	}  	// Set the location of the snapshot sharing config endpoint diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 6d493bfcd5..c8ecd2577b 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -81,7 +81,6 @@  #include "llviewerwindow.h" // For getSpinAxis  #include "llvoavatar.h"  #include "llvoavatarself.h" -#include "llvoclouds.h"  #include "llvograss.h"  #include "llvoground.h"  #include "llvolume.h" @@ -169,8 +168,6 @@ LLViewerObject *LLViewerObject::createObject(const LLUUID &id, const LLPCode pco  	  res = NULL; break;  	case LL_PCODE_LEGACY_TEXT_BUBBLE:  	  res = new LLVOTextBubble(id, pcode, regionp); break; -	case LL_VO_CLOUDS: -	  res = new LLVOClouds(id, pcode, regionp); break;  	case LL_VO_SURFACE_PATCH:  	  res = new LLVOSurfacePatch(id, pcode, regionp); break;  	case LL_VO_SKY: diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h index e417343bec..ed31fd9477 100644 --- a/indra/newview/llviewerobject.h +++ b/indra/newview/llviewerobject.h @@ -546,7 +546,7 @@ public:  	//  	typedef enum e_vo_types  	{ -		LL_VO_CLOUDS =				LL_PCODE_APP | 0x20, +		LL_VO_CLOUDS =				LL_PCODE_APP | 0x20, // no longer used  		LL_VO_SURFACE_PATCH =		LL_PCODE_APP | 0x30,  		LL_VO_WL_SKY =				LL_PCODE_APP | 0x40,  		LL_VO_SQUARE_TORUS =		LL_PCODE_APP | 0x50, diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index ab2e07e4df..acacf63a1f 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -957,8 +957,7 @@ void LLViewerObjectList::update(LLAgent &agent, LLWorld &world)  			iter != idle_list.end(); iter++)  		{  			objectp = *iter; -			if (objectp->getPCode() == LLViewerObject::LL_VO_CLOUDS || -				objectp->isAvatar()) +			if (objectp->isAvatar())  			{  				objectp->idleUpdate(agent, world, frame_time);  			} diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index 214db03994..6f4dff5819 100644 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -64,7 +64,6 @@  #include "llvlmanager.h"  #include "llvlcomposition.h"  #include "llvocache.h" -#include "llvoclouds.h"  #include "llworld.h"  #include "llspatialpartition.h"  #include "stringize.h" @@ -314,7 +313,6 @@ LLViewerRegion::LLViewerRegion(const U64 &handle,  	mImpl->mObjectPartition.push_back(new LLWaterPartition());		//PARTITION_WATER  	mImpl->mObjectPartition.push_back(new LLTreePartition());		//PARTITION_TREE  	mImpl->mObjectPartition.push_back(new LLParticlePartition());	//PARTITION_PARTICLE -	mImpl->mObjectPartition.push_back(new LLCloudPartition());		//PARTITION_CLOUD  	mImpl->mObjectPartition.push_back(new LLGrassPartition());		//PARTITION_GRASS  	mImpl->mObjectPartition.push_back(new LLVolumePartition());	//PARTITION_VOLUME  	mImpl->mObjectPartition.push_back(new LLBridgePartition());	//PARTITION_BRIDGE diff --git a/indra/newview/llviewerregion.h b/indra/newview/llviewerregion.h index 4bc487e4cb..c8e9085707 100644 --- a/indra/newview/llviewerregion.h +++ b/indra/newview/llviewerregion.h @@ -81,7 +81,6 @@ public:  		PARTITION_WATER,  		PARTITION_TREE,  		PARTITION_PARTICLE, -		PARTITION_CLOUD,  		PARTITION_GRASS,  		PARTITION_VOLUME,  		PARTITION_BRIDGE, diff --git a/indra/newview/llvoclouds.cpp b/indra/newview/llvoclouds.cpp deleted file mode 100644 index 78aa6e6ab8..0000000000 --- a/indra/newview/llvoclouds.cpp +++ /dev/null @@ -1,293 +0,0 @@ -/**  - * @file llvoclouds.cpp - * @brief Implementation of LLVOClouds class which is a derivation fo LLViewerObject - * - * $LicenseInfo:firstyear=2001&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -#include "llviewerprecompiledheaders.h" - -#include "llvoclouds.h" - -#include "lldrawpoolalpha.h" - -#include "llviewercontrol.h" - -#include "llagent.h"		// to get camera position -#include "lldrawable.h" -#include "llface.h" -#include "llprimitive.h" -#include "llsky.h" -#include "llviewercamera.h" -#include "llviewertexturelist.h" -#include "llviewerobjectlist.h" -#include "llviewerregion.h" -#include "llvosky.h" -#include "llworld.h" -#include "pipeline.h" -#include "llspatialpartition.h" - -LLUUID gCloudTextureID = IMG_CLOUD_POOF; - - -LLVOClouds::LLVOClouds(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp) -:	LLAlphaObject(id, LL_VO_CLOUDS, regionp) -{ -	mCloudGroupp = NULL; -	mbCanSelect = FALSE; -	setNumTEs(1); -	LLViewerTexture* image = LLViewerTextureManager::getFetchedTexture(gCloudTextureID); -	image->setBoostLevel(LLViewerTexture::BOOST_CLOUDS); -	setTEImage(0, image); -} - - -LLVOClouds::~LLVOClouds() -{ -} - - -BOOL LLVOClouds::isActive() const -{ -	return TRUE; -} - -BOOL LLVOClouds::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time) -{ -	static LLFastTimer::DeclareTimer ftm("Idle Clouds"); -	LLFastTimer t(ftm); - -	if (!(gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_CLOUDS))) -	{ -		return TRUE; -	} -	 -	// Set dirty flag (so renderer will rebuild primitive) -	if (mDrawable) -	{ -		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_VOLUME, TRUE); -	} - -	return TRUE; -} - - -void LLVOClouds::setPixelAreaAndAngle(LLAgent &agent) -{ -	mAppAngle = 50; -	mPixelArea = 1500*100; -} - -void LLVOClouds::updateTextures() -{ -	getTEImage(0)->addTextureStats(mPixelArea); -} - -LLDrawable* LLVOClouds::createDrawable(LLPipeline *pipeline) -{ -	pipeline->allocDrawable(this); -	mDrawable->setLit(FALSE); -	mDrawable->setRenderType(LLPipeline::RENDER_TYPE_CLOUDS); - -	return mDrawable; -} - -static LLFastTimer::DeclareTimer FTM_UPDATE_CLOUDS("Update Clouds"); - -BOOL LLVOClouds::updateGeometry(LLDrawable *drawable) -{ -	LLFastTimer ftm(FTM_UPDATE_CLOUDS); -	if (!(gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_CLOUDS))) -	{ -		return TRUE; -	} -	 -	if (drawable->isVisible()) -	{ -		dirtySpatialGroup(TRUE); -	} - -	LLFace *facep; -	 -	S32 num_faces = mCloudGroupp->getNumPuffs(); - -	if (num_faces > drawable->getNumFaces()) -	{ -		drawable->setNumFacesFast(num_faces, NULL, getTEImage(0)); -	} - -	mDepth = (getPositionAgent()-LLViewerCamera::getInstance()->getOrigin())*LLViewerCamera::getInstance()->getAtAxis(); - -	S32 face_indx = 0; -	for ( ;	face_indx < num_faces; face_indx++) -	{ -		facep = drawable->getFace(face_indx); -		if (!facep) -		{ -			llwarns << "No facep for index " << face_indx << llendl; -			continue; -		} - -		facep->setSize(4, 6); -		 -		facep->setTEOffset(face_indx); -		facep->setTexture(getTEImage(0)); -		const LLCloudPuff &puff = mCloudGroupp->getPuff(face_indx); -		const LLVector3 puff_pos_agent = gAgent.getPosAgentFromGlobal(puff.getPositionGlobal()); -		facep->mCenterLocal = puff_pos_agent; -		/// Update cloud color based on sun color. -		LLColor4 float_color(LLColor3(gSky.getSunDiffuseColor() + gSky.getSunAmbientColor()),puff.getAlpha()); -		facep->setFaceColor(float_color); -	} -	for ( ; face_indx < drawable->getNumFaces(); face_indx++) -	{ -		facep = drawable->getFace(face_indx); -		if (!facep) -		{ -			llwarns << "No facep for index " << face_indx << llendl; -			continue; -		} - -		facep->setTEOffset(face_indx); -		facep->setSize(0,0); -	} - -	drawable->movePartition(); - -	return TRUE; -} - -F32 LLVOClouds::getPartSize(S32 idx) -{ -	return (CLOUD_PUFF_HEIGHT+CLOUD_PUFF_WIDTH)*0.5f; -} - -void LLVOClouds::getGeometry(S32 te,  -							LLStrider<LLVector3>& verticesp,  -							LLStrider<LLVector3>& normalsp,  -							LLStrider<LLVector2>& texcoordsp,  -							LLStrider<LLColor4U>& colorsp,  -							LLStrider<U16>& indicesp) -{ - -	if (te >= mCloudGroupp->getNumPuffs()) -	{ -		return; -	} - -	LLDrawable* drawable = mDrawable; -	LLFace *facep = drawable->getFace(te); - -	if (!facep->hasGeometry()) -	{ -		return; -	} -	 -	LLVector3 normal(0.f,0.f,-1.f); - -	const LLCloudPuff &puff = mCloudGroupp->getPuff(te); -	S32 index_offset = facep->getGeomIndex(); -	LLColor4 float_color(LLColor3(gSky.getSunDiffuseColor() + gSky.getSunAmbientColor()),puff.getAlpha()); -	LLColor4U color; -	color.setVec(float_color); -	facep->setFaceColor(float_color); -		 -	 -	LLVector3 up; -	LLVector3 right; -	LLVector3 at; - -	const LLVector3& puff_pos_agent = facep->mCenterLocal; -	LLVector2 uvs[4]; - -	uvs[0].setVec(0.f, 1.f); -	uvs[1].setVec(0.f, 0.f); -	uvs[2].setVec(1.f, 1.f); -	uvs[3].setVec(1.f, 0.f); - -	LLVector3 vtx[4]; - -	at = LLViewerCamera::getInstance()->getAtAxis(); -	right = at % LLVector3(0.f, 0.f, 1.f); -	right.normVec(); -	up = right % at; -	up.normVec(); -	right *= 0.5f*CLOUD_PUFF_WIDTH; -	up *= 0.5f*CLOUD_PUFF_HEIGHT;; -		 -	*colorsp++ = color; -	*colorsp++ = color; -	*colorsp++ = color; -	*colorsp++ = color; - -	vtx[0] = puff_pos_agent - right + up; -	vtx[1] = puff_pos_agent - right - up; -	vtx[2] = puff_pos_agent + right + up; -	vtx[3] = puff_pos_agent + right - up; - -	*verticesp++  = vtx[0]; -	*verticesp++  = vtx[1]; -	*verticesp++  = vtx[2]; -	*verticesp++  = vtx[3]; - -	*texcoordsp++ = uvs[0]; -	*texcoordsp++ = uvs[1]; -	*texcoordsp++ = uvs[2]; -	*texcoordsp++ = uvs[3]; - -	*normalsp++   = normal; -	*normalsp++   = normal; -	*normalsp++   = normal; -	*normalsp++   = normal; - -	*indicesp++ = index_offset + 0; -	*indicesp++ = index_offset + 1; -	*indicesp++ = index_offset + 2; - -	*indicesp++ = index_offset + 1; -	*indicesp++ = index_offset + 3; -	*indicesp++ = index_offset + 2; -} - -U32 LLVOClouds::getPartitionType() const -{ -	return LLViewerRegion::PARTITION_CLOUD; -} - -// virtual -void LLVOClouds::updateDrawable(BOOL force_damped) -{ -	// Force an immediate rebuild on any update -	if (mDrawable.notNull()) -	{ -		mDrawable->updateXform(TRUE); -		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL, TRUE); -	} -	clearChanged(SHIFTED); -} - -LLCloudPartition::LLCloudPartition() -{ -	mDrawableType = LLPipeline::RENDER_TYPE_CLOUDS; -	mPartitionType = LLViewerRegion::PARTITION_CLOUD; -} - diff --git a/indra/newview/llvoclouds.h b/indra/newview/llvoclouds.h deleted file mode 100644 index 430923a108..0000000000 --- a/indra/newview/llvoclouds.h +++ /dev/null @@ -1,79 +0,0 @@ -/**  - * @file llvoclouds.h - * @brief Description of LLVOClouds class - * - * $LicenseInfo:firstyear=2001&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -#ifndef LL_LLVOCLOUDS_H -#define LL_LLVOCLOUDS_H - -#include "llviewerobject.h" -#include "lltable.h" -#include "v4coloru.h" - -class LLViewerTexture; -class LLViewerCloudGroup; - -class LLCloudGroup; - - -class LLVOClouds : public LLAlphaObject -{ -public: -	LLVOClouds(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp ); - -	// Initialize data that's only inited once per class. -	static void initClass(); - -	void updateDrawable(BOOL force_damped);  - -	/*virtual*/ LLDrawable* createDrawable(LLPipeline *pipeline); -	/*virtual*/ BOOL        updateGeometry(LLDrawable *drawable); -	/*virtual*/ void		getGeometry(S32 te,  -							LLStrider<LLVector3>& verticesp,  -							LLStrider<LLVector3>& normalsp,  -							LLStrider<LLVector2>& texcoordsp,  -							LLStrider<LLColor4U>& colorsp,  -							LLStrider<U16>& indicesp); - -	/*virtual*/ BOOL    isActive() const; // Whether this object needs to do an idleUpdate. -	F32 getPartSize(S32 idx); - -	/*virtual*/ void updateTextures(); -	/*virtual*/ void setPixelAreaAndAngle(LLAgent &agent); // generate accurate apparent angle and area -	 -	void updateFaceSize(S32 idx) { } -	BOOL idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time); - -	virtual U32 getPartitionType() const; - -	void setCloudGroup(LLCloudGroup *cgp)		{ mCloudGroupp = cgp; } -protected: -	virtual ~LLVOClouds(); - -	LLCloudGroup *mCloudGroupp; -}; - -extern LLUUID gCloudTextureID; - -#endif // LL_VO_CLOUDS_H diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp index 596ab5931c..c42d13db35 100644 --- a/indra/newview/llworld.cpp +++ b/indra/newview/llworld.cpp @@ -61,7 +61,6 @@  #include <map>  #include <cstring> -#define TMP_WL_REMOVE_CLOUDS /* disables code for classic clouds */  //  // Globals @@ -94,10 +93,6 @@ LLWorld::LLWorld() :  	mLastPacketsOut(0),  	mLastPacketsLost(0),  	mSpaceTimeUSec(0) -#ifndef TMP_WL_REMOVE_CLOUDS -	, -	mClassicCloudsEnabled(FALSE) -#endif  {  	for (S32 i = 0; i < 8; i++)  	{ @@ -188,12 +183,6 @@ LLViewerRegion* LLWorld::addRegion(const U64 ®ion_handle, const LLHost &host)  		llerrs << "Unable to create new region!" << llendl;  	} -#ifndef TMP_WL_REMOVE_CLOUDS -	regionp->mCloudLayer.create(regionp); -	regionp->mCloudLayer.setWidth((F32)mWidth); -	regionp->mCloudLayer.setWindPointer(®ionp->mWind); -#endif // TMP_WL_REMOVE_CLOUDS -	  	mRegionList.push_back(regionp);  	mActiveRegionList.push_back(regionp);  	mCulledRegionList.push_back(regionp); @@ -668,65 +657,6 @@ void LLWorld::updateParticles()  	LLViewerPartSim::getInstance()->updateSimulation();  } -#ifndef TMP_WL_REMOVE_CLOUDS -void LLWorld::updateClouds(const F32 dt) -{ -	static LLFastTimer::DeclareTimer ftm("World Clouds"); -	LLFastTimer t(ftm); - -	if ( gSavedSettings.getBOOL("FreezeTime") ) -	{ -		// don't move clouds in snapshot mode -		return; -	} - -	if (mActiveRegionList.size()) -	{ -		for (region_list_t::iterator iter = mActiveRegionList.begin(); -			 iter != mActiveRegionList.end(); ++iter) -		{ -			LLViewerRegion* regionp = *iter; -			regionp->mCloudLayer.updatePuffs(dt); -		} - -		// Reshuffle who owns which puffs -		for (region_list_t::iterator iter = mActiveRegionList.begin(); -			 iter != mActiveRegionList.end(); ++iter) -		{ -			LLViewerRegion* regionp = *iter; -			regionp->mCloudLayer.updatePuffOwnership(); -		} - -		// Add new puffs -		for (region_list_t::iterator iter = mActiveRegionList.begin(); -			 iter != mActiveRegionList.end(); ++iter) -		{ -			LLViewerRegion* regionp = *iter; -			regionp->mCloudLayer.updatePuffCount(); -		} -	} -} - -LLCloudGroup* LLWorld::findCloudGroup(const LLCloudPuff &puff) -{ -	if (mActiveRegionList.size()) -	{ -		// Update all the cloud puff positions, and timer based stuff -		// such as death decay -		for (region_list_t::iterator iter = mActiveRegionList.begin(); -			 iter != mActiveRegionList.end(); ++iter) -		{ -			LLViewerRegion* regionp = *iter; -			LLCloudGroup *groupp = regionp->mCloudLayer.findCloudGroup(puff); -			if (groupp) -			{ -				return groupp; -			} -		} -	} -	return NULL; -} -#endif // TMP_WL_REMOVE_CLOUDS  void LLWorld::renderPropertyLines()  {  | 
