532 lines
25 KiB
C++
532 lines
25 KiB
C++
/*
|
|
* Copyright (C) 2017 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#include <jni.h>
|
|
|
|
#include <filament/RenderableManager.h>
|
|
#include <filament/MaterialInstance.h>
|
|
|
|
#include <utils/Entity.h>
|
|
|
|
#include "common/NioUtils.h"
|
|
|
|
using namespace filament;
|
|
using namespace utils;
|
|
|
|
extern "C" JNIEXPORT jboolean JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nHasComponent(JNIEnv*, jclass,
|
|
jlong nativeRenderableManager, jint entity) {
|
|
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
|
|
return (jboolean) rm->hasComponent((Entity &) entity);
|
|
}
|
|
|
|
extern "C" JNIEXPORT jint JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nGetInstance(JNIEnv*, jclass,
|
|
jlong nativeRenderableManager, jint entity) {
|
|
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
|
|
return rm->getInstance((Entity &) entity);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nDestroy(JNIEnv*, jclass,
|
|
jlong nativeRenderableManager, jint entity) {
|
|
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
|
|
rm->destroy((Entity &) entity);
|
|
}
|
|
|
|
|
|
|
|
extern "C" JNIEXPORT jlong JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nCreateBuilder(JNIEnv*, jclass,
|
|
jint count) {
|
|
return (jlong) new RenderableManager::Builder((size_t) count);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nDestroyBuilder(JNIEnv*, jclass,
|
|
jlong nativeBuilder) {
|
|
RenderableManager::Builder *builder = (RenderableManager::Builder *) nativeBuilder;
|
|
delete builder;
|
|
}
|
|
|
|
extern "C" JNIEXPORT jboolean JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nBuilderBuild(JNIEnv*, jclass,
|
|
jlong nativeBuilder, jlong nativeEngine, jint entity) {
|
|
RenderableManager::Builder *builder = (RenderableManager::Builder *) nativeBuilder;
|
|
Engine *engine = (Engine *) nativeEngine;
|
|
return jboolean(builder->build(*engine, (Entity &) entity) == RenderableManager::Builder::Success);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nBuilderGeometry__JIIJJ(JNIEnv*, jclass,
|
|
jlong nativeBuilder, jint index, jint primitiveType, jlong nativeVertexBuffer,
|
|
jlong nativeIndexBuffer) {
|
|
RenderableManager::Builder *builder = (RenderableManager::Builder *) nativeBuilder;
|
|
VertexBuffer *vertexBuffer = (VertexBuffer *) nativeVertexBuffer;
|
|
IndexBuffer *indexBuffer = (IndexBuffer *) nativeIndexBuffer;
|
|
builder->geometry((size_t) index, (RenderableManager::PrimitiveType) primitiveType,
|
|
vertexBuffer, indexBuffer);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nBuilderGeometry__JIIJJII(JNIEnv*,
|
|
jclass, jlong nativeBuilder, jint index, jint primitiveType, jlong nativeVertexBuffer,
|
|
jlong nativeIndexBuffer, jint offset, jint count) {
|
|
RenderableManager::Builder *builder = (RenderableManager::Builder *) nativeBuilder;
|
|
VertexBuffer *vertexBuffer = (VertexBuffer *) nativeVertexBuffer;
|
|
IndexBuffer *indexBuffer = (IndexBuffer *) nativeIndexBuffer;
|
|
builder->geometry((size_t) index, (RenderableManager::PrimitiveType) primitiveType,
|
|
vertexBuffer, indexBuffer, (size_t) offset, (size_t) count);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nBuilderGeometry__JIIJJIIII(JNIEnv*,
|
|
jclass, jlong nativeBuilder, jint index, jint primitiveType, jlong nativeVertexBuffer,
|
|
jlong nativeIndexBuffer, jint offset, jint minIndex, jint maxIndex, jint count) {
|
|
RenderableManager::Builder *builder = (RenderableManager::Builder *) nativeBuilder;
|
|
VertexBuffer *vertexBuffer = (VertexBuffer *) nativeVertexBuffer;
|
|
IndexBuffer *indexBuffer = (IndexBuffer *) nativeIndexBuffer;
|
|
builder->geometry((size_t) index, (RenderableManager::PrimitiveType) primitiveType,
|
|
vertexBuffer, indexBuffer, (size_t) offset, (size_t) minIndex, (size_t) maxIndex,
|
|
(size_t) count);
|
|
}
|
|
|
|
extern "C"
|
|
JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nBuilderGeometryType(JNIEnv*, jclass,
|
|
jlong nativeBuilder, int type) {
|
|
RenderableManager::Builder *builder = (RenderableManager::Builder *) nativeBuilder;
|
|
builder->geometryType((RenderableManager::Builder::GeometryType)type);
|
|
}
|
|
|
|
extern "C"
|
|
JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nBuilderMaterial(JNIEnv*, jclass,
|
|
jlong nativeBuilder, jint index, jlong nativeMaterialInstance) {
|
|
RenderableManager::Builder *builder = (RenderableManager::Builder *) nativeBuilder;
|
|
builder->material((size_t) index, (const MaterialInstance*) nativeMaterialInstance);
|
|
}
|
|
|
|
extern "C"
|
|
JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nBuilderBlendOrder(JNIEnv*, jclass,
|
|
jlong nativeBuilder, jint index, jint blendOrder) {
|
|
RenderableManager::Builder *builder = (RenderableManager::Builder *) nativeBuilder;
|
|
builder->blendOrder((size_t) index, (uint16_t) blendOrder);
|
|
}
|
|
|
|
extern "C"
|
|
JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nBuilderGlobalBlendOrderEnabled(JNIEnv*, jclass,
|
|
jlong nativeBuilder, jint index, jboolean enabled) {
|
|
RenderableManager::Builder *builder = (RenderableManager::Builder *) nativeBuilder;
|
|
builder->globalBlendOrderEnabled((size_t) index, (bool) enabled);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nBuilderBoundingBox(JNIEnv*, jclass,
|
|
jlong nativeBuilder, jfloat cx, jfloat cy, jfloat cz, jfloat ex, jfloat ey, jfloat ez) {
|
|
RenderableManager::Builder *builder = (RenderableManager::Builder *) nativeBuilder;
|
|
builder->boundingBox({{cx, cy, cz},
|
|
{ex, ey, ez}});
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nBuilderLayerMask(JNIEnv*, jclass,
|
|
jlong nativeBuilder, jint select, jint value) {
|
|
RenderableManager::Builder *builder = (RenderableManager::Builder *) nativeBuilder;
|
|
builder->layerMask((uint8_t) select, (uint8_t) value);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nBuilderPriority(JNIEnv*, jclass,
|
|
jlong nativeBuilder, jint priority) {
|
|
RenderableManager::Builder *builder = (RenderableManager::Builder *) nativeBuilder;
|
|
builder->priority((uint8_t) priority);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nBuilderChannel(JNIEnv*, jclass,
|
|
jlong nativeBuilder, jint channel) {
|
|
RenderableManager::Builder *builder = (RenderableManager::Builder *) nativeBuilder;
|
|
builder->channel((uint8_t) channel);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nBuilderCulling(JNIEnv*, jclass,
|
|
jlong nativeBuilder, jboolean enabled) {
|
|
RenderableManager::Builder *builder = (RenderableManager::Builder *) nativeBuilder;
|
|
builder->culling(enabled);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nBuilderCastShadows(JNIEnv*, jclass,
|
|
jlong nativeBuilder, jboolean enabled) {
|
|
RenderableManager::Builder *builder = (RenderableManager::Builder *) nativeBuilder;
|
|
builder->castShadows(enabled);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nBuilderReceiveShadows(JNIEnv*, jclass,
|
|
jlong nativeBuilder, jboolean enabled) {
|
|
RenderableManager::Builder *builder = (RenderableManager::Builder *) nativeBuilder;
|
|
builder->receiveShadows(enabled);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nBuilderScreenSpaceContactShadows(JNIEnv*, jclass,
|
|
jlong nativeBuilder, jboolean enabled) {
|
|
RenderableManager::Builder *builder = (RenderableManager::Builder *) nativeBuilder;
|
|
builder->screenSpaceContactShadows(enabled);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nBuilderSkinningBuffer(JNIEnv*, jclass,
|
|
jlong nativeBuilder, jlong nativeSkinningBuffer, jint boneCount, jint offset) {
|
|
RenderableManager::Builder *builder = (RenderableManager::Builder *) nativeBuilder;
|
|
SkinningBuffer *skinningBuffer = (SkinningBuffer *) nativeSkinningBuffer;
|
|
builder->skinning(skinningBuffer, boneCount, offset);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nBuilderSkinning(JNIEnv*, jclass,
|
|
jlong nativeBuilder, jint boneCount) {
|
|
RenderableManager::Builder *builder = (RenderableManager::Builder *) nativeBuilder;
|
|
builder->skinning((size_t)boneCount);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nBuilderEnableSkinningBuffers(JNIEnv*, jclass,
|
|
jlong nativeBuilder, jboolean enabled) {
|
|
RenderableManager::Builder *builder = (RenderableManager::Builder *) nativeBuilder;
|
|
builder->enableSkinningBuffers(enabled);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nBuilderFog(JNIEnv*, jclass,
|
|
jlong nativeBuilder, jboolean enabled) {
|
|
RenderableManager::Builder *builder = (RenderableManager::Builder *) nativeBuilder;
|
|
builder->fog(enabled);
|
|
}
|
|
|
|
extern "C" JNIEXPORT jint JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nBuilderSkinningBones(JNIEnv* env, jclass,
|
|
jlong nativeBuilder, jint boneCount, jobject bones, jint remaining) {
|
|
RenderableManager::Builder *builder = (RenderableManager::Builder *) nativeBuilder;
|
|
AutoBuffer nioBuffer(env, bones, boneCount * 8);
|
|
void* data = nioBuffer.getData();
|
|
size_t sizeInBytes = nioBuffer.getSize();
|
|
if (sizeInBytes > (remaining << nioBuffer.getShift())) {
|
|
// BufferOverflowException
|
|
return -1;
|
|
}
|
|
builder->skinning((size_t)boneCount, static_cast<RenderableManager::Bone const*>(data));
|
|
return 0;
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nBuilderMorphing(JNIEnv*, jclass,
|
|
jlong nativeBuilder, jint targetCount) {
|
|
RenderableManager::Builder *builder = (RenderableManager::Builder *) nativeBuilder;
|
|
builder->morphing(targetCount);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nBuilderMorphingStandard(JNIEnv*, jclass,
|
|
jlong nativeBuilder, jlong nativeMorphTargetBuffer) {
|
|
RenderableManager::Builder *builder = (RenderableManager::Builder *) nativeBuilder;
|
|
MorphTargetBuffer *morphTargetBuffer = (MorphTargetBuffer *) nativeMorphTargetBuffer;
|
|
builder->morphing(morphTargetBuffer);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nBuilderSetMorphTargetBufferOffsetAt(JNIEnv*, jclass,
|
|
jlong nativeBuilder, int level, int primitiveIndex, int offset) {
|
|
RenderableManager::Builder *builder = (RenderableManager::Builder *) nativeBuilder;
|
|
builder->morphing(level, primitiveIndex, offset);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nBuilderLightChannel(JNIEnv*, jclass,
|
|
jlong nativeBuilder, jint channel, jboolean enable) {
|
|
RenderableManager::Builder *builder = (RenderableManager::Builder *) nativeBuilder;
|
|
builder->lightChannel(channel, (bool)enable);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nBuilderInstances(JNIEnv*, jclass,
|
|
jlong nativeBuilder, jint instanceCount) {
|
|
RenderableManager::Builder *builder = (RenderableManager::Builder *) nativeBuilder;
|
|
builder->instances(instanceCount);
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------------------------
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nSetSkinningBuffer(JNIEnv*, jclass,
|
|
jlong nativeRenderableManager, jint i, jlong nativeSkinningBuffer, jint count, jint offset) {
|
|
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
|
|
SkinningBuffer *sb = (SkinningBuffer *) nativeSkinningBuffer;
|
|
rm->setSkinningBuffer(i, sb, count, offset);
|
|
}
|
|
|
|
extern "C" JNIEXPORT jint JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nSetBonesAsMatrices(JNIEnv* env, jclass,
|
|
jlong nativeRenderableManager, jint i, jobject matrices, jint remaining,
|
|
jint boneCount, jint offset) {
|
|
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
|
|
AutoBuffer nioBuffer(env, matrices, boneCount * 16);
|
|
void* data = nioBuffer.getData();
|
|
size_t sizeInBytes = nioBuffer.getSize();
|
|
if (sizeInBytes > (remaining << nioBuffer.getShift())) {
|
|
// BufferOverflowException
|
|
return -1;
|
|
}
|
|
rm->setBones((RenderableManager::Instance)i,
|
|
static_cast<filament::math::mat4f const *>(data), (size_t)boneCount, (size_t)offset);
|
|
return 0;
|
|
}
|
|
|
|
extern "C" JNIEXPORT jint JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nSetBonesAsQuaternions(JNIEnv* env, jclass,
|
|
jlong nativeRenderableManager, jint i, jobject quaternions, jint remaining,
|
|
jint boneCount, jint offset) {
|
|
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
|
|
AutoBuffer nioBuffer(env, quaternions, boneCount * 8);
|
|
void* data = nioBuffer.getData();
|
|
size_t sizeInBytes = nioBuffer.getSize();
|
|
if (sizeInBytes > (remaining << nioBuffer.getShift())) {
|
|
// BufferOverflowException
|
|
return -1;
|
|
}
|
|
rm->setBones((RenderableManager::Instance)i,
|
|
static_cast<RenderableManager::Bone const *>(data), (size_t)boneCount, (size_t)offset);
|
|
return 0;
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nSetMorphWeights(JNIEnv* env, jclass,
|
|
jlong nativeRenderableManager, jint instance, jfloatArray weights, jint offset) {
|
|
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
|
|
jfloat* vec = env->GetFloatArrayElements(weights, NULL);
|
|
jsize count = env->GetArrayLength(weights);
|
|
rm->setMorphWeights((RenderableManager::Instance)instance, vec, count, offset);
|
|
env->ReleaseFloatArrayElements(weights, vec, JNI_ABORT);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nSetMorphTargetBufferOffsetAt(JNIEnv*,
|
|
jclass, jlong nativeRenderableManager, jint i, int level, jint primitiveIndex,
|
|
jlong, jint offset) {
|
|
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
|
|
rm->setMorphTargetBufferOffsetAt((RenderableManager::Instance) i, (uint8_t) level,
|
|
(size_t) primitiveIndex, (size_t) offset);
|
|
}
|
|
|
|
extern "C" JNIEXPORT jint JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nGetMorphTargetCount(JNIEnv* env, jclass,
|
|
jlong nativeRenderableManager, jint instance) {
|
|
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
|
|
return rm->getMorphTargetCount((RenderableManager::Instance)instance);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nSetAxisAlignedBoundingBox(JNIEnv*,
|
|
jclass, jlong nativeRenderableManager, jint i, jfloat cx, jfloat cy, jfloat cz,
|
|
jfloat ex, jfloat ey, jfloat ez) {
|
|
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
|
|
rm->setAxisAlignedBoundingBox((RenderableManager::Instance) i, {{cx, cy, cz},
|
|
{ex, ey, ez}});
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nSetLayerMask(JNIEnv*, jclass,
|
|
jlong nativeRenderableManager, jint i, jint select, jint value) {
|
|
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
|
|
rm->setLayerMask((RenderableManager::Instance) i, (uint8_t) select, (uint8_t) value);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nSetPriority(JNIEnv*, jclass,
|
|
jlong nativeRenderableManager, jint i, jint priority) {
|
|
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
|
|
rm->setPriority((RenderableManager::Instance) i, (uint8_t) priority);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nSetChannel(JNIEnv*, jclass,
|
|
jlong nativeRenderableManager, jint i, jint channel) {
|
|
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
|
|
rm->setChannel((RenderableManager::Instance) i, (uint8_t) channel);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nSetCulling(JNIEnv*, jclass,
|
|
jlong nativeRenderableManager, jint i, jboolean enabled) {
|
|
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
|
|
rm->setCulling((RenderableManager::Instance) i, enabled);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nSetFogEnabled(JNIEnv*, jclass,
|
|
jlong nativeRenderableManager, jint i, jboolean enabled) {
|
|
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
|
|
rm->setFogEnabled((RenderableManager::Instance) i, enabled);
|
|
}
|
|
|
|
extern "C" JNIEXPORT jboolean JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nGetFogEnabled(JNIEnv*, jclass,
|
|
jlong nativeRenderableManager, jint i) {
|
|
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
|
|
return (jboolean)rm->getFogEnabled((RenderableManager::Instance) i);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nSetCastShadows(JNIEnv*, jclass,
|
|
jlong nativeRenderableManager, jint i, jboolean enabled) {
|
|
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
|
|
rm->setCastShadows((RenderableManager::Instance) i, enabled);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nSetReceiveShadows(JNIEnv*, jclass,
|
|
jlong nativeRenderableManager, jint i, jboolean enabled) {
|
|
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
|
|
rm->setReceiveShadows((RenderableManager::Instance) i, enabled);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nSetScreenSpaceContactShadows(JNIEnv*, jclass,
|
|
jlong nativeRenderableManager, jint i, jboolean enabled) {
|
|
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
|
|
rm->setScreenSpaceContactShadows((RenderableManager::Instance) i, enabled);
|
|
}
|
|
|
|
extern "C" JNIEXPORT jboolean JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nIsShadowCaster(JNIEnv*, jclass,
|
|
jlong nativeRenderableManager, jint i) {
|
|
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
|
|
return (jboolean) rm->isShadowCaster((RenderableManager::Instance) i);
|
|
}
|
|
|
|
extern "C" JNIEXPORT jboolean JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nIsShadowReceiver(JNIEnv*, jclass,
|
|
jlong nativeRenderableManager, jint i) {
|
|
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
|
|
return (jboolean) rm->isShadowReceiver((RenderableManager::Instance) i);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nGetAxisAlignedBoundingBox(JNIEnv* env,
|
|
jclass, jlong nativeRenderableManager, jint i, jfloatArray center_,
|
|
jfloatArray halfExtent_) {
|
|
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
|
|
jfloat *center = env->GetFloatArrayElements(center_, NULL);
|
|
jfloat *halfExtent = env->GetFloatArrayElements(halfExtent_, NULL);
|
|
Box const &aabb = rm->getAxisAlignedBoundingBox((RenderableManager::Instance) i);
|
|
*reinterpret_cast<filament::math::float3 *>(center) = aabb.center;
|
|
*reinterpret_cast<filament::math::float3 *>(halfExtent) = aabb.halfExtent;
|
|
env->ReleaseFloatArrayElements(center_, center, 0);
|
|
env->ReleaseFloatArrayElements(halfExtent_, halfExtent, 0);
|
|
}
|
|
|
|
extern "C" JNIEXPORT jint JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nGetPrimitiveCount(JNIEnv*, jclass,
|
|
jlong nativeRenderableManager, jint i) {
|
|
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
|
|
return (jint) rm->getPrimitiveCount((RenderableManager::Instance) i);
|
|
}
|
|
|
|
extern "C" JNIEXPORT jint JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nGetInstanceCount(JNIEnv*, jclass,
|
|
jlong nativeRenderableManager, jint i) {
|
|
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
|
|
return (jint) rm->getInstanceCount((RenderableManager::Instance) i);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nSetMaterialInstanceAt(JNIEnv*, jclass,
|
|
jlong nativeRenderableManager, jint i, jint primitiveIndex, jlong nativeMaterialInstance) {
|
|
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
|
|
const MaterialInstance *materialInstance = (const MaterialInstance *) nativeMaterialInstance;
|
|
rm->setMaterialInstanceAt((RenderableManager::Instance) i, (size_t) primitiveIndex,
|
|
materialInstance);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nClearMaterialInstanceAt(JNIEnv*, jclass,
|
|
jlong nativeRenderableManager, jint i, jint primitiveIndex) {
|
|
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
|
|
rm->clearMaterialInstanceAt((RenderableManager::Instance) i, (size_t) primitiveIndex);
|
|
}
|
|
|
|
extern "C" JNIEXPORT jlong JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nGetMaterialInstanceAt(JNIEnv*, jclass,
|
|
jlong nativeRenderableManager, jint i, jint primitiveIndex) {
|
|
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
|
|
return (long) rm->getMaterialInstanceAt((RenderableManager::Instance) i, (size_t) primitiveIndex);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nSetGeometryAt__JIIIJJII(JNIEnv*,
|
|
jclass, jlong nativeRenderableManager, jint i, jint primitiveIndex, jint primitiveType,
|
|
jlong nativeVertexBuffer, jlong nativeIndexBuffer, jint offset, jint count) {
|
|
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
|
|
VertexBuffer *vertexBuffer = (VertexBuffer *) nativeVertexBuffer;
|
|
IndexBuffer *indexBuffer = (IndexBuffer *) nativeIndexBuffer;
|
|
rm->setGeometryAt((RenderableManager::Instance) i, (size_t) primitiveIndex,
|
|
(RenderableManager::PrimitiveType) primitiveType, vertexBuffer, indexBuffer,
|
|
(size_t) offset, (size_t) count);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nSetBlendOrderAt(JNIEnv*, jclass,
|
|
jlong nativeRenderableManager, jint i, jint primitiveIndex, jint blendOrder) {
|
|
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
|
|
rm->setBlendOrderAt((RenderableManager::Instance) i, (size_t) primitiveIndex,
|
|
(uint16_t) blendOrder);
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nSetGlobalBlendOrderEnabledAt(JNIEnv*, jclass,
|
|
jlong nativeRenderableManager, jint i, jint primitiveIndex, jboolean enabled) {
|
|
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
|
|
rm->setGlobalBlendOrderEnabledAt((RenderableManager::Instance) i, (size_t) primitiveIndex,
|
|
(bool) enabled);
|
|
}
|
|
|
|
extern "C" JNIEXPORT jint JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nGetEnabledAttributesAt(JNIEnv*, jclass,
|
|
jlong nativeRenderableManager, jint i, jint primitiveIndex) {
|
|
RenderableManager const *rm = (RenderableManager const *) nativeRenderableManager;
|
|
AttributeBitset enabled = rm->getEnabledAttributesAt((RenderableManager::Instance) i, (size_t) primitiveIndex);
|
|
return enabled.getValue();
|
|
}
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nSetLightChannel(JNIEnv*, jclass,
|
|
jlong nativeRenderableManager, jint i, jint channel, jboolean enable) {
|
|
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
|
|
rm->setLightChannel((RenderableManager::Instance) i, channel, (bool)enable);
|
|
}
|
|
|
|
extern "C" JNIEXPORT jboolean JNICALL
|
|
Java_com_google_android_filament_RenderableManager_nGetLightChannel(JNIEnv*, jclass,
|
|
jlong nativeRenderableManager, jint i, jint channel) {
|
|
RenderableManager const *rm = (RenderableManager const *) nativeRenderableManager;
|
|
return rm->getLightChannel((RenderableManager::Instance) i, channel);
|
|
}
|