public void UpdateSunStampData() { float timeRange = ((float)simulation.simAgeTimeSteps - uiManager.historyPanelUI.timelineStartTimeStep); ClockStampData[] clockSunStampDataArray = new ClockStampData[maxNumClockSunStamps]; int numStamps = Mathf.Min(Mathf.RoundToInt((float)simulation.simAgeTimeSteps / (float)numTicksPerSunStamp), maxNumClockSunStamps); float totalDistanceTraveled = timeRange * earthSpeed; for (int i = 0; i < numStamps; i++) { float lerp = (float)i / (float)(numStamps - 1); ClockStampData data = new ClockStampData(); float sunOrbitPhase = GetSunOrbitPhase((float)(i * numTicksPerSunStamp)) + Mathf.PI * 0.5f; float stampWorldPosX = i * numTicksPerSunStamp * earthSpeed + Mathf.Cos(sunOrbitPhase) * clockSunOrbitRadius; float stampWorldPosY = Mathf.Sin(sunOrbitPhase) * clockSunOrbitRadius; float xCoord = stampWorldPosX / totalDistanceTraveled; float yCoord = stampWorldPosY / totalDistanceTraveled; data.pos = new Vector3(xCoord, yCoord + 0.8333f, 0f); data.radius = clockRadiusSun / (totalDistanceTraveled * clockZoomSpeed); data.color = Color.white; float timeStep = xCoord * (float)simulation.simAgeTimeSteps; data.animPhase = 0f; data.rotateZ = 0f; data.timeStep = timeStep; clockSunStampDataArray[i] = data; } clockSunStampDataCBuffer.SetData(clockSunStampDataArray); }
public void InitializeClockBuffers() { // 'Earth Stamps ClockStampData[] clockEarthStampDataArray = new ClockStampData[maxNumClockEarthStamps]; clockEarthStampDataCBuffer?.Release(); clockEarthStampDataCBuffer = new ComputeBuffer(maxNumClockEarthStamps, GetClockStampDataBufferStride()); for (int i = 0; i < clockEarthStampDataArray.Length; i++) { ClockStampData data = new ClockStampData(); clockEarthStampDataArray[i] = data; } clockEarthStampDataCBuffer.SetData(clockEarthStampDataArray); // 'Moon Stamps ClockStampData[] clockMoonStampDataArray = new ClockStampData[maxNumClockMoonStamps]; clockMoonStampDataCBuffer?.Release(); clockMoonStampDataCBuffer = new ComputeBuffer(maxNumClockMoonStamps, GetClockStampDataBufferStride()); for (int i = 0; i < clockMoonStampDataArray.Length; i++) { ClockStampData data = new ClockStampData(); clockMoonStampDataArray[i] = data; } clockMoonStampDataCBuffer.SetData(clockMoonStampDataArray); // 'Sun Stamps ClockStampData[] clockSunStampDataArray = new ClockStampData[maxNumClockSunStamps]; clockSunStampDataCBuffer?.Release(); clockSunStampDataCBuffer = new ComputeBuffer(maxNumClockSunStamps, GetClockStampDataBufferStride()); for (int i = 0; i < clockSunStampDataArray.Length; i++) { ClockStampData data = new ClockStampData(); clockSunStampDataArray[i] = data; } clockSunStampDataCBuffer.SetData(clockSunStampDataArray); clockPlanetMatA.SetFloat("_NumRows", 4f); clockPlanetMatA.SetFloat("_NumColumns", 4f); clockMoonMatA.SetFloat("_NumRows", 4f); clockMoonMatA.SetFloat("_NumColumns", 4f); clockSunMatA.SetFloat("_NumRows", 4f); clockSunMatA.SetFloat("_NumColumns", 4f); }