// Update m_CurrentWaterShaderType according to current selected water void UpdateCurrentShaderType() { // Check if there is renderer component if(m_WaterList[m_CurrentWaterIndex].gameObject.GetComponent<Renderer>()==null) return; if(m_WaterList[m_CurrentWaterIndex].gameObject.GetComponent<Renderer>().material==null) return; switch(m_WaterList[m_CurrentWaterIndex].gameObject.GetComponent<Renderer>().material.shader.name) { // Water Diffuse shader case "Water Flow/Water Diffuse": m_CurrentWaterShaderType = eWaterShaderType.WaterDiffuse; m_WaterDiffuse_Diffuse = m_WaterList[m_CurrentWaterIndex].gameObject.GetComponent<Renderer>().material.GetColor("_MainTexColor"); m_WaterDiffuse_Multiply = m_WaterList[m_CurrentWaterIndex].gameObject.GetComponent<Renderer>().material.GetFloat("_MainTexMultiply"); m_WaterDiffuse_UMoveSpeed = m_WaterList[m_CurrentWaterIndex].gameObject.GetComponent<Renderer>().material.GetFloat("_MainTexMoveSpeedU"); m_WaterDiffuse_VMoveSpeed = m_WaterList[m_CurrentWaterIndex].gameObject.GetComponent<Renderer>().material.GetFloat("_MainTexMoveSpeedV"); m_WaterDiffuseOld_Diffuse = m_WaterDiffuse_Diffuse; m_WaterDiffuseOld_Multiply = m_WaterDiffuse_Multiply; m_WaterDiffuseOld_UMoveSpeed = m_WaterDiffuse_UMoveSpeed; m_WaterDiffuseOld_VMoveSpeed = m_WaterDiffuse_VMoveSpeed; break; // Water Heightmap shader case "Water Flow/Water Heightmap": m_CurrentWaterShaderType = eWaterShaderType.WaterHeightmap; Texture txHeightMap1 = m_WaterList[m_CurrentWaterIndex].gameObject.GetComponent<Renderer>().material.GetTexture("_HeightMap1"); Texture txHeightMap2 = m_WaterList[m_CurrentWaterIndex].gameObject.GetComponent<Renderer>().material.GetTexture("_HeightMap2"); for(int i=0;i<m_HeightMapTextures.Length;i++) { if(m_HeightMapTextures[i].name == txHeightMap1.name) { m_WaterHeightMap1Index = i; } if(m_HeightMapTextures[i].name == txHeightMap2.name) { m_WaterHeightMap2Index = i; } } m_WaterHeightmap_WaterTile = m_WaterList[m_CurrentWaterIndex].gameObject.GetComponent<Renderer>().material.GetFloat("_MainTexTile"); m_WaterHeightmap_HeightmapTile = m_WaterList[m_CurrentWaterIndex].gameObject.GetComponent<Renderer>().material.GetFloat("_HeightMapTile"); m_WaterHeightmap_Refraction = m_WaterList[m_CurrentWaterIndex].gameObject.GetComponent<Renderer>().material.GetFloat("_MainTexRefraction"); m_WaterHeightmap_Strength = m_WaterList[m_CurrentWaterIndex].gameObject.GetComponent<Renderer>().material.GetFloat("_HeightMapStrength"); m_WaterHeightmap_Multiply = m_WaterList[m_CurrentWaterIndex].gameObject.GetComponent<Renderer>().material.GetFloat("_HeightMapMultiply"); m_WaterHeightmapOld_WaterTile = m_WaterHeightmap_WaterTile; m_WaterHeightmapOld_HeightmapTile = m_WaterHeightmap_HeightmapTile; m_WaterHeightmapOld_Refraction = m_WaterHeightmap_Refraction; m_WaterHeightmapOld_Strength = m_WaterHeightmap_Strength; m_WaterHeightmapOld_Multiply = m_WaterHeightmap_Multiply; break; // Water Simple shader case "Water Flow/Water Simple": m_CurrentWaterShaderType = eWaterShaderType.WaterSimple; m_WaterSimple_Ambient = RenderSettings.ambientLight; m_WaterSimple_UMoveSpeed = m_WaterList[m_CurrentWaterIndex].gameObject.GetComponent<Renderer>().material.GetFloat("_MainTexMoveSpeedU"); m_WaterSimple_VMoveSpeed = m_WaterList[m_CurrentWaterIndex].gameObject.GetComponent<Renderer>().material.GetFloat("_MainTexMoveSpeedV"); m_WaterSimpleOld_Ambient = m_WaterSimple_Ambient; m_WaterSimpleOld_UMoveSpeed = m_WaterSimple_UMoveSpeed; m_WaterSimpleOld_VMoveSpeed = m_WaterSimple_VMoveSpeed; break; // Unknown shader default: m_CurrentWaterShaderType = eWaterShaderType.None; break; } }
// ###################################################################### // Utilities functions // ###################################################################### #region Utilities functions // Update m_CurrentWaterShaderType according to current selected water void UpdateCurrentShaderType() { // Check if there is renderer component if (m_WaterList[m_CurrentWaterIndex].gameObject.GetComponent <Renderer>() == null) { return; } if (m_WaterList[m_CurrentWaterIndex].gameObject.GetComponent <Renderer>().material == null) { return; } switch (m_WaterList[m_CurrentWaterIndex].gameObject.GetComponent <Renderer>().material.shader.name) { // Water Diffuse shader case "Water Flow/Water Diffuse": m_CurrentWaterShaderType = eWaterShaderType.WaterDiffuse; m_WaterDiffuse_Diffuse = m_WaterList[m_CurrentWaterIndex].gameObject.GetComponent <Renderer>().material.GetColor("_MainTexColor"); m_WaterDiffuse_Multiply = m_WaterList[m_CurrentWaterIndex].gameObject.GetComponent <Renderer>().material.GetFloat("_MainTexMultiply"); m_WaterDiffuse_UMoveSpeed = m_WaterList[m_CurrentWaterIndex].gameObject.GetComponent <Renderer>().material.GetFloat("_MainTexMoveSpeedU"); m_WaterDiffuse_VMoveSpeed = m_WaterList[m_CurrentWaterIndex].gameObject.GetComponent <Renderer>().material.GetFloat("_MainTexMoveSpeedV"); m_WaterDiffuseOld_Diffuse = m_WaterDiffuse_Diffuse; m_WaterDiffuseOld_Multiply = m_WaterDiffuse_Multiply; m_WaterDiffuseOld_UMoveSpeed = m_WaterDiffuse_UMoveSpeed; m_WaterDiffuseOld_VMoveSpeed = m_WaterDiffuse_VMoveSpeed; break; // Water Heightmap shader case "Water Flow/Water Heightmap": m_CurrentWaterShaderType = eWaterShaderType.WaterHeightmap; Texture txHeightMap1 = m_WaterList[m_CurrentWaterIndex].gameObject.GetComponent <Renderer>().material.GetTexture("_HeightMap1"); Texture txHeightMap2 = m_WaterList[m_CurrentWaterIndex].gameObject.GetComponent <Renderer>().material.GetTexture("_HeightMap2"); for (int i = 0; i < m_HeightMapTextures.Length; i++) { if (m_HeightMapTextures[i].name == txHeightMap1.name) { m_WaterHeightMap1Index = i; } if (m_HeightMapTextures[i].name == txHeightMap2.name) { m_WaterHeightMap2Index = i; } } m_WaterHeightmap_WaterTile = m_WaterList[m_CurrentWaterIndex].gameObject.GetComponent <Renderer>().material.GetFloat("_MainTexTile"); m_WaterHeightmap_HeightmapTile = m_WaterList[m_CurrentWaterIndex].gameObject.GetComponent <Renderer>().material.GetFloat("_HeightMapTile"); m_WaterHeightmap_Refraction = m_WaterList[m_CurrentWaterIndex].gameObject.GetComponent <Renderer>().material.GetFloat("_MainTexRefraction"); m_WaterHeightmap_Strength = m_WaterList[m_CurrentWaterIndex].gameObject.GetComponent <Renderer>().material.GetFloat("_HeightMapStrength"); m_WaterHeightmap_Multiply = m_WaterList[m_CurrentWaterIndex].gameObject.GetComponent <Renderer>().material.GetFloat("_HeightMapMultiply"); m_WaterHeightmapOld_WaterTile = m_WaterHeightmap_WaterTile; m_WaterHeightmapOld_HeightmapTile = m_WaterHeightmap_HeightmapTile; m_WaterHeightmapOld_Refraction = m_WaterHeightmap_Refraction; m_WaterHeightmapOld_Strength = m_WaterHeightmap_Strength; m_WaterHeightmapOld_Multiply = m_WaterHeightmap_Multiply; break; // Water Simple shader case "Water Flow/Water Simple": m_CurrentWaterShaderType = eWaterShaderType.WaterSimple; m_WaterSimple_Ambient = RenderSettings.ambientLight; m_WaterSimple_UMoveSpeed = m_WaterList[m_CurrentWaterIndex].gameObject.GetComponent <Renderer>().material.GetFloat("_MainTexMoveSpeedU"); m_WaterSimple_VMoveSpeed = m_WaterList[m_CurrentWaterIndex].gameObject.GetComponent <Renderer>().material.GetFloat("_MainTexMoveSpeedV"); m_WaterSimpleOld_Ambient = m_WaterSimple_Ambient; m_WaterSimpleOld_UMoveSpeed = m_WaterSimple_UMoveSpeed; m_WaterSimpleOld_VMoveSpeed = m_WaterSimple_VMoveSpeed; break; // Unknown shader default: m_CurrentWaterShaderType = eWaterShaderType.None; break; } }