25 if (!(num <= 2304f)) {
28 float num2 = MathF.Sqrt(num);
31 float num4 = shadowDiameter / 2f;
36 for (
int i = num5; i <= num7; i++) {
37 for (
int j = num6; j <= num8; j++) {
40 for (
int num11 = num9; num11 >= num10; num11--) {
46 for (
int k = 0; k < customCollisionBoxes.Length; k++) {
48 float num13 = boundingBox.Max.Y + num11;
49 if (shadowPosition.
Y - num13 > -0.5f) {
50 float num14 = camera.ViewPosition.Y - num13;
54 Vector3 p =
new(boundingBox.Min.X + i, num13 + num15, boundingBox.Min.Z + j);
55 Vector3 p2 =
new(boundingBox.Max.X + i, num13 + num15, boundingBox.Min.Z + j);
56 Vector3 p3 =
new(boundingBox.Max.X + i, num13 + num15, boundingBox.Max.Z + j);
57 Vector3 p4 =
new(boundingBox.Min.X + i, num13 + num15, boundingBox.Max.Z + j);
103 float shadowDiameter,
119 new Color(0f, 0f, 0f, alpha)
125 0.5f + (p.X - shadowPosition.
X) / shadowDiameter,
126 0.5f + (p.Z - shadowPosition.
Z) / shadowDiameter
static readonly BlendState AlphaBlend
static readonly DepthStencilState DepthRead
static readonly RasterizerState CullCounterClockwiseScissor
static SamplerState LinearClamp
static int Min(int x1, int x2)
static float Saturate(float x)
static int Max(int x1, int x2)
virtual float GetObjectShadowStrength(int value)
virtual BoundingBox[] GetCustomCollisionBoxes(SubsystemTerrain terrain, int value)
Matrix ViewProjectionMatrix
static object Get(Type type, string name)
static bool ObjectsShadowsEnabled
virtual void QueueShadow(Camera camera, Vector3 shadowPosition, float shadowDiameter, float alpha)
SubsystemTerrain m_subsystemTerrain
static int[] m_drawOrders
override void Load(ValuesDictionary valuesDictionary)
PrimitivesRenderer3D m_primitivesRenderer
virtual void DrawShadowOverQuad(Vector3 p1, Vector3 p2, Vector3 p3, Vector3 p4, Vector3 shadowPosition, float shadowDiameter, float alpha)
static Vector2 CalculateShadowTextureCoordinate(Vector3 p, Vector3 shadowPosition, float shadowDiameter)
SubsystemSky m_subsystemSky
virtual void Draw(Camera camera, int drawOrder)
static int ExtractContents(int value)
static int ToCell(float x)
ValuesDictionary ValuesDictionary
static float DistanceSquared(Vector3 v1, Vector3 v2)