本文整理汇总了C#中RenderManager.CheckRenderDistance方法的典型用法代码示例。如果您正苦于以下问题:C# RenderManager.CheckRenderDistance方法的具体用法?C# RenderManager.CheckRenderDistance怎么用?C# RenderManager.CheckRenderDistance使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类RenderManager
的用法示例。
在下文中一共展示了RenderManager.CheckRenderDistance方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: RenderInstance
//.........这里部分代码省略.........
if (prop.CheckFlags((NetLane.Flags)_this.m_flags, startFlags, endFlags))
{
var num4 = prop.m_segmentOffset * 0.5f;
if (_this.m_length != 0f)
{
num4 = Mathf.Clamp(num4 + prop.m_position.z / _this.m_length, -0.5f, 0.5f);
}
if (flag2)
{
num4 = -num4;
}
if (finalProp != null && (layerMask & 1 << finalProp.m_prefabDataLayer) != 0)
{
var color = (prop.m_colorMode != NetLaneProps.ColorMode.EndState) ? startColor : endColor;
var randomizer = new Randomizer((int)(laneID + (uint)i));
for (var j = 1; j <= num2; j += 2)
{
if (randomizer.Int32(100u) < prop.m_probability)
{
var num5 = num4 + (float)j / (float)num2;
var variation = finalProp.GetVariation(ref randomizer);
var scale = variation.m_minScale + (float)randomizer.Int32(10000u) * (variation.m_maxScale - variation.m_minScale) * 0.0001f;
if (prop.m_colorMode == NetLaneProps.ColorMode.Default)
{
color = variation.GetColor(ref randomizer);
}
var vector = _this.m_bezier.Position(num5);
if (propIndex != -1)
{
vector.y = (float)data.m_extraData.GetUShort(num3++) * 0.015625f;
}
vector.y += prop.m_position.y;
if (cameraInfo.CheckRenderDistance(vector, variation.m_maxRenderDistance))
{
var vector2 = _this.m_bezier.Tangent(num5);
if (vector2 != Vector3.zero)
{
if (flag2)
{
vector2 = -vector2;
}
vector2.y = 0f;
if (prop.m_position.x != 0f)
{
vector2 = Vector3.Normalize(vector2);
vector.x += vector2.z * prop.m_position.x;
vector.z -= vector2.x * prop.m_position.x;
}
var num6 = Mathf.Atan2(vector2.x, -vector2.z);
if (prop.m_cornerAngle != 0f || prop.m_position.x != 0f)
{
var num7 = endAngle - startAngle;
if (num7 > 3.14159274f)
{
num7 -= 6.28318548f;
}
if (num7 < -3.14159274f)
{
num7 += 6.28318548f;
}
var num8 = startAngle + num7 * num5;
num7 = num8 - num6;
if (num7 > 3.14159274f)
{
num7 -= 6.28318548f;
示例2: RenderInstance
//.........这里部分代码省略.........
Vector3 vector6;
Vector3 vector7;
NetSegment.CalculateMiddlePoints(vector2, startDir, vector5, endDir2, smoothStart, smoothEnd, out vector6, out vector7);
Vector3 vector8;
Vector3 vector9;
NetSegment.CalculateMiddlePoints(vector4, startDir2, vector3, endDir, smoothStart, smoothEnd, out vector8, out vector9);
data.m_dataMatrix0 = NetSegment.CalculateControlMatrix(vector2, vector6, vector7, vector5, vector4, vector8, vector9, vector3, data.m_position, vScale);
data.m_dataMatrix1 = NetSegment.CalculateControlMatrix(vector4, vector8, vector9, vector3, vector2, vector6, vector7, vector5, data.m_position, vScale);
}
if (info.m_requireSurfaceMaps)
{
Singleton<TerrainManager>.instance.GetSurfaceMapping(data.m_position, out data.m_dataTexture0, out data.m_dataTexture1, out data.m_dataVector1);
}
}
if (info.m_segments != null)
{
for (int i = 0; i < info.m_segments.Length; i++)
{
NetInfo.Segment segment = info.m_segments[i];
bool flag;
if (segment.CheckFlags(_this.m_flags, out flag))
{
Vector4 dataVector = data.m_dataVector3;
Vector4 dataVector2 = data.m_dataVector0;
if (segment.m_requireWindSpeed)
{
dataVector.w = data.m_dataFloat0;
}
if (flag)
{
dataVector2.x = -dataVector2.x;
dataVector2.y = -dataVector2.y;
}
if (cameraInfo.CheckRenderDistance(data.m_position, segment.m_lodRenderDistance))
{
instance.m_materialBlock.Clear();
instance.m_materialBlock.AddMatrix(instance.ID_LeftMatrix, data.m_dataMatrix0);
instance.m_materialBlock.AddMatrix(instance.ID_RightMatrix, data.m_dataMatrix1);
instance.m_materialBlock.AddVector(instance.ID_MeshScale, dataVector2);
instance.m_materialBlock.AddVector(instance.ID_ObjectIndex, dataVector);
instance.m_materialBlock.AddColor(instance.ID_Color, data.m_dataColor0);
if (segment.m_requireSurfaceMaps && data.m_dataTexture0 != null)
{
instance.m_materialBlock.AddTexture(instance.ID_SurfaceTexA, data.m_dataTexture0);
instance.m_materialBlock.AddTexture(instance.ID_SurfaceTexB, data.m_dataTexture1);
instance.m_materialBlock.AddVector(instance.ID_SurfaceMapping, data.m_dataVector1);
}
NetManager expr_5D7_cp_0 = instance;
expr_5D7_cp_0.m_drawCallData.m_defaultCalls = expr_5D7_cp_0.m_drawCallData.m_defaultCalls + 1;
Graphics.DrawMesh(segment.m_segmentMesh, data.m_position, data.m_rotation, segment.m_segmentMaterial, segment.m_layer, null, 0, instance.m_materialBlock); // TODO
}
else
{
NetInfo.LodValue combinedLod = segment.m_combinedLod;
if (combinedLod != null)
{
if (segment.m_requireSurfaceMaps && data.m_dataTexture0 != combinedLod.m_surfaceTexA)
{
if (combinedLod.m_lodCount != 0)
{
NetSegment.RenderLod(cameraInfo, combinedLod);
}
combinedLod.m_surfaceTexA = data.m_dataTexture0;
combinedLod.m_surfaceTexB = data.m_dataTexture1;
combinedLod.m_surfaceMapping = data.m_dataVector1;
}
示例3: RenderInstance
public static bool RenderInstance(ref CitizenInstance instance, RenderManager.CameraInfo cameraInfo, ushort instanceID)
{
if ((instance.m_flags & CitizenInstance.Flags.Character) == CitizenInstance.Flags.None)
return false;
CitizenInfo info = instance.Info;
if ((UnityEngine.Object)info == (UnityEngine.Object)null)
return false;
uint num = Singleton<SimulationManager>.instance.m_referenceFrameIndex - ((uint)instanceID << 4) / 65536U;
CitizenInstance.Frame frameData1 = instance.GetFrameData(num - 32U);
float maxDistance = Mathf.Min(RenderManager.LevelOfDetailFactor * 800f, info.m_maxRenderDistance + cameraInfo.m_height * 0.5f);
if (!cameraInfo.CheckRenderDistance(frameData1.m_position, maxDistance) || !cameraInfo.Intersect(frameData1.m_position, 10f))
return false;
CitizenInstance.Frame frameData2 = instance.GetFrameData(num - 16U);
float t = (float)(((double)(num & 15U) + (double)Singleton<SimulationManager>.instance.m_referenceTimer) * (1.0 / 16.0));
bool flag1 = frameData2.m_underground && frameData1.m_underground;
bool flag2 = frameData2.m_insideBuilding && frameData1.m_insideBuilding;
bool flag3 = frameData2.m_transition || frameData1.m_transition;
if (flag2 && !flag3 || flag1 && !flag3 && (cameraInfo.m_layerMask & 1 << Singleton<CitizenManager>.instance.m_undergroundLayer) == 0)
return false;
//begin mod
info = GetUpdatedInfo(instance, instanceID);
//end mod
Vector3 vector3 = new Bezier3()
{
a = frameData1.m_position,
b = (frameData1.m_position + frameData1.m_velocity * 0.333f),
c = (frameData2.m_position - frameData2.m_velocity * 0.333f),
d = frameData2.m_position
}.Position(t);
Quaternion quaternion = Quaternion.Lerp(frameData1.m_rotation, frameData2.m_rotation, t);
Color color = info.m_citizenAI.GetColor(instanceID, ref instance, Singleton<InfoManager>.instance.CurrentMode);
if (cameraInfo.CheckRenderDistance(vector3, info.m_lodRenderDistance))
{
InstanceID id = InstanceID.Empty;
id.CitizenInstance = instanceID;
CitizenInfo citizenInfo = info.ObtainPrefabInstance<CitizenInfo>(id, (int)byte.MaxValue);
if ((UnityEngine.Object)citizenInfo != (UnityEngine.Object)null)
{
Vector3 velocity = Vector3.Lerp(frameData1.m_velocity, frameData2.m_velocity, t);
//begin mod
if (info.m_subCulture == Citizen.SubCulture.Generic)
{
citizenInfo.m_citizenAI.SetRenderParameters(cameraInfo, instanceID, ref instance, vector3,
quaternion, velocity, color,
(flag1 || flag3) &&
(cameraInfo.m_layerMask & 1 << Singleton<CitizenManager>.instance.m_undergroundLayer) != 0);
}
else
{
citizenInfo.SetRenderParameters(vector3, quaternion, velocity, color, 5,
(flag1 || flag3) &&
(cameraInfo.m_layerMask & 1 << Singleton<CitizenManager>.instance.m_undergroundLayer) != 0);
}
//end mod
return true;
}
}
if (flag1 || flag3)
{
info.m_undergroundLodLocations[info.m_undergroundLodCount].SetTRS(vector3, quaternion, Vector3.one);
info.m_undergroundLodColors[info.m_undergroundLodCount] = color;
info.m_undergroundLodMin = Vector3.Min(info.m_undergroundLodMin, vector3);
info.m_undergroundLodMax = Vector3.Max(info.m_undergroundLodMax, vector3);
if (++info.m_undergroundLodCount == info.m_undergroundLodLocations.Length)
CitizenInstance.RenderUndergroundLod(cameraInfo, info);
}
if (!flag1 || flag3)
{
info.m_lodLocations[info.m_lodCount].SetTRS(vector3, quaternion, Vector3.one);
info.m_lodColors[info.m_lodCount] = color;
info.m_lodMin = Vector3.Min(info.m_lodMin, vector3);
info.m_lodMax = Vector3.Max(info.m_lodMax, vector3);
if (++info.m_lodCount == info.m_lodLocations.Length)
CitizenInstance.RenderLod(cameraInfo, info);
}
return true;
}