diff --git a/Assets/ModelRenderer/Art/Shaders/UnlitVertexColorUnlit.shader b/Assets/ModelRenderer/Art/Shaders/UnlitVertexColorUnlit.shader index 6d65a30bfb..8fcfa05a78 100644 --- a/Assets/ModelRenderer/Art/Shaders/UnlitVertexColorUnlit.shader +++ b/Assets/ModelRenderer/Art/Shaders/UnlitVertexColorUnlit.shader @@ -2,7 +2,14 @@ Shader "BrewMonster/UnlitVertexColorUnlit" { Properties { - _Texture_1 ("Texture", 2D) = "white" {} + _Texture_1 ("Layer 1 Texture", 2D) = "black" {} + _Texture_2 ("Layer 2 Texture", 2D) = "black" {} + _Texture_3 ("Layer 3 Texture", 2D) = "black" {} + _Texture_4 ("Layer 4 Texture", 2D) = "black" {} + _Texture_5 ("Layer 5 Texture", 2D) = "black" {} + _Texture_6 ("Layer 6 Texture", 2D) = "black" {} + _MaskTexture ("Mask Texture", 2D) = "black" {} + _MaskTexture2 ("Mask Texture 2", 2D) = "black" {} _ShadowStrength ("Shadow Strength", Range(0, 1)) = 0.5 _Brightness ("Brightness", Range(0, 10)) = 5.0 } @@ -34,8 +41,36 @@ Shader "BrewMonster/UnlitVertexColorUnlit" TEXTURE2D(_Texture_1); SAMPLER(sampler_Texture_1); + TEXTURE2D(_Texture_2); + SAMPLER(sampler_Texture_2); + + TEXTURE2D(_Texture_3); + SAMPLER(sampler_Texture_3); + + TEXTURE2D(_MaskTexture); + SAMPLER(sampler_MaskTexture); + + TEXTURE2D(_Texture_4); + SAMPLER(sampler_Texture_4); + + TEXTURE2D(_Texture_5); + SAMPLER(sampler_Texture_5); + + TEXTURE2D(_Texture_6); + SAMPLER(sampler_Texture_6); + + TEXTURE2D(_MaskTexture2); + SAMPLER(sampler_MaskTexture2); + CBUFFER_START(UnityPerMaterial) float4 _Texture_1_ST; + float4 _Texture_2_ST; + float4 _Texture_3_ST; + float4 _Texture_4_ST; + float4 _Texture_5_ST; + float4 _Texture_6_ST; + float4 _MaskTexture_ST; + float4 _MaskTexture2_ST; half _ShadowStrength; half _Brightness; CBUFFER_END @@ -44,6 +79,8 @@ Shader "BrewMonster/UnlitVertexColorUnlit" { float4 positionOS : POSITION; float2 uv : TEXCOORD0; + float2 uvMask : TEXCOORD3; + float2 uvMask2 : TEXCOORD7; float3 normalOS : NORMAL; float4 color : COLOR; }; @@ -52,10 +89,19 @@ Shader "BrewMonster/UnlitVertexColorUnlit" { float4 positionCS : SV_POSITION; float2 uv : TEXCOORD0; - float3 positionWS : TEXCOORD1; - float3 normalWS : TEXCOORD2; + float2 uv2 : TEXCOORD1; + float2 uv3 : TEXCOORD2; + float2 uvMask : TEXCOORD3; + + float2 uv4 : TEXCOORD4; + float2 uv5 : TEXCOORD5; + float2 uv6 : TEXCOORD6; + float2 uvMask2 : TEXCOORD7; + + float3 positionWS : TEXCOORD8; + float3 normalWS : TEXCOORD9; float4 color : COLOR; - float fogCoord : TEXCOORD3; + float fogCoord : TEXCOORD10; }; Varyings vert(Attributes input) @@ -76,6 +122,13 @@ Shader "BrewMonster/UnlitVertexColorUnlit" // UV output.uv = TRANSFORM_TEX(input.uv, _Texture_1); + output.uv2 = TRANSFORM_TEX(input.uv, _Texture_2); + output.uv3 = TRANSFORM_TEX(input.uv, _Texture_3); + output.uv4 = TRANSFORM_TEX(input.uv, _Texture_4); + output.uv5 = TRANSFORM_TEX(input.uv, _Texture_5); + output.uv6 = TRANSFORM_TEX(input.uv, _Texture_6); + output.uvMask = TRANSFORM_TEX(input.uvMask, _MaskTexture); + output.uvMask2 = TRANSFORM_TEX(input.uvMask2, _MaskTexture2); // Fog output.fogCoord = ComputeFogFactor(vertexInput.positionCS.z); @@ -87,10 +140,28 @@ Shader "BrewMonster/UnlitVertexColorUnlit" { // Sample the texture half4 texColor = SAMPLE_TEXTURE2D(_Texture_1, sampler_Texture_1, input.uv); + half4 texColor2 = SAMPLE_TEXTURE2D(_Texture_2, sampler_Texture_2, input.uv2); + half4 texColor3 = SAMPLE_TEXTURE2D(_Texture_3, sampler_Texture_3, input.uv3); + half4 texColor4 = SAMPLE_TEXTURE2D(_Texture_4, sampler_Texture_4, input.uv4); + half4 texColor5 = SAMPLE_TEXTURE2D(_Texture_5, sampler_Texture_5, input.uv5); + half4 texColor6 = SAMPLE_TEXTURE2D(_Texture_6, sampler_Texture_6, input.uv6); + half4 maskColor = SAMPLE_TEXTURE2D(_MaskTexture, sampler_MaskTexture, input.uvMask); + half4 maskColor2 = SAMPLE_TEXTURE2D(_MaskTexture2, sampler_MaskTexture2, input.uvMask2); + + // half4 totalWeight = maskColor.r + maskColor.g + maskColor.b; + half4 layer1Weight = 1 - (maskColor.r + maskColor.g + maskColor.b);// / totalWeight; + half4 layer2Weight = maskColor.g;// / totalWeight; + half4 layer3Weight = maskColor.b;// / totalWeight; + half4 layer4Weight = maskColor2.r;// / totalWeight; + half4 layer5Weight = maskColor2.g;// / totalWeight; + half4 layer6Weight = maskColor2.b;// / totalWeight; // Apply brightness to vertex color then multiply with texture half4 brightColor = input.color * _Brightness; - half4 color = texColor * brightColor; + half4 color = texColor * layer1Weight + texColor2 * layer2Weight + texColor3 * layer3Weight; + color += texColor4 * layer4Weight + texColor5 * layer5Weight + texColor6 * layer6Weight; + // color = maskColor2; + color *= brightColor; // Shadow calculation float4 shadowCoord = TransformWorldToShadowCoord(input.positionWS); @@ -126,6 +197,9 @@ Shader "BrewMonster/UnlitVertexColorUnlit" CBUFFER_START(UnityPerMaterial) float4 _Texture_1_ST; + float4 _Texture_2_ST; + float4 _Texture_3_ST; + float4 _MaskTexture_ST; half _Brightness; CBUFFER_END @@ -133,6 +207,9 @@ Shader "BrewMonster/UnlitVertexColorUnlit" { float4 position : POSITION; float2 texcoord : TEXCOORD0; + float2 texcoord2 : TEXCOORD1; + float2 texcoord3 : TEXCOORD2; + float2 texcoord4 : TEXCOORD3; }; struct Varyings diff --git a/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/圆石头路.png b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/圆石头路.png new file mode 100644 index 0000000000..24bdb5f112 Binary files /dev/null and b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/圆石头路.png differ diff --git a/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/圆石头路.png.meta b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/圆石头路.png.meta new file mode 100644 index 0000000000..7318f4d5b7 --- /dev/null +++ b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/圆石头路.png.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: d2d95ef77cdc4e64c969442caa95e479 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/土地干净.png b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/土地干净.png new file mode 100644 index 0000000000..caba63fb89 Binary files /dev/null and b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/土地干净.png differ diff --git a/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/土地干净.png.meta b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/土地干净.png.meta new file mode 100644 index 0000000000..b5363d6083 --- /dev/null +++ b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/土地干净.png.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: 182bc0e55106bfd48a0fe11a16acf78a +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/地砖.png b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/地砖.png new file mode 100644 index 0000000000..73ca7d9860 Binary files /dev/null and b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/地砖.png differ diff --git a/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/地砖.png.meta b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/地砖.png.meta new file mode 100644 index 0000000000..458928ac0b --- /dev/null +++ b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/地砖.png.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: 6f0ac04f2e700fa4f985c6269235f4db +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/大块山石.png b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/大块山石.png new file mode 100644 index 0000000000..2e434f5a83 Binary files /dev/null and b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/大块山石.png differ diff --git a/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/大块山石.png.meta b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/大块山石.png.meta new file mode 100644 index 0000000000..24b96f2644 --- /dev/null +++ b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/大块山石.png.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: e1793ce297934ce4f811bc9fecd84235 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/小石头土地.png b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/小石头土地.png new file mode 100644 index 0000000000..f5b281ce56 Binary files /dev/null and b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/小石头土地.png differ diff --git a/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/小石头土地.png.meta b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/小石头土地.png.meta new file mode 100644 index 0000000000..04223e7e48 --- /dev/null +++ b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/小石头土地.png.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: 77c26a19a43477349805b77e1f61a5a6 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/森林石草地.png b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/森林石草地.png new file mode 100644 index 0000000000..59e423b4c0 Binary files /dev/null and b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/森林石草地.png differ diff --git a/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/森林石草地.png.meta b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/森林石草地.png.meta new file mode 100644 index 0000000000..ffd55adb8e --- /dev/null +++ b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/森林石草地.png.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: f76b0de48c321eb469922435d2fba676 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/正石头路.png b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/正石头路.png new file mode 100644 index 0000000000..af02416b0a Binary files /dev/null and b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/正石头路.png differ diff --git a/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/正石头路.png.meta b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/正石头路.png.meta new file mode 100644 index 0000000000..95c51e6abe --- /dev/null +++ b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/正石头路.png.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: 5923de13232cf8c45893c9f87f7cc971 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/河底小石头.png b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/河底小石头.png new file mode 100644 index 0000000000..5bf0ee941a Binary files /dev/null and b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/河底小石头.png differ diff --git a/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/河底小石头.png.meta b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/河底小石头.png.meta new file mode 100644 index 0000000000..4ad4ca5fdb --- /dev/null +++ b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/河底小石头.png.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: 4a62d7c65e362df44aa763a03950ba9a +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/落叶草地.png b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/落叶草地.png new file mode 100644 index 0000000000..e956b47378 Binary files /dev/null and b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/落叶草地.png differ diff --git a/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/落叶草地.png.meta b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/落叶草地.png.meta new file mode 100644 index 0000000000..af39f6b46f --- /dev/null +++ b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/落叶草地.png.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: d64094a49477c6f4aae58280a6309469 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/蓝色能量地面.png b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/蓝色能量地面.png new file mode 100644 index 0000000000..722345e16c Binary files /dev/null and b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/蓝色能量地面.png differ diff --git a/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/蓝色能量地面.png.meta b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/蓝色能量地面.png.meta new file mode 100644 index 0000000000..5b279ae4ff --- /dev/null +++ b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/蓝色能量地面.png.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: 2023d5d869e902b45b053b8e305b0879 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/高草地.png b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/高草地.png new file mode 100644 index 0000000000..7ce7777d96 Binary files /dev/null and b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/高草地.png differ diff --git a/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/高草地.png.meta b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/高草地.png.meta new file mode 100644 index 0000000000..2a54d7599b --- /dev/null +++ b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/2014/高草地.png.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: b9321e916df07c247b433d6f0b0ce158 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/结婚场景.meta b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/结婚场景.meta new file mode 100644 index 0000000000..f3b8eb780d --- /dev/null +++ b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/结婚场景.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 52f7a7bdf9ded9c44bffa1d98d2bd5be +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/结婚场景/石地面砖5.png b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/结婚场景/石地面砖5.png new file mode 100644 index 0000000000..75c7b2659d Binary files /dev/null and b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/结婚场景/石地面砖5.png differ diff --git a/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/结婚场景/石地面砖5.png.meta b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/结婚场景/石地面砖5.png.meta new file mode 100644 index 0000000000..ea0cdf453b --- /dev/null +++ b/Assets/ModelRenderer/Art/Textures/textures/maps/dds地面贴图/满堂地表贴图/结婚场景/石地面砖5.png.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: d792b160621dd214198cd2191bf098b3 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/PerfectWorld/Scene/TaskTest.unity b/Assets/PerfectWorld/Scene/TaskTest.unity index 4899f388cf..4b95fd26fc 100644 --- a/Assets/PerfectWorld/Scene/TaskTest.unity +++ b/Assets/PerfectWorld/Scene/TaskTest.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cab1859604c344f40d95193e09f40e355439020145e4aad304249834dd8361b4 -size 41209 +oid sha256:79aee339596409d8a47e0a553b1257768bd84fa0e0d6261052b33c1077658ab0 +size 41493 diff --git a/Assets/PerfectWorld/Scripts/MainFiles/EC_Game.cs b/Assets/PerfectWorld/Scripts/MainFiles/EC_Game.cs index e1d3b37f20..95c10c34ee 100644 --- a/Assets/PerfectWorld/Scripts/MainFiles/EC_Game.cs +++ b/Assets/PerfectWorld/Scripts/MainFiles/EC_Game.cs @@ -94,9 +94,9 @@ namespace BrewMonster.Network #if UNITY_EDITOR if (TaskTest.Instance && - TaskTest.Instance.m_pTaskMan != null) + TaskTest.m_pTaskMan != null) { - m_pTaskMan = TaskTest.Instance.m_pTaskMan; + m_pTaskMan = TaskTest.m_pTaskMan; } #endif // Load task templates diff --git a/Assets/PerfectWorld/Scripts/Network/CSNetwork/C2SCommand/C2SCommandFactory.cs b/Assets/PerfectWorld/Scripts/Network/CSNetwork/C2SCommand/C2SCommandFactory.cs index 85c3559046..67f2189fc7 100644 --- a/Assets/PerfectWorld/Scripts/Network/CSNetwork/C2SCommand/C2SCommandFactory.cs +++ b/Assets/PerfectWorld/Scripts/Network/CSNetwork/C2SCommand/C2SCommandFactory.cs @@ -6,6 +6,7 @@ using System.Numerics; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Threading.Tasks; +using BrewMonster.Scripts.Task; using static Unity.Burst.Intrinsics.X86.Avx; namespace CSNetwork.C2SCommand @@ -583,11 +584,17 @@ namespace CSNetwork.C2SCommand } // TODO: Check orginal C++ implementation - public static Octets CreateTaskNotifyCmd() + public static Octets CreateTaskNotifyCmd(byte[] pData, uint dwDataSize) { - var cmd = new cmd_header + if(pData == null || pData.Length == 0 || dwDataSize == 0) { - cmd = (ushort)CommandID.TASK_NOTIFY + return null; + } + + var cmd = new cmd_task_notify + { + size = dwDataSize, + placeholder = pData }; return SerializeCommand(CommandID.TASK_NOTIFY, cmd); } diff --git a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs index b05abbd041..1029be7765 100644 --- a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs +++ b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs @@ -1384,7 +1384,38 @@ namespace CSNetwork.GPDataType public const float MIN_MOVELEN_IN_AIR_WATER = 0.5f; public const float MIN_MOVELEN_ON_GROUND = 0.5f; public const float MIN_MOVELEN_FOR_DETECT_VIBRATION = 0.05f; + + /// + /// Convert a sequential-layout class into raw byte array. + /// + public static byte[] ToBytes(T obj) where T : struct + { + // Calculate size of the object in memory + int size = Marshal.SizeOf(obj); + + // Allocate unmanaged buffer + IntPtr buffer = Marshal.AllocHGlobal(size); + + try + { + // Copy managed data → unmanaged buffer + Marshal.StructureToPtr(obj, buffer, false); + + // Create byte array and copy unmanaged bytes → managed + byte[] result = new byte[size]; + Marshal.Copy(buffer, result, 0, size); + + return result; + } + finally + { + // Always free allocated memory to avoid leaks + Marshal.FreeHGlobal(buffer); + } + } + } + [StructLayout(LayoutKind.Sequential, Pack = 1)] public struct cmd_skill_data { @@ -1710,6 +1741,17 @@ namespace CSNetwork.GPDataType public int expiretime; public char flag; }; + + [StructLayout(LayoutKind.Sequential, Pack = 1)] + public struct cmd_task_notify + { + public uint size; + // In C++, placeholder is byte. It used to first byte of a byte[] data + // but in C# we need to define it as byte[] to hold the whole data. + //public byte placeholder; // Task data ... + public byte[] placeholder; // Task data ... + } + } diff --git a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs index d1bc82be90..e2433a1e56 100644 --- a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs +++ b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs @@ -1250,10 +1250,10 @@ namespace CSNetwork } } - public void c2s_SendCmdTaskNotify(ref task_notify_base pBuf, uint sz) + public void c2s_SendCmdTaskNotify(byte[] pData, uint dwDataSize) { gamedatasend gamedatasend = new gamedatasend(); - gamedatasend.Data = C2SCommandFactory.CreateTaskNotifyCmd(); + gamedatasend.Data = C2SCommandFactory.CreateTaskNotifyCmd( pData, dwDataSize); SendProtocol(gamedatasend); } } diff --git a/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs b/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs index cde6b56ab8..a4064b7c29 100644 --- a/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs +++ b/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs @@ -311,9 +311,9 @@ namespace BrewMonster.Network Instance._gameSession.c2s_SendCmdGetAllData(byPack, byEquip, byTask); } - public static void c2s_CmdTaskNotify(ref task_notify_base pBuf, uint sz) + public static void c2s_CmdTaskNotify( byte[] pBuf, uint sz) { - Instance._gameSession.c2s_SendCmdTaskNotify(ref pBuf, sz); + Instance._gameSession.c2s_SendCmdTaskNotify( pBuf, sz); } #endregion diff --git a/Assets/PerfectWorld/Scripts/Task/ATaskTemplMan.cs b/Assets/PerfectWorld/Scripts/Task/ATaskTemplMan.cs index 52a97d1945..46446806a2 100644 --- a/Assets/PerfectWorld/Scripts/Task/ATaskTemplMan.cs +++ b/Assets/PerfectWorld/Scripts/Task/ATaskTemplMan.cs @@ -13,6 +13,7 @@ namespace BrewMonster.Scripts.Task /// contains and manages all task templates /// init in EC_Game /// + [Serializable] public class ATaskTemplMan { public int TaskLoadedCount => m_TaskTemplMap.Count; @@ -373,17 +374,12 @@ namespace BrewMonster.Scripts.Task // unsigned int set_id = GetTaskTemplMan()->GetTaskStorageId(id); uint set_id = GetTaskStorageId(id); - if (set_id > 0) { - // unsigned short* arr = pLst->m_Storages[set_id-1]; - int start = ((int)set_id - 1) * TaskTemplConstants.TASK_STORAGE_LEN; - ushort[] arr = new ushort[TaskTemplConstants.TASK_STORAGE_LEN]; - Array.Copy(pLst.m_Storages, start, arr, 0, TaskTemplConstants.TASK_STORAGE_LEN); - - // int i; + int start = (int)set_id - 1; + ushort[] arr = pLst.m_Storages; - for (int i = 0; i < TaskTemplConstants.TASK_STORAGE_LEN; i++) + for (int i = start; i < TaskTemplConstants.TASK_STORAGE_LEN; i++) { if (arr[i] == (ushort)id) { @@ -427,9 +423,9 @@ namespace BrewMonster.Scripts.Task } } - private void _notify_svr(TaskInterface pPlayer, byte uiNotifyType, ushort idData) + private void _notify_svr(TaskInterface pTask, byte uReason, ushort uTaskID) { - ATaskTempl._notify_svr(pPlayer, uiNotifyType, idData); + ATaskTempl._notify_svr(pTask, uReason, uTaskID); } public void CheckAutoDelv(TaskInterface pTask) diff --git a/Assets/PerfectWorld/Scripts/Task/CECTaskInterface.cs b/Assets/PerfectWorld/Scripts/Task/CECTaskInterface.cs index e0a314c53d..73221fb451 100644 --- a/Assets/PerfectWorld/Scripts/Task/CECTaskInterface.cs +++ b/Assets/PerfectWorld/Scripts/Task/CECTaskInterface.cs @@ -7,6 +7,7 @@ using System; using System.Collections.Generic; using System.IO; using System.Runtime.InteropServices; +using CSNetwork; using UnityEngine; namespace BrewMonster.Scripts.Task @@ -362,12 +363,7 @@ namespace BrewMonster.Scripts.Task return false; } - // allocate internal buffers and copy; remaining bytes are zero-initialized in C# - // m_pActiveListRawBuf = new byte[TaskInterfaceConstants.TASK_ACTIVE_LIST_BUF_SIZE]; - // { - // int copy = Mathf.Min(iActiveListLen, TaskInterfaceConstants.TASK_ACTIVE_LIST_BUF_SIZE); - // if (copy > 0) System.Buffer.BlockCopy(pActiveListBuf, 0, m_pActiveListRawBuf, 0, copy); - // } + m_pActiveListBuf = new ActiveTaskList(); m_pActiveListBuf.ReadFromBuffer(pActiveListBuf); @@ -1310,11 +1306,6 @@ namespace BrewMonster.Scripts.Task if (m_TasksToConfirm.TryGetValue(iTaskID, out ret)) return ret; return false; } - - public void NotifyServer(ref task_notify_base pBuf, uint sz) - { - UnityGameSession.c2s_CmdTaskNotify(ref pBuf, sz); - } public bool CheckVersion() { @@ -1436,6 +1427,12 @@ namespace BrewMonster.Scripts.Task break; } } + + public void NotifyServer(byte[] pBuf, uint sz) + { + // g_pGame->GetGameSession()->c2s_CmdTaskNotify(pBuf, sz); + UnityGameSession.c2s_CmdTaskNotify(pBuf, sz); + } } diff --git a/Assets/PerfectWorld/Scripts/Task/TaskClient.cs b/Assets/PerfectWorld/Scripts/Task/TaskClient.cs index c39a93ea5f..ea4a0ef74f 100644 --- a/Assets/PerfectWorld/Scripts/Task/TaskClient.cs +++ b/Assets/PerfectWorld/Scripts/Task/TaskClient.cs @@ -3,6 +3,7 @@ using System.Reflection; using System.Runtime.InteropServices; using BrewMonster.Network; using BrewMonster.Scripts.Task; +using CSNetwork.GPDataType; using PerfectWorld.Scripts.Task; using UnityEngine; @@ -312,17 +313,9 @@ namespace BrewMonster.Scripts.Task if (sz < (uint)Marshal.SizeOf()) return; // Marshal base notification structure from buffer - GCHandle handle = GCHandle.Alloc(pBuf, GCHandleType.Pinned); - task_notify_base pNotify; - try - { - pNotify = Marshal.PtrToStructure(handle.AddrOfPinnedObject()); - } - finally - { - handle.Free(); - } - + task_notify_base pNotify = GPDataTypeHelper.FromBytes(pBuf); + BMLogger.Log($"[TaskClient] OnServerNotify: reason={pNotify.reason}, task={pNotify.task}"); + ATaskTempl pTempl = null; ActiveTaskEntry pEntry = null; @@ -409,11 +402,10 @@ namespace BrewMonster.Scripts.Task { // Tsvr_task_special_award and special_award structs not defined; need to define if (sz != Marshal.SizeOf()) return; - // TODO: OnSpecialAward method not found in ATaskTemplMan; implement if needed ATaskTemplMan pMan = GetTaskTemplMan(); if (pMan != null) { - svr_task_special_award awardNotify = Marshal.PtrToStructure(handle.AddrOfPinnedObject()); + svr_task_special_award awardNotify = GPDataTypeHelper.FromBytes(pBuf); pMan.OnSpecialAward(awardNotify.sa, pTask); if (awardNotify.sa.id1 == 0) { @@ -501,7 +493,7 @@ namespace BrewMonster.Scripts.Task // Clear valid count and process server notification pTempl.ClearValidCount(); // OnServerNotify method signature may need adjustment for C# (ref/out parameters) - pTempl.OnServerNotify(pTask, pEntry, ref pNotify, sz); + pTempl.OnServerNotify(pTask, pEntry, pNotify, sz, pBuf); } // Helper method to get task template manager diff --git a/Assets/PerfectWorld/Scripts/Task/TaskInterface.cs b/Assets/PerfectWorld/Scripts/Task/TaskInterface.cs index 3f904993c5..b33ec6f88c 100644 --- a/Assets/PerfectWorld/Scripts/Task/TaskInterface.cs +++ b/Assets/PerfectWorld/Scripts/Task/TaskInterface.cs @@ -127,7 +127,7 @@ namespace BrewMonster.Scripts.Task uint GetAccountTotalCash(); uint GetCurTime(); void SetFinishDlgShowTime(int t); - void NotifyServer(ref task_notify_base pBuf, uint sz); + void NotifyServer( byte[] pBuf, uint sz); bool CheckVersion(); StorageTaskList GetStorageTaskList(); void ShowPunchBagMessage(bool bSucced,bool bMax,uint MonsterTemplID,int dps,int dph); diff --git a/Assets/PerfectWorld/Scripts/Task/TaskProcess.cs b/Assets/PerfectWorld/Scripts/Task/TaskProcess.cs index 6e07377c01..88153334cf 100644 --- a/Assets/PerfectWorld/Scripts/Task/TaskProcess.cs +++ b/Assets/PerfectWorld/Scripts/Task/TaskProcess.cs @@ -515,7 +515,7 @@ namespace BrewMonster.Scripts.Task // bool IsTimeMarkUpdate() const { return (m_uListState & TLIST_STATE_UPDATE_TIME_MARK) != 0; } // void SetTimeMarkUpdate() { m_uListState |= TLIST_STATE_UPDATE_TIME_MARK; } // void ClearTimeMarkUpdate() { m_uListState &= ~TLIST_STATE_UPDATE_TIME_MARK; } - // int GetMaxSimultaneousCount() {return m_uMaxSimultaneousCount ? TASK_MAX_SIMULTANEOUS_COUT : TASK_DEFAULT_MAX_SIMULTANEOUS_COUT;} + public int GetMaxSimultaneousCount() {return m_uMaxSimultaneousCount ? TaskTemplConstants.TASK_MAX_SIMULTANEOUS_COUT : TaskTemplConstants.TASK_DEFAULT_MAX_SIMULTANEOUS_COUT;} public void ExpandMaxSimultaneousCount() { m_uMaxSimultaneousCount = true; diff --git a/Assets/PerfectWorld/Scripts/Task/TaskTempl.Method.cs b/Assets/PerfectWorld/Scripts/Task/TaskTempl.Method.cs index c430422286..7df89ff3ff 100644 --- a/Assets/PerfectWorld/Scripts/Task/TaskTempl.Method.cs +++ b/Assets/PerfectWorld/Scripts/Task/TaskTempl.Method.cs @@ -2,6 +2,7 @@ using System; using System.Runtime.InteropServices; using BrewMonster.Network; using BrewMonster.Scripts.Task; +using CSNetwork.GPDataType; using PerfectWorld.Scripts.Task; namespace BrewMonster.Scripts.Task @@ -387,8 +388,9 @@ namespace BrewMonster.Scripts.Task public void OnServerNotify( TaskInterface pTask, ActiveTaskEntry pEntry, - ref task_notify_base pNotify, - uint sz) + task_notify_base pNotify, + uint sz, + byte[] pBuf) // In C++ pNotify is a pointer to raw data; here we pass the full byte array for parsing { uint ulTime = 0, ulCaptainTask = 0; ActiveTaskList pLst = null; @@ -396,10 +398,10 @@ namespace BrewMonster.Scripts.Task task_sub_tags sub_tags = new task_sub_tags(); // memset(&sub_tags, 0, sizeof(sub_tags)); uint i=0; - svr_monster_killed pKilled = null; - svr_player_killed pKilledPlayer = null; + svr_monster_killed pKilled = new svr_monster_killed(); + svr_player_killed pKilledPlayer = new svr_player_killed(); StorageTaskList pStorage = pTask.GetStorageTaskList(); - svr_treasure_map pTreasure = null; + svr_treasure_map pTreasure = new svr_treasure_map(); var m_enumMethod = m_FixedData.m_enumMethod; switch (pNotify.reason) @@ -409,7 +411,7 @@ namespace BrewMonster.Scripts.Task if (sz != Marshal.SizeOf()) break; if (m_enumMethod != (uint)TaskCompletionMethod.enumTMKillPlayer) break; - pKilledPlayer = new svr_player_killed(pNotify); + pKilledPlayer = GPDataTypeHelper.FromBytes(pBuf); int iIndex = pKilledPlayer.index; if (iIndex < TaskInterfaceConstants.MAX_MONSTER_WANTED) { @@ -420,7 +422,7 @@ namespace BrewMonster.Scripts.Task case TaskTemplConstants.TASK_SVR_NOTIFY_TREASURE_MAP: if (m_enumMethod == (uint)TaskCompletionMethod.enumTMReachTreasureZone) { - pTreasure = new svr_treasure_map(pNotify); + pTreasure = GPDataTypeHelper.FromBytes(pBuf); pEntry.m_iUsefulData1 = pTreasure.treasure_index; } break; @@ -428,7 +430,7 @@ namespace BrewMonster.Scripts.Task if (sz != Marshal.SizeOf()) break; if (m_enumMethod != (uint)TaskCompletionMethod.enumTMKillNumMonster) break; - pKilled = new svr_monster_killed(pNotify); + pKilled = GPDataTypeHelper.FromBytes(pBuf); for (i = 0; i < m_FixedData.m_ulMonsterWanted; i++) { @@ -448,8 +450,12 @@ namespace BrewMonster.Scripts.Task break; case TaskTemplConstants.TASK_SVR_NOTIFY_NEW: - var svr_new_task = new svr_new_task(pNotify); - if (svr_new_task.valid_size((int)sz) ) break; + var svr_new_task = GPDataTypeHelper.FromBytes(pBuf); + if (svr_new_task.valid_size((int)sz)) + { + BMLogger.LogError($" [TASK_SVR_NOTIFY_NEW] the size of byte not meet !!!"); + break; + } pLst = pTask.GetActiveTaskList(); svr_new_task.get_data( ref ulTime, @@ -511,7 +517,7 @@ namespace BrewMonster.Scripts.Task break; case TaskTemplConstants.TASK_SVR_NOTIFY_COMPLETE: - var svr_task_complete = new svr_task_complete(pNotify); + var svr_task_complete = GPDataTypeHelper.FromBytes(pBuf); if (svr_task_complete.valid_size((int)sz)) break; svr_task_complete.get_data( ref ulTime, @@ -587,7 +593,8 @@ namespace BrewMonster.Scripts.Task task_notify_base notify = new task_notify_base(); notify.reason = uReason; notify.task = uTaskID; - pTask.NotifyServer( ref notify, (uint)Marshal.SizeOf()); + // pTask.NotifyServer( notify, (uint)Marshal.SizeOf()); + pTask.NotifyServer( GPDataTypeHelper.ToBytes(notify), (uint)Marshal.SizeOf()); } #else // void NotifyClient (TaskInterface* pTask, const ActiveTaskEntry* pEntry, unsigned char uReason, unsigned long ulCurTime, unsigned long ulParam = 0, int dps = 0, int dph = 0) const; @@ -777,9 +784,35 @@ namespace BrewMonster.Scripts.Task // 检查任务栏容量与空间 // English: Check task list budget and space public uint CheckBudget(ActiveTaskList pList) { - // TODO: Convert full logic with TASK_HIDDEN_COUNT/TASK_TITLE_TASK_COUNT/TASK_ACTIVE_LIST_MAX_LEN and list counters when constants and fields are available - // 占位返回通过 // English: Placeholder pass - return 0u; + // Convert full logic with TASK_HIDDEN_COUNT/TASK_TITLE_TASK_COUNT/TASK_ACTIVE_LIST_MAX_LEN and list counters when constants and fields are available + // // 占位返回通过 // English: Placeholder pass + // return 0u; + + var m_bHidden = m_FixedData.m_bHidden; + var m_bDisplayInTitleTaskUI = m_FixedData.m_bHidden; + var m_ID = m_FixedData.m_ID; + + + // ����ﵽ���� + bool bReachLimit = false; + if (m_bHidden) + bReachLimit = pList.m_uTopHideTaskCount >= TASK_HIDDEN_COUNT; + else if (m_bDisplayInTitleTaskUI) + bReachLimit = bReachLimit || pList.m_uTitleTaskCount >= TASK_TITLE_TASK_COUNT; + else + bReachLimit = bReachLimit || pList.m_uTopShowTaskCount >= pList.GetMaxSimultaneousCount(); + + if (bReachLimit) + return TaskInterfaceConstants.TASK_PREREQU_FAIL_FULL; + + // Check Task List Empty Space + if (pList.m_uUsedCount + m_uDepth > TaskInterfaceConstants.TASK_ACTIVE_LIST_MAX_LEN) + return TaskInterfaceConstants.TASK_PREREQU_FAIL_NO_SPACE; + + // �Ƿ�������ͬ���� + if (pList.GetEntry(m_ID) != null) return TaskInterfaceConstants.TASK_PREREQU_FAIL_SAME_TASK; + + return 0; } // inline unsigned long ATaskTempl::CheckGivenItems(TaskInterface* pTask) const @@ -1980,15 +2013,18 @@ namespace BrewMonster.Scripts.Task switch (uReason) { case TaskTemplConstants.TASK_SVR_NOTIFY_PLAYER_KILLED: - var svr_player_killed = new svr_player_killed(pNotify); + var svr_player_killed = new svr_player_killed(); + svr_player_killed.baseObj = pNotify; + svr_player_killed.player_num = pEntry.m_wMonsterNum[ulParam]; svr_player_killed.index = (ushort)ulParam; sz = Marshal.SizeOf(svr_player_killed); break; case TaskTemplConstants.TASK_SVR_NOTIFY_MONSTER_KILLED: { - var svrMonsterKilled = new svr_monster_killed(pNotify) + var svrMonsterKilled = new svr_monster_killed() { + baseObj = pNotify, monster_id = m_MonsterWanted[ulParam].m_ulMonsterTemplId, monster_num = pEntry.m_wMonsterNum[ulParam], dps = (dps != 0 && dph != 0) ? dps : 0, @@ -2005,7 +2041,10 @@ namespace BrewMonster.Scripts.Task // reinterpret_cast(pEntry), // *(reinterpret_cast(ulParam)) // ); - var svrNewTask = new svr_new_task(pNotify); + var svrNewTask = new svr_new_task + { + baseObj = pNotify, + }; svrNewTask.set_data( ulCurTime, pEntry.m_ID, @@ -2020,7 +2059,10 @@ namespace BrewMonster.Scripts.Task // *(reinterpret_cast(ulParam)) // ); // sz = static_cast(pNotify)->get_size(); - var svrTaskComplete = new svr_task_complete(pNotify); + var svrTaskComplete = new svr_task_complete + { + baseObj = pNotify, + }; svrTaskComplete.set_data( ulCurTime, Marshal.PtrToStructure((IntPtr)ulParam) @@ -2033,7 +2075,10 @@ namespace BrewMonster.Scripts.Task sz = Marshal.SizeOf(); break; case TaskTemplConstants.TASK_SVR_NOTIFY_ERROR_CODE: - var svrTaskErrCode = new svr_task_err_code(pNotify); + var svrTaskErrCode = new svr_task_err_code + { + baseObj = pNotify + }; svrTaskErrCode.err_code = ulParam; sz = Marshal.SizeOf( svrTaskErrCode ); break; diff --git a/Assets/PerfectWorld/Scripts/Task/TaskTempl.Struct.cs b/Assets/PerfectWorld/Scripts/Task/TaskTempl.Struct.cs index d29f2f3dfb..9e46c1af91 100644 --- a/Assets/PerfectWorld/Scripts/Task/TaskTempl.Struct.cs +++ b/Assets/PerfectWorld/Scripts/Task/TaskTempl.Struct.cs @@ -1,4 +1,5 @@ using System; +using System.Linq; using System.Runtime.InteropServices; using CSNetwork.GPDataType; @@ -38,57 +39,37 @@ namespace BrewMonster.Scripts.Task [StructLayout(LayoutKind.Sequential, Pack = 1)] - public class task_notify_base + public struct task_notify_base { public byte reason; public ushort task; }; [StructLayout(LayoutKind.Sequential, Pack = 1)] - public struct cmd_task_notify - { - public uint size; - public byte placeholder; // Task data ... - } - - [StructLayout(LayoutKind.Sequential, Pack = 1)] - public class svr_monster_killed : task_notify_base + public struct svr_monster_killed { + public task_notify_base baseObj; public uint monster_id; public ushort monster_num; public int dps; public int dph; - - public svr_monster_killed(task_notify_base baseObj) - { - reason = baseObj.reason; - task = baseObj.task; - } - }; + } [StructLayout(LayoutKind.Sequential, Pack = 1)] - public class svr_player_killed : task_notify_base + public struct svr_player_killed { + public task_notify_base baseObj; public ushort index; public ushort player_num; - - public svr_player_killed(task_notify_base baseObj) - { - reason = baseObj.reason; - task = baseObj.task; - } - }; + + } [StructLayout(LayoutKind.Sequential, Pack = 1)] - public class svr_task_err_code : task_notify_base + public struct svr_task_err_code { + public task_notify_base baseObj; public uint err_code; - public svr_task_err_code(task_notify_base baseObj) - { - reason = baseObj.reason; - task = baseObj.task; - } }; [StructLayout(LayoutKind.Sequential, Pack = 1)] @@ -106,8 +87,13 @@ namespace BrewMonster.Scripts.Task // NOTE: union [MarshalAs(UnmanagedType.ByValArray, SizeConst = TaskTemplConstants.TASK_STORAGE_COUNT)] public ushort[] m_StoragesTaskSetCount; - [MarshalAs(UnmanagedType.ByValArray, SizeConst = TaskTemplConstants.TASK_STORAGE_COUNT)] - public ushort[] m_StoragesRefreshCount; + + // [MarshalAs(UnmanagedType.ByValArray, SizeConst = TaskTemplConstants.TASK_STORAGE_COUNT)] + public ushort[] m_StoragesRefreshCount + { + get => m_StoragesTaskSetCount; + set { m_StoragesTaskSetCount = value; } + } [MarshalAs(UnmanagedType.ByValArray, SizeConst = TaskTemplConstants.TASK_STORAGE_COUNT)] public uint[] m_StoragesRefreshTime; @@ -146,7 +132,7 @@ namespace BrewMonster.Scripts.Task for (int i=0; i < TaskTemplConstants.TASK_STORAGE_COUNT; i++) { m_StoragesTaskSetCount[i] = BitConverter.ToUInt16(data, offset + i * 2); - m_StoragesRefreshCount[i] = BitConverter.ToUInt16(data, offset + i * 2); + // m_StoragesRefreshCount[i] = BitConverter.ToUInt16(data, offset + i * 2); } offset += TaskTemplConstants.TASK_STORAGE_COUNT * 2; @@ -163,20 +149,16 @@ namespace BrewMonster.Scripts.Task } } - public class svr_new_task : task_notify_base + [ StructLayout(LayoutKind.Sequential, Pack = 1)] + public struct svr_new_task { + public task_notify_base baseObj; public uint cur_time; public uint cap_task; // In C++ use to store ActiveTaskEntry pointer's address -> In C#, we just store the task ID public task_sub_tags sub_tags; // public ActiveTaskEntry cap_task_entry; // - - public svr_new_task(task_notify_base baseObj) - { - reason = baseObj.reason; - task = baseObj.task; - } - + public void set_data( uint _cur_time, uint _cap_task, @@ -210,15 +192,12 @@ namespace BrewMonster.Scripts.Task } } - public class svr_treasure_map : task_notify_base + [ StructLayout(LayoutKind.Sequential, Pack = 1)] + public struct svr_treasure_map { + public task_notify_base baseObj; public int treasure_index; - public svr_treasure_map(task_notify_base baseObj) - { - reason = baseObj.reason; - task = baseObj.task; - } } struct tm { @@ -281,16 +260,13 @@ namespace BrewMonster.Scripts.Task // } } } - public class svr_task_complete : task_notify_base + + [ StructLayout(LayoutKind.Sequential, Pack = 1)] + public struct svr_task_complete { + public task_notify_base baseObj; public uint cur_time; public task_sub_tags sub_tags; - - public svr_task_complete(task_notify_base baseObj) - { - reason = baseObj.reason; - task = baseObj.task; - } public void set_data( uint _cur_time, @@ -330,15 +306,11 @@ namespace BrewMonster.Scripts.Task }; [StructLayout( LayoutKind.Sequential, Pack = 1)] - public class svr_task_special_award : task_notify_base + public struct svr_task_special_award { + public svr_task_complete baseObj; public special_award sa; - - public svr_task_special_award(task_notify_base baseObj) - { - reason = baseObj.reason; - task = baseObj.task; - } + }; [StructLayout(LayoutKind.Sequential, Pack = 1)] diff --git a/Assets/PerfectWorld/Scripts/Task/TaskTempl.cs b/Assets/PerfectWorld/Scripts/Task/TaskTempl.cs index cfe1825d25..9d719f0a22 100644 --- a/Assets/PerfectWorld/Scripts/Task/TaskTempl.cs +++ b/Assets/PerfectWorld/Scripts/Task/TaskTempl.cs @@ -109,6 +109,11 @@ namespace BrewMonster.Scripts.Task public const int TASK_STORAGE_COUNT = 32; public const int TASK_STORAGE_LEN = 10; + + public const int TASK_DEFAULT_MAX_SIMULTANEOUS_COUT = 20; + public const int TASK_MAX_SIMULTANEOUS_COUT = 30; + public const int TASK_HIDDEN_COUNT = 30; // formally 6, for test + public const int TASK_TITLE_TASK_COUNT = 10 ; // 锟狡猴拷锟斤拷锟斤拷锟斤拷锟斤拷 } @@ -129,53 +134,53 @@ namespace BrewMonster.Scripts.Task public short z; } - public class ServerNotificationConstants - { - // 新任务发放 // New task issued - public const int TASK_SVR_NOTIFY_NEW = 1; - - // 任务完毕 // Task completed - public const int TASK_SVR_NOTIFY_COMPLETE = 2; - - // 任务放弃 // Task abandoned - public const int TASK_SVR_NOTIFY_GIVE_UP = 3; - - // 杀怪数量 // Monster kill count - public const int TASK_SVR_NOTIFY_MONSTER_KILLED = 4; - - // 处于得到奖励状态 // In reward receiving state - public const int TASK_SVR_NOTIFY_FINISHED = 5; - - // 错误码 // Error code - public const int TASK_SVR_NOTIFY_ERROR_CODE = 6; - - // 遗忘生活技能 // Forget life skill - public const int TASK_SVR_NOTIFY_FORGET_SKILL = 7; - - // 动态任务时间标记 // Dynamic task time mark - public const int TASK_SVR_NOTIFY_DYN_TIME_MARK = 8; - - // 动态任务数据 // Dynamic task data - public const int TASK_SVR_NOTIFY_DYN_DATA = 9; - - // 特殊奖励信息 // Special reward info - public const int TASK_SVR_NOTIFY_SPECIAL_AWARD = 10; - - // 仓库数据 // Storage data - public const int TASK_SVR_NOTIFY_STORAGE = 11; - - // 显示全局变量 // Display global variables - public const int TASK_SVR_NOTIFY_DIS_GLOBAL_VAL = 12; - - // 藏宝位置 // Treasure location - public const int TASK_SVR_NOTIFY_TREASURE_MAP = 13; - - // 设置任务列表上限 // Set task list limit - public const int TASK_SVR_NOTIFY_SET_TASK_LIMIT = 14; - - // 杀人数量 // Player kill count - public const int TASK_SVR_NOTIFY_PLAYER_KILLED = 15; - } + // public class ServerNotificationConstants + // { + // // 新任务发放 // New task issued + // public const int TASK_SVR_NOTIFY_NEW = 1; + // + // // 任务完毕 // Task completed + // public const int TASK_SVR_NOTIFY_COMPLETE = 2; + // + // // 任务放弃 // Task abandoned + // public const int TASK_SVR_NOTIFY_GIVE_UP = 3; + // + // // 杀怪数量 // Monster kill count + // public const int TASK_SVR_NOTIFY_MONSTER_KILLED = 4; + // + // // 处于得到奖励状态 // In reward receiving state + // public const int TASK_SVR_NOTIFY_FINISHED = 5; + // + // // 错误码 // Error code + // public const int TASK_SVR_NOTIFY_ERROR_CODE = 6; + // + // // 遗忘生活技能 // Forget life skill + // public const int TASK_SVR_NOTIFY_FORGET_SKILL = 7; + // + // // 动态任务时间标记 // Dynamic task time mark + // public const int TASK_SVR_NOTIFY_DYN_TIME_MARK = 8; + // + // // 动态任务数据 // Dynamic task data + // public const int TASK_SVR_NOTIFY_DYN_DATA = 9; + // + // // 特殊奖励信息 // Special reward info + // public const int TASK_SVR_NOTIFY_SPECIAL_AWARD = 10; + // + // // 仓库数据 // Storage data + // public const int TASK_SVR_NOTIFY_STORAGE = 11; + // + // // 显示全局变量 // Display global variables + // public const int TASK_SVR_NOTIFY_DIS_GLOBAL_VAL = 12; + // + // // 藏宝位置 // Treasure location + // public const int TASK_SVR_NOTIFY_TREASURE_MAP = 13; + // + // // 设置任务列表上限 // Set task list limit + // public const int TASK_SVR_NOTIFY_SET_TASK_LIMIT = 14; + // + // // 杀人数量 // Player kill count + // public const int TASK_SVR_NOTIFY_PLAYER_KILLED = 15; + // } public class ClientNotificationConstants { diff --git a/Assets/PerfectWorld/Scripts/Task/TaskTest.cs b/Assets/PerfectWorld/Scripts/Task/TaskTest.cs index d444e9f969..922a697489 100644 --- a/Assets/PerfectWorld/Scripts/Task/TaskTest.cs +++ b/Assets/PerfectWorld/Scripts/Task/TaskTest.cs @@ -3,6 +3,8 @@ using System; using System.IO; using System.Reflection; using System.Runtime.InteropServices; +using BrewMonster.Scripts.Task.UI; +using ModelRenderer.Scripts.Common; using PerfectWorld.Scripts.Task; using UnityEngine; @@ -11,7 +13,8 @@ namespace BrewMonster.Scripts.Task { public class TaskTest : MonoSingleton { - public ATaskTemplMan m_pTaskMan; + public GameObject m_pTaskDlg; + public static ATaskTemplMan m_pTaskMan; // use static to store loaded data across instances public bool WasLoadTaskData = false; private void OnValidate() @@ -19,6 +22,27 @@ namespace BrewMonster.Scripts.Task WasLoadTaskData = m_pTaskMan != null && m_pTaskMan.TaskLoadedCount > 0; } + private void Update() + { +#if UNITY_EDITOR + if (Input.GetKeyDown(KeyCode.Q)) + { + m_pTaskDlg.SetActive(!m_pTaskDlg.activeInHierarchy); + } +#endif + } + + [ContextMenu("Show Task Name")] + public void ShowTaskName() + { + + var text01 = ByteToStringUtils.UshortArrayToUnicodeString(m_pTaskMan + .GetTaskTemplByID((uint)TaskTemplConstants.TASK_SPECIAL_AWARD[0]).m_FixedData.m_szName); + var text02 = ByteToStringUtils.UshortArrayToUnicodeString(m_pTaskMan + .GetTaskTemplByID((uint)TaskTemplConstants.TASK_SPECIAL_AWARD[1]).m_FixedData.m_szName); + Debug.Log($" Task Name 01: {text01} \n Task Name 02: {text02}"); + } + [ContextMenu("Load Data")] void LoadTaskData() { diff --git a/Assets/PerfectWorld/Scripts/Task/UI/DlgTask.cs b/Assets/PerfectWorld/Scripts/Task/UI/DlgTask.cs index f352c2b71f..4d9184acbb 100644 --- a/Assets/PerfectWorld/Scripts/Task/UI/DlgTask.cs +++ b/Assets/PerfectWorld/Scripts/Task/UI/DlgTask.cs @@ -29,7 +29,6 @@ namespace BrewMonster.Scripts.Task.UI } #endif - // Keep original macro as constant for array sizing public const int CDLGTASK_AWARDITEM_MAX = 8; @@ -133,6 +132,8 @@ namespace BrewMonster.Scripts.Task.UI // [中文] 任务跟踪计时器 // [English] Task trace counter private CECCounter m_TaskTraceCounter = new (); // CECCounter -> object placeholder + + public static DlgTask Instance; #region Unity METHODS @@ -160,6 +161,11 @@ namespace BrewMonster.Scripts.Task.UI Tick(); } + private void OnDestroy() + { + Instance = null; + } + #endregion #region PUBLIC METHODS @@ -605,7 +611,10 @@ namespace BrewMonster.Scripts.Task.UI } // // //�������������б��������ɽ�������ѽ����� zhangyitian - // bool UpdateQuestView(); + public bool UpdateQuestView() + { + return UpdateTask() && SearchForTask(); + } // // bool IsPQTaskOrSubTask(int idTask); // bool IsTreasureMapTask(int idTask); diff --git a/Assets/PerfectWorld/Scripts/UI/GamePlay/EC_GameUIMan.cs b/Assets/PerfectWorld/Scripts/UI/GamePlay/EC_GameUIMan.cs index 291031739d..b43ace4a56 100644 --- a/Assets/PerfectWorld/Scripts/UI/GamePlay/EC_GameUIMan.cs +++ b/Assets/PerfectWorld/Scripts/UI/GamePlay/EC_GameUIMan.cs @@ -6,6 +6,8 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; +using BrewMonster.Scripts.Task; +using BrewMonster.Scripts.Task.UI; using UnityEngine; namespace BrewMonster.UI @@ -15,6 +17,7 @@ namespace BrewMonster.UI DlgNPC m_pDlgNPC; public NPC_ESSENCE? m_pCurNPCEssence; public int m_idCurFinishTask = -1; + private DlgTask m_pDlgTask => DlgTask.Instance; public static bool TALKPROC_IS_TERMINAL(uint id) { @@ -59,6 +62,47 @@ namespace BrewMonster.UI //EC_Game.GetGameRun().GetHostPlayer().EndNPCService(); EC_ManMessageMono.Instance.EC_ManPlayer.GetHostPlayer().EndNPCService(); } + + public bool UpdateTask(uint idTask, int reason) + { + // TODO: + // CDlgTaskTrace* pDlg = dynamic_cast(GetDialog("Win_QuestMinion")); + // if (pDlg) { + // pDlg->SetBtnUnTraceY(-1, 0); + // pDlg->UpdateContributionTask(); + // if (reason == TASK_SVR_NOTIFY_NEW) + // pDlg->OnTaskNew(idTask); + // } + + // TODO + // ���´���������� + // if (reason == TaskTemplConstants.TASK_SVR_NOTIFY_NEW) + // { + // m_pDlgQuestionTask.AddQuestionTask(idTask); + // } + // else if (reason == TaskTemplConstants.TASK_SVR_NOTIFY_COMPLETE || reason == TaskTemplConstants.TASK_SVR_NOTIFY_GIVE_UP) + // { + // m_pDlgQuestionTask.RemoveQuestionTask(idTask); + // } + + if(reason == TaskTemplConstants.TASK_SVR_NOTIFY_STORAGE) + { + // TODO + // CDlgTaskList* pDlg = (CDlgTaskList*)GetDialog("Win_QuestList"); + // if (pDlg && pDlg.IsShow()) + // { + // // refresh data in OnShow() + // pDlg.RefreshTaskList(); + // } + return true; + } + else + { + // zhangyitian 20140521 + // �������ʱ���ɽ������б�ҲҪ���£������˿ɽ������б������µ����� + return m_pDlgTask.UpdateQuestView(); + } + } } public enum EC_GAMEUI_ICONS diff --git a/Assets/PerfectWorld/Scripts/UI/HUDPlayer.cs b/Assets/PerfectWorld/Scripts/UI/HUDPlayer.cs index ce7c7ea87c..8e55d1efad 100644 --- a/Assets/PerfectWorld/Scripts/UI/HUDPlayer.cs +++ b/Assets/PerfectWorld/Scripts/UI/HUDPlayer.cs @@ -44,7 +44,7 @@ namespace BrewMonster private void UpdateHostPlayerInfoUI(cmd_self_info_00 obj) { - BMLogger.LogError("Update HUD Player Info"); + // BMLogger.LogError("Update HUD Player Info"); healthText.text = $"{obj.iHP}/{obj.iMaxHP}"; manaText.text = $"{obj.iMP}/{obj.iMaxMP}"; expText.text = $"{((float)obj.iExp/neededExp)*100}%"; diff --git a/Assets/PerfectWorld/Scripts/UI/Login/LoginScreenUI.cs b/Assets/PerfectWorld/Scripts/UI/Login/LoginScreenUI.cs index fd8b05427e..aff7ee75ef 100644 --- a/Assets/PerfectWorld/Scripts/UI/Login/LoginScreenUI.cs +++ b/Assets/PerfectWorld/Scripts/UI/Login/LoginScreenUI.cs @@ -159,10 +159,7 @@ namespace BrewMonster.UI UnityGameSession.RequestAllInventoriesAsync(() => { /*BMLogger.Log("Sent Inventory Detail Requests (all packs)");*/ }, 0, 1, 2); await Task.Delay(1000); UnityGameSession.RequestCheckSecurityPassWd(""); - await Task.Delay(10000); - UnityGameSession.RequesrQueryPlayerCash(); await Task.Delay(1000); - } //private void OnInventoryReceived(List inventoryData) diff --git a/Assets/PerfectWorld/Scripts/UI/UIPlayer.cs b/Assets/PerfectWorld/Scripts/UI/UIPlayer.cs index 3f6b670746..7965f78638 100644 --- a/Assets/PerfectWorld/Scripts/UI/UIPlayer.cs +++ b/Assets/PerfectWorld/Scripts/UI/UIPlayer.cs @@ -9,11 +9,12 @@ namespace BrewMonster.PerfectWorld.Scripts.UI public class UIPlayer : MonoBehaviour { public Image healthImage; - // public TextMeshProUGUI healthText; - public CECHostPlayer hostplayer; + // public TextMeshProUGUI healthText; + [Header("DEBUG")] + [SerializeField] private CECPlayer hostplayer; private void Start() { - hostplayer = GetComponentInParent(); + hostplayer = GetComponentInParent(); if (hostplayer == null) { Debug.LogError("Host player not found"); diff --git a/Assets/Scenes/a61.unity b/Assets/Scenes/a61.unity index fd6057f60b..9d6d48ae01 100644 --- a/Assets/Scenes/a61.unity +++ b/Assets/Scenes/a61.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:73d34a362e429fa75e583ca88989d3ab3d29f8d85bcdff8fa64582b7145930c2 -size 530552564 +oid sha256:a7e6f5ba276f3a9bc3eef485161bba926dcdbb3e98f53fd0cebd57efbf8a8bbc +size 200173095 diff --git a/Assets/Scenes/a61_Te.unity b/Assets/Scenes/a61_Te.unity new file mode 100644 index 0000000000..dec2e9c1c1 --- /dev/null +++ b/Assets/Scenes/a61_Te.unity @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2dbddc1e295aac8a88c415e4dd325144090f2a3289e9249b142ca5513d692cdb +size 192046192 diff --git a/Assets/Scenes/a61_Te.unity.meta b/Assets/Scenes/a61_Te.unity.meta new file mode 100644 index 0000000000..4c1ccddc66 --- /dev/null +++ b/Assets/Scenes/a61_Te.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d8506df92f662514986fe5556809250e +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/CECHostPlayer.cs b/Assets/Scripts/CECHostPlayer.cs index 87be8267d8..2e87a47ab8 100644 --- a/Assets/Scripts/CECHostPlayer.cs +++ b/Assets/Scripts/CECHostPlayer.cs @@ -528,7 +528,6 @@ namespace BrewMonster case int value when value == EC_MsgDef.MSG_HST_WAYPOINT: OnMsgHstWayPoint(Msg); break; case int value when value == EC_MsgDef.MSG_HST_SKILLDATA: OnMsgHstSkillData(Msg); break; case int value when value == EC_MsgDef.MSG_HST_DIED: OnMsgHstDied(Msg); break; - case int value when value == EC_MsgDef.MSG_HST_GOTO: OnMsgHstGoto(Msg); break; case int value when value == EC_MsgDef.MSG_HST_STARTATTACK: OnMsgHstStartAttack(Msg); break; case int value when value == EC_MsgDef.MSG_HST_STOPATTACK: OnMsgHstStopAttack(Msg); break; case int value when value == EC_MsgDef.MSG_HST_SKILLRESULT: OnMsgHstSkillResult(Msg); break; @@ -1185,6 +1184,9 @@ namespace BrewMonster m_pWorkMan?.FinishRunningWork(CECHPWork.Host_work_ID.WORK_DEAD); // Clear corpse state so player is alive again m_dwStates &= ~(uint)PlayerNPCState.GP_STATE_CORPSE; + UnityGameSession.c2s_CmdGetAllData(true, true, false); + UnityGameSession.c2s_CmdSendEnterPKPrecinct(); + UnityGameSession.RequesrQueryPlayerCash(); } public void OnMsgHstGoto(in ECMSG Msg) @@ -1335,6 +1337,7 @@ namespace BrewMonster public async void InitCharacter(cmd_self_info_1 role) { SetUpPlayer(); + m_dwStates = (uint)role.state; controller = GetComponent(); if (!controller) { @@ -1361,7 +1364,6 @@ namespace BrewMonster { visual.InitPlayerEventDoneHandler(); } - m_aabb.Center = GPDataTypeHelper.g_vOrigin; m_aabb.Extents.Set(0.3f, 0.9f, 0.3f); m_aabbServer = m_aabb; @@ -1378,12 +1380,18 @@ namespace BrewMonster //CECHPWorkDead pWork = (CECHPWorkDead*)m_pWorkMan->CreateWork(CECHPWork.Host_work_ID.WORK_DEAD); //pWork->SetBeDeadFlag(true); //m_pWorkMan->StartWork_p0(pWork); - EventBus.PublishChannel(GetCharacterID(), new CECPlayer.ClearComActFlagAllRankNodesEvent(true)); - PlayAction((int)PLAYER_ACTION_TYPE.ACT_GROUNDDIE); - if (PopupManager.Instance != null) - { - PopupManager.Instance.OnPlayerDied(); - } + EventBus.PublishChannel(GetCharacterID(), new CECPlayer.ClearComActFlagAllRankNodesEvent(true)); + PlayAction((int)PLAYER_ACTION_TYPE.ACT_GROUNDDIE); + if (PopupManager.Instance != null) + { + PopupManager.Instance.OnPlayerDied(); + } + } + else + { + UnityGameSession.c2s_CmdGetAllData(true, true, false); + UnityGameSession.c2s_CmdSendEnterPKPrecinct(); + UnityGameSession.RequesrQueryPlayerCash(); } /* else if (IsSitting()) @@ -1417,10 +1425,7 @@ namespace BrewMonster } else m_pActionSwitcher = new CECActionSwitcherBase(this); - - UnityGameSession.c2s_CmdGetAllData(true, true, false); // TODO: Move this to right flow later , it's just for test now - UnityGameSession.c2s_CmdSendEnterPKPrecinct(); } private void OnMsgHstPushMove(JoystickPressEvent joystickPressEvent)