// Token: 0x06003AD9 RID: 15065 RVA: 0x000D01DC File Offset: 0x000CE3DC public static global::LaserGraphics.VertexBuffer Size(int i) { global::LaserGraphics.VertexBuffer result; if (!global::LaserGraphics.VertexBuffer.Register.all.TryGetValue(i, out result)) { global::LaserGraphics.VertexBuffer.Register.all.Add(i, result = new global::LaserGraphics.VertexBuffer(i)); } return(result); }
// Token: 0x06003AD3 RID: 15059 RVA: 0x000CE6DC File Offset: 0x000CC8DC private void RenderLasers(Camera camera) { if (!this.madeLists) { this.beams = new List <global::LaserBeam>(); this.willRender = new List <global::LaserBeam>(); this.madeLists = true; } int cullingMask = camera.cullingMask; if (this.beams == null) { this.beams = new List <global::LaserBeam>(global::LaserBeam.Collect()); } else { this.beams.Clear(); this.beams.AddRange(global::LaserBeam.Collect()); } global::LaserGraphics.allBeamsMask = 0; foreach (global::LaserBeam laserBeam in this.beams) { global::LaserGraphics.UpdateBeam(ref laserBeam.frame, laserBeam); } if ((cullingMask & global::LaserGraphics.allBeamsMask) != 0 && this.beams.Count > 0) { Plane[] array = GeometryUtility.CalculateFrustumPlanes(camera); foreach (global::LaserBeam laserBeam2 in this.beams) { if (laserBeam2.isViewModel || ((cullingMask & laserBeam2.frame.beamsLayer) == laserBeam2.frame.beamsLayer && GeometryUtility.TestPlanesAABB(array, laserBeam2.frame.bounds))) { this.willRender.Add(laserBeam2); } } if (this.willRender.Count > 0) { global::LaserGraphics.world2Cam = camera.worldToCameraMatrix; global::LaserGraphics.cam2World = camera.cameraToWorldMatrix; global::LaserGraphics.camProj = camera.projectionMatrix; try { foreach (global::LaserBeam laserBeam3 in this.willRender) { global::LaserGraphics.RenderBeam(array, camera, laserBeam3, ref laserBeam3.frame); } foreach (global::LaserGraphics.MeshBuffer meshBuffer in global::LaserGraphics.Computation.beams) { bool rebindVertexLayout = meshBuffer.Resize(); int num = 0; global::LaserGraphics.VertexBuffer buffer = meshBuffer.buffer; Vector3 min; min.x = (min.y = (min.z = float.PositiveInfinity)); Vector3 max; max.x = (max.y = (max.z = float.NegativeInfinity)); foreach (global::LaserBeam laserBeam4 in meshBuffer.beams) { int num2 = num++; int num3 = num++; int num4 = num++; int num5 = num++; buffer.v[num2] = laserBeam4.frame.beamVertices.m0; buffer.v[num3] = laserBeam4.frame.beamVertices.m1; buffer.v[num5] = laserBeam4.frame.beamVertices.m2; buffer.v[num4] = laserBeam4.frame.beamVertices.m3; buffer.n[num2] = laserBeam4.frame.beamNormals.m0; buffer.n[num3] = laserBeam4.frame.beamNormals.m1; buffer.n[num5] = laserBeam4.frame.beamNormals.m2; buffer.n[num4] = laserBeam4.frame.beamNormals.m3; buffer.c[num2] = laserBeam4.frame.beamColor.m0; buffer.c[num3] = laserBeam4.frame.beamColor.m1; buffer.c[num5] = laserBeam4.frame.beamColor.m2; buffer.c[num4] = laserBeam4.frame.beamColor.m3; buffer.t[num2] = laserBeam4.frame.beamUVs.m0; buffer.t[num3] = laserBeam4.frame.beamUVs.m1; buffer.t[num5] = laserBeam4.frame.beamUVs.m2; buffer.t[num4] = laserBeam4.frame.beamUVs.m3; for (int i = num2; i <= num4; i++) { if (buffer.v[i].x < min.x) { min.x = buffer.v[i].x; } if (buffer.v[i].x > max.x) { max.x = buffer.v[i].x; } if (buffer.v[i].y < min.y) { min.y = buffer.v[i].y; } if (buffer.v[i].y > max.y) { max.y = buffer.v[i].y; } if (buffer.v[i].z < min.z) { min.z = buffer.v[i].z; } if (buffer.v[i].z > max.z) { max.z = buffer.v[i].z; } } laserBeam4.frame.bufBeam = null; } meshBuffer.beams.Clear(); meshBuffer.BindMesh(rebindVertexLayout, min, max); Graphics.DrawMesh(meshBuffer.mesh, Matrix4x4.identity, meshBuffer.material, 1, camera, 0, null, false, false); } foreach (global::LaserGraphics.MeshBuffer meshBuffer2 in global::LaserGraphics.Computation.dots) { bool flag = meshBuffer2.Resize(); int num6 = 0; global::LaserGraphics.VertexBuffer buffer2 = meshBuffer2.buffer; Vector3 min2; min2.x = (min2.y = (min2.z = float.PositiveInfinity)); Vector3 max2; max2.x = (max2.y = (max2.z = float.NegativeInfinity)); foreach (global::LaserBeam laserBeam5 in meshBuffer2.beams) { int num7 = num6++; int num8 = num6++; int num9 = num6++; int num10 = num6++; buffer2.v[num7] = laserBeam5.frame.dotVertices1.m0; buffer2.v[num8] = laserBeam5.frame.dotVertices1.m1; buffer2.v[num10] = laserBeam5.frame.dotVertices1.m2; buffer2.v[num9] = laserBeam5.frame.dotVertices1.m3; buffer2.n[num7] = laserBeam5.frame.beamNormals.m0; buffer2.n[num8] = laserBeam5.frame.beamNormals.m1; buffer2.n[num10] = laserBeam5.frame.beamNormals.m2; buffer2.n[num9] = laserBeam5.frame.beamNormals.m3; buffer2.c[num7] = laserBeam5.frame.dotColor1.m0; buffer2.c[num8] = laserBeam5.frame.dotColor1.m1; buffer2.c[num10] = laserBeam5.frame.dotColor1.m2; buffer2.c[num9] = laserBeam5.frame.dotColor1.m3; buffer2.t[num7] = global::LaserGraphics.uv[0]; buffer2.t[num8] = global::LaserGraphics.uv[1]; buffer2.t[num10] = global::LaserGraphics.uv[2]; buffer2.t[num9] = global::LaserGraphics.uv[3]; for (int j = num7; j <= num9; j++) { if (buffer2.v[j].x < min2.x) { min2.x = buffer2.v[j].x; } if (buffer2.v[j].x > max2.x) { max2.x = buffer2.v[j].x; } if (buffer2.v[j].y < min2.y) { min2.y = buffer2.v[j].y; } if (buffer2.v[j].y > max2.y) { max2.y = buffer2.v[j].y; } if (buffer2.v[j].z < min2.z) { min2.z = buffer2.v[j].z; } if (buffer2.v[j].z > max2.z) { max2.z = buffer2.v[j].z; } } num7 = num6++; num8 = num6++; num9 = num6++; num10 = num6++; buffer2.v[num7] = laserBeam5.frame.dotVertices2.m0; buffer2.v[num8] = laserBeam5.frame.dotVertices2.m1; buffer2.v[num10] = laserBeam5.frame.dotVertices2.m2; buffer2.v[num9] = laserBeam5.frame.dotVertices2.m3; buffer2.n[num7] = laserBeam5.frame.beamNormals.m0; buffer2.n[num8] = laserBeam5.frame.beamNormals.m1; buffer2.n[num10] = laserBeam5.frame.beamNormals.m2; buffer2.n[num9] = laserBeam5.frame.beamNormals.m3; buffer2.c[num7] = laserBeam5.frame.dotColor2.m0; buffer2.c[num8] = laserBeam5.frame.dotColor2.m1; buffer2.c[num10] = laserBeam5.frame.dotColor2.m2; buffer2.c[num9] = laserBeam5.frame.dotColor2.m3; buffer2.t[num7] = global::LaserGraphics.uv[0]; buffer2.t[num8] = global::LaserGraphics.uv[1]; buffer2.t[num10] = global::LaserGraphics.uv[2]; buffer2.t[num9] = global::LaserGraphics.uv[3]; for (int k = num7; k <= num9; k++) { if (buffer2.v[k].x < min2.x) { min2.x = buffer2.v[k].x; } if (buffer2.v[k].x > max2.x) { max2.x = buffer2.v[k].x; } if (buffer2.v[k].y < min2.y) { min2.y = buffer2.v[k].y; } if (buffer2.v[k].y > max2.y) { max2.y = buffer2.v[k].y; } if (buffer2.v[k].z < min2.z) { min2.z = buffer2.v[k].z; } if (buffer2.v[k].z > max2.z) { max2.z = buffer2.v[k].z; } } laserBeam5.frame.bufDot = null; } meshBuffer2.beams.Clear(); if (flag) { meshBuffer2.mesh.Clear(false); meshBuffer2.mesh.vertices = buffer2.v; meshBuffer2.mesh.normals = buffer2.n; meshBuffer2.mesh.colors = buffer2.c; meshBuffer2.mesh.uv = buffer2.t; meshBuffer2.mesh.SetIndices(buffer2.i, 2, 0); } else { meshBuffer2.mesh.vertices = buffer2.v; meshBuffer2.mesh.normals = buffer2.n; meshBuffer2.mesh.colors = buffer2.c; meshBuffer2.mesh.uv = buffer2.t; } meshBuffer2.BindMesh(flag, min2, max2); Graphics.DrawMesh(meshBuffer2.mesh, Matrix4x4.identity, meshBuffer2.material, 1, camera, 0, null, false, false); } } finally { this.willRender.Clear(); global::LaserGraphics.Computation.beams.Clear(); global::LaserGraphics.Computation.dots.Clear(); global::LaserGraphics.MeshBuffer.Reset(); } } } }