File: SkyLight.cpp

package info (click to toggle)
spring 104.0%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 47,512 kB
  • sloc: cpp: 391,093; ansic: 79,943; python: 12,356; java: 12,201; awk: 5,889; sh: 1,826; xml: 655; makefile: 486; perl: 405; php: 211; objc: 194; sed: 2
file content (27 lines) | stat: -rw-r--r-- 644 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */

#include "SkyLight.h"
#include "Map/MapInfo.h"
#include "System/FastMath.h"

ISkyLight::ISkyLight() {
	SetLightDir(mapInfo->light.sunDir);
}

float3& ISkyLight::CalcPolarLightDir() {
	lightDirZ = lightDir;
	lightDirZ.y = 0.0f;

	if (lightDirZ.SqLength() == 0.0f)
		lightDirZ.x = 1.0f;

	lightDirZ.ANormalize();
	lightDirX = lightDirZ.cross(UpVector);

	// polar-coordinate direction in yz-plane (sin(zenith-angle), radius)
	modLightDir.x = 0.0f;
	modLightDir.y = lightDir.y;
	modLightDir.z = fastmath::sqrt_sse(lightDir.dot2D(lightDir));
	return modLightDir;
}