private bool FindStar(int starIndex, out SGT_MeshData meshData, out int vertexIndex) { if (starIndex >= 0 && starIndex < starfieldStarCount && meshes != null && meshes.Length > 0) { var starsPerMesh = SGT_Helper.MeshVertexLimit / 4; var meshIndex = System.Math.DivRem(starIndex, starsPerMesh, out vertexIndex); var mesh = meshes[meshIndex]; if (mesh != null) { meshData = GetMeshData(mesh, meshIndex); vertexIndex = vertexIndex * 4; // 4 verts per star return(true); } } meshData = null; vertexIndex = -1; return(false); }
private SGT_MeshData GetMeshData(Mesh mesh, int index) { if (index >= 0 && mesh != null && meshes != null && index < meshes.Length) { if (meshDatas == null || meshDatas.Length != meshes.Length) { meshDatas = new SGT_MeshData[meshes.Length]; } var meshData = meshDatas[index]; if (meshData == null || meshData.SharedMesh != mesh) { meshData = new SGT_MeshData(mesh); meshDatas[index] = meshData; } return(meshData); } return(null); }
private SGT_MeshData GetMeshData(Mesh mesh, int index) { if (index >= 0 && mesh != null && meshes != null && index < meshes.Length) { if (meshDatas == null || meshDatas.Length != meshes.Length) { meshDatas = new SGT_MeshData[meshes.Length]; } var meshData = meshDatas[index]; if (meshData == null || meshData.SharedMesh != mesh) { meshData = new SGT_MeshData(mesh); meshDatas[index] = meshData; } return meshData; } return null; }
private bool FindStar(int starIndex, out SGT_MeshData meshData, out int vertexIndex) { if (starIndex >= 0 && starIndex < starfieldStarCount && meshes != null && meshes.Length > 0) { var starsPerMesh = SGT_Helper.MeshVertexLimit / 4; var meshIndex = System.Math.DivRem(starIndex, starsPerMesh, out vertexIndex); var mesh = meshes[meshIndex]; if (mesh != null) { meshData = GetMeshData(mesh, meshIndex); vertexIndex = vertexIndex * 4; // 4 verts per star return true; } } meshData = null; vertexIndex = -1; return false; }