std::string java_to_string(JNIEnv *env, jobject object) { if (!object) { return std::string("null"); } LocalFrame(env, 4); #ifndef M3BP_NO_THREAD_LOCAL if (!_object_to_string) { jclass clazz = env->FindClass("java/lang/Object"); check_java_exception(env); _object_to_string = env->GetMethodID(clazz, "toString", "()Ljava/lang/String;"); check_java_exception(env); } #else jclass clazz = env->FindClass("java/lang/Object"); check_java_exception(env); jmethodID _object_to_string = env->GetMethodID(clazz, "toString", "()Ljava/lang/String;"); check_java_exception(env); #endif jstring string = (jstring) env->CallObjectMethod(object, _object_to_string); check_java_exception(env); if (!string) { return std::string("null"); } const char *contents = env->GetStringUTFChars(string, 0); std::string results(contents); env->ReleaseStringUTFChars(string, contents); return results; }
vec3f SceneVPMObject::getBSDF(const Ray& inRay, const Ray& outRay) const { if(outRay.contactObject == NULL) return ds * bsdf->evaluate(LocalFrame(), inRay.direction, outRay.direction); if(outRay.contactObject && outRay.contactObject != this) return outRay.contactObject->getBSDF(inRay, outRay); return vec3f(0, 0, 0); }