Exemplo n.º 1
0
 public static void Postfix(BuildingInfoSub __instance)
 {
     if (__instance.m_lodMesh != null)
     {
         var lodTogglerFactor = TrueLodTogglerMod.ActiveConfig.BuildingLodDistance / 1000f;
         __instance.m_minLodDistance *= lodTogglerFactor;
         __instance.m_maxLodDistance *= lodTogglerFactor;
     }
 }
Exemplo n.º 2
0
 public static bool Prefix(BuildingAI __instance, RenderManager.CameraInfo cameraInfo, ushort buildingID, ref Building data, int layerMask, ref RenderManager.Instance instance)
 {
     __instance.m_info.m_rendered = true;
     if (__instance.m_info.m_mesh != null)
     {
         BuildingAI.RenderMesh(cameraInfo, buildingID, ref data, __instance.m_info, ref instance);
     }
     if (__instance.m_info.m_subMeshes != null)
     {
         for (int i = 0; i < __instance.m_info.m_subMeshes.Length; i++)
         {
             BuildingInfo.MeshInfo meshInfo = __instance.m_info.m_subMeshes[i];
             if (((meshInfo.m_flagsRequired | meshInfo.m_flagsForbidden) & data.m_flags) == meshInfo.m_flagsRequired)
             {
                 BuildingInfoSub buildingInfoSub = meshInfo.m_subInfo as BuildingInfoSub;
                 buildingInfoSub.m_rendered = true;
                 if (buildingInfoSub.m_subMeshes != null && buildingInfoSub.m_subMeshes.Length != 0)
                 {
                     for (int j = 0; j < buildingInfoSub.m_subMeshes.Length; j++)
                     {
                         BuildingInfo.MeshInfo meshInfo2 = buildingInfoSub.m_subMeshes[j];
                         if (((meshInfo2.m_flagsRequired | meshInfo2.m_flagsForbidden) & data.m_flags) == meshInfo2.m_flagsRequired)
                         {
                             BuildingInfoSub buildingInfoSub2 = meshInfo2.m_subInfo as BuildingInfoSub;
                             buildingInfoSub2.m_rendered = true;
                             BuildingAI.RenderMesh(cameraInfo, __instance.m_info, buildingInfoSub2, meshInfo.m_matrix, ref instance);
                         }
                     }
                 }
                 else
                 {
                     BuildingAI.RenderMesh(cameraInfo, __instance.m_info, buildingInfoSub, meshInfo.m_matrix, ref instance);
                 }
             }
         }
     }
     return(false);
 }
        internal ManagedAsset(BuildingInfoSub asset)
        {
            TypeOfAsset = AssetType.SubBuilding;
            SubBuilding = asset;

            Info = new ShaderInfo(asset.m_mesh.name, nameof(BuildingInfoSub), asset.name);

            backup_lodHasDifferentShader = asset.m_lodHasDifferentShader;
            backup_InvFade    = asset.m_material.GetFloat("_InvFade");
            backup_meshColors = asset.m_mesh.colors;

            backup_maxLodDistance = asset.m_maxLodDistance;
            backup_minLodDistance = asset.m_minLodDistance;

            asset.m_lodHasDifferentShader = false;
            asset.m_material.SetFloat("_InvFade", Info.Fade);
            asset.m_mesh.colors = GetMeshColors(asset.m_mesh.vertexCount);

            CachedRenderDistance = GetRenderDistance(asset.m_generatedInfo.m_size);
            ApplyCachedRenderDistance();

            SetVisible(Info.IsAlwaysOn, FORCE_UPDATE);
        }
Exemplo n.º 4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SubMeshInfo"/> class.
 /// </summary>
 /// <param name="prefab">The prefab.</param>
 public SubMeshInfo(BuildingInfoSub prefab) : base(prefab)
 {
 }