Frustum Camera::GetSplitFrustum(float nearClip, float farClip) const { Frustum ret; Matrix3x4 worldTransform = GetEffectiveWorldTransform(); nearClip = Max(nearClip, GetNearClip()); farClip = Min(farClip, farClip_); if (farClip < nearClip) farClip = nearClip; if (!orthographic_) ret.Define(fov_, aspectRatio_, zoom_, nearClip, farClip, worldTransform); else ret.DefineOrtho(orthoSize_, aspectRatio_, zoom_, nearClip, farClip, worldTransform); return ret; }
Frustum Camera::GetViewSpaceSplitFrustum(float nearClip, float farClip) const { if (projectionDirty_) UpdateProjection(); nearClip = Max(nearClip, projNearClip_); farClip = Min(farClip, projFarClip_); if (farClip < nearClip) farClip = nearClip; Frustum ret; if (customProjection_) ret.DefineSplit(projection_, nearClip, farClip); else { if (!orthographic_) ret.Define(fov_, aspectRatio_, zoom_, nearClip, farClip); else ret.DefineOrtho(orthoSize_, aspectRatio_, zoom_, nearClip, farClip); } return ret; }