Exemple #1
0
    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);
    }
Exemple #2
0
    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);
    }