mirror of
https://github.com/SWG-Source/src.git
synced 2026-01-15 23:05:01 -05:00
Merge pull request #29 from bcalabro/patch-1
Add JNI Call for getBuildoutAreaRect for buildout_utility.java
This commit is contained in:
@@ -46,6 +46,7 @@ namespace ScriptMethodsPlanetNamespace
|
||||
jboolean JNICALL isAreaTooFullForTravel (JNIEnv* env, jobject self, jstring planetName_j, jint x, jint z);
|
||||
jstring JNICALL getBuildoutAreaName( JNIEnv *env, jobject self, jfloat x, jfloat z, jstring scene );
|
||||
jfloatArray JNICALL getBuildoutAreaSizeAndCenter(JNIEnv *env, jobject self, jfloat x, jfloat z, jstring scene, jboolean ignoreInternal, jboolean allowComposite);
|
||||
jfloatArray JNICALL getBuildoutAreaRect(JNIEnv *env, jobject self, jfloat x, jfloat z, jstring scene, jboolean allowComposite);
|
||||
void JNICALL requestSameServer(JNIEnv *env, jobject self, jlong object1, jlong object2);
|
||||
}
|
||||
|
||||
@@ -70,6 +71,7 @@ const JNINativeMethod NATIVES[] = {
|
||||
JF("isAreaTooFullForTravel", "(Ljava/lang/String;II)Z", isAreaTooFullForTravel),
|
||||
JF("getBuildoutAreaName", "(FFLjava/lang/String;)Ljava/lang/String;", getBuildoutAreaName),
|
||||
JF("getBuildoutAreaSizeAndCenter", "(FFLjava/lang/String;ZZ)[F", getBuildoutAreaSizeAndCenter),
|
||||
JF("getBuildoutAreaRect", "(FFLjava/lang/String;Z)[F", getBuildoutAreaRect),
|
||||
JF("_requestSameServer", "(JJ)V", requestSameServer),
|
||||
};
|
||||
|
||||
@@ -548,4 +550,43 @@ void JNICALL ScriptMethodsPlanetNamespace::requestSameServer(JNIEnv *env, jobjec
|
||||
GameServer::getInstance().sendToPlanetServer(rssMessage);
|
||||
}
|
||||
|
||||
jfloatArray JNICALL ScriptMethodsPlanetNamespace::getBuildoutAreaRect(JNIEnv *env, jobject self, jfloat x, jfloat z, jstring scene, jboolean allowComposite) {
|
||||
|
||||
std::string sceneId;
|
||||
JavaStringParam sceneId_jsp (scene);
|
||||
if (!JavaLibrary::convert (sceneId_jsp, sceneId))
|
||||
{
|
||||
WARNING(true,("getBuildoutAreaRect could not convert the scene id to string"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
const BuildoutArea * const area = SharedBuildoutAreaManager::findBuildoutAreaAtPosition(sceneId.c_str(), x, z, false, false);
|
||||
if (!area)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
LocalFloatArrayRefPtr valueArray = createNewFloatArray(static_cast<jsize>(4));
|
||||
if (valueArray == LocalFloatArrayRef::cms_nullPtr)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
Rectangle2d rect = area->getRectangle(allowComposite == JNI_TRUE);
|
||||
|
||||
auto value = static_cast<jfloat>(rect.x0);
|
||||
setFloatArrayRegion(*valueArray, 0, 1, &value);
|
||||
|
||||
value = static_cast<jfloat>(rect.x1);
|
||||
setFloatArrayRegion(*valueArray, 1, 1, &value);
|
||||
|
||||
value = static_cast<jfloat>(rect.y0);
|
||||
setFloatArrayRegion(*valueArray, 2, 1, &value);
|
||||
|
||||
value = static_cast<jfloat>(rect.y1);
|
||||
setFloatArrayRegion(*valueArray, 3, 1, &value);
|
||||
|
||||
return valueArray->getReturnValue();
|
||||
}
|
||||
|
||||
// ======================================================================
|
||||
|
||||
Reference in New Issue
Block a user