private void SyncLightMeshList(List <LightMesh> list, float trackValue) { float listIntensity = DivideToPages(1.0f, 0, trackValue); float valuePerItem = (1.0f / list.Count); for (int i = 0; i < list.Count; i++) { LightMesh lm = list[i]; float itemValue = DivideToItems(valuePerItem, i, listIntensity); lm.activeRadius = lm.sphereRadius * itemValue; lm.light.SetAttenuation(lm.fullRange * itemValue); lm.mesh.Transform.Scale = lm.sphereRadius * itemValue; } }
void LoadLightMeshList(TunableManager tm, AssetManager assetManager, TransformComponent parentTransform, string lightArrayName, int amount, ShaderProgram shader, ref List <LightMesh> list) { for (int ml = 0; ml < amount; ml++) { LightMesh lm = new LightMesh(); string lightId = lightArrayName + "." + (ml + 1); lm.sphereRadius = tm.GetFloat(lightId + "_size"); Vector3 position = tm.GetVec3(lightId + "_pos") + parentTransform.GetWorldPosition(); lm.mesh = assetManager.CreateMesh(lightId , MeshDataGenerator.CreateCubeMesh(new Vector3(lm.sphereRadius), false, false) , "default" , shader , position); // lm.mesh.Transform.Parent = parentTransform; lm.fullRange = tm.GetFloat(lightId + "_range"); Vector3 color = tm.GetVec3(lightId + "_color"); lm.light = Light.CreatePointLight(color, lm.fullRange, position); list.Add(lm); } }