// get pointer to a lamp static KX_LightObject *getLamp(PyObject *obj) { // if object is available if (obj == NULL) return NULL; // returns NULL if obj is not a KX_LightObject return lightObjectType.checkType(obj); }
// object initialization static int ImageRender_init(PyObject *pySelf, PyObject *args, PyObject *kwds) { // parameters - scene object PyObject *scene; // camera object PyObject *camera; // parameter keywords static const char *kwlist[] = {"sceneObj", "cameraObj", NULL}; // get parameters if (!PyArg_ParseTupleAndKeywords(args, kwds, "OO", const_cast<char**>(kwlist), &scene, &camera)) return -1; try { // get scene pointer KX_Scene * scenePtr (NULL); if (scene != NULL) scenePtr = sceneType.checkType(scene); // throw exception if scene is not available if (scenePtr == NULL) THRWEXCP(SceneInvalid, S_OK); // get camera pointer KX_Camera * cameraPtr (NULL); if (camera != NULL) cameraPtr = cameraType.checkType(camera); // throw exception if camera is not available if (cameraPtr == NULL) THRWEXCP(CameraInvalid, S_OK); // get pointer to image structure PyImage *self = reinterpret_cast<PyImage*>(pySelf); // create source object if (self->m_image != NULL) delete self->m_image; self->m_image = new ImageRender(scenePtr, cameraPtr); } catch (Exception & exp) { exp.report(); return -1; } // initialization succeded return 0; }
// get pointer to material RAS_IPolyMaterial * getMaterial (PyObject *obj, short matID) { // if object is available if (obj != NULL) { // get pointer to texture image KX_GameObject * gameObj = gameObjectType.checkType(obj); if (gameObj != NULL && gameObj->GetMeshCount() > 0) { // get material from mesh RAS_MeshObject * mesh = gameObj->GetMesh(0); RAS_MeshMaterial *meshMat = mesh->GetMeshMaterial(matID); if (meshMat != NULL && meshMat->m_bucket != NULL) // return pointer to polygon or blender material return meshMat->m_bucket->GetPolyMaterial(); } } // otherwise material was not found return NULL; }