1. NiNew NiCamera
--> NiMemObject::operator new(NI_MEMHINT_NONE,__FILE__,__LINE__,__FUNCTION__)
--> NiMemManager::Get().Allocate(..)
--> Allocator::Allocate(..)
2. SetCaster:
-->ShadowGeometry::RecursiveStoreCasterObjects(NiAVObject* pkObject)
-->Store All Geometries(NiMesh) of the given pkObject into a list
-->Store the Terrain as Ground
3. Render Shadow:
-->Click():
-->Update Camera Location + Let Camera enclose the watched object
-->Render all Caster's Geometries with Light Camera: Projected into Near Plane
then As Texture
-->use light camera to cull ground
-->capture all intersection points(View Frustum and Ground)
-->build a triangle mesh using intersections
-->find the intersection point of camera view dir onto ground as center
-->measure the diff between an intersection point and this center
as texture coord in s and t