Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9e401bcd authored by Alex Sakhartchouk's avatar Alex Sakhartchouk
Browse files

Changing scenegraph sample to use arrays.

Change-Id: Ifa454d503c1445efcad6e31243b65d75e62e3035
parent 79c92540
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -342,7 +342,7 @@ public class Element extends BaseObj {
        mElementNames = n;
        mArraySizes = as;
        for (int ct = 0; ct < mElements.length; ct++ ) {
            mSize += mElements[ct].mSize;
            mSize += mElements[ct].mSize * mArraySizes[ct];
        }
    }

+7 −53
Original line number Diff line number Diff line
@@ -46,9 +46,6 @@ public class SgTransform {
    ScriptField_SgTransform mChildField;
    public ScriptField_SgTransform.Item mTransformData;

    Float4[] mTransforms;
    TransformType[] mTransformTypes;

    RenderScript mRS;

    Vector mChildren;
@@ -66,62 +63,20 @@ public class SgTransform {
    }

    public void setTransform(int index, Float4 value, TransformType type) {
        mTransforms[index] = value;
        mTransformTypes[index] = type;
        mTransformData.transforms[index] = value;
        mTransformData.transformTypes[index] = type.mID;
    }

    void initData() {
        int numTransforms = 16;
        mTransforms = new Float4[numTransforms];
        mTransformTypes = new TransformType[numTransforms];
        for(int i = 0; i < numTransforms; i ++) {
            mTransforms[i] = new Float4(0, 0, 0, 0);
            mTransformTypes[i] = TransformType.NONE;
        }
        int numElements = mTransformData.transforms.length;
        mTransformData.transformTypes = new int[numElements];
        for(int i = 0; i < numElements; i ++) {
            mTransformData.transforms[i] = new Float4(0, 0, 0, 0);
            mTransformData.transformTypes[i] = TransformType.NONE.mID;
        }

    void setData() {

        mTransformData.globalMat = new Matrix4f();
        mTransformData.localMat = new Matrix4f();

        mTransformData.transforms0 = mTransforms[0];
        mTransformData.transforms1 = mTransforms[1];
        mTransformData.transforms2 = mTransforms[2];
        mTransformData.transforms3 = mTransforms[3];
        mTransformData.transforms4 = mTransforms[4];
        mTransformData.transforms5 = mTransforms[5];
        mTransformData.transforms6 = mTransforms[6];
        mTransformData.transforms7 = mTransforms[7];
        mTransformData.transforms8 = mTransforms[8];
        mTransformData.transforms9 = mTransforms[9];
        mTransformData.transforms10 = mTransforms[10];
        mTransformData.transforms11 = mTransforms[11];
        mTransformData.transforms12 = mTransforms[12];
        mTransformData.transforms13 = mTransforms[13];
        mTransformData.transforms14 = mTransforms[14];
        mTransformData.transforms15 = mTransforms[15];

        mTransformData.transformType0 = mTransformTypes[0].mID;
        mTransformData.transformType1 = mTransformTypes[1].mID;
        mTransformData.transformType2 = mTransformTypes[2].mID;
        mTransformData.transformType3 = mTransformTypes[3].mID;
        mTransformData.transformType4 = mTransformTypes[4].mID;
        mTransformData.transformType5 = mTransformTypes[5].mID;
        mTransformData.transformType6 = mTransformTypes[6].mID;
        mTransformData.transformType7 = mTransformTypes[7].mID;
        mTransformData.transformType8 = mTransformTypes[8].mID;
        mTransformData.transformType9 = mTransformTypes[9].mID;
        mTransformData.transformType10 = mTransformTypes[10].mID;
        mTransformData.transformType11 = mTransformTypes[11].mID;
        mTransformData.transformType12 = mTransformTypes[12].mID;
        mTransformData.transformType13 = mTransformTypes[13].mID;
        mTransformData.transformType14 = mTransformTypes[14].mID;
        mTransformData.transformType15 = mTransformTypes[15].mID;

        mTransformData.isDirty = 1;
        mTransformData.children = null;

    }

    public SgTransform(RenderScript rs) {
@@ -132,7 +87,6 @@ public class SgTransform {
    }

    public ScriptField_SgTransform.Item getData() {
        setData();
        if(mChildren.size() != 0) {
            mChildField = new ScriptField_SgTransform(mRS, mChildren.size());
            mTransformData.children = mChildField.getAllocation();
+3 −3
Original line number Diff line number Diff line
@@ -48,16 +48,16 @@ void init() {

int root(int launchID) {

    gGroup->transforms1.w += 0.5f;
    gGroup->transforms[1].w += 0.5f;
    gGroup->isDirty = 1;

    SgTransform *robot1Ptr = gRobot1 + gRobot1Index;

    robot1Ptr->transforms1.w -= 1.5f;
    robot1Ptr->transforms[1].w -= 1.5f;
    robot1Ptr->isDirty = 1;

    SgTransform *robot2Ptr = gRobot2 + gRobot2Index;
    robot2Ptr->transforms1.w += 2.5f;
    robot2Ptr->transforms[1].w += 2.5f;
    robot2Ptr->isDirty = 1;

    rsForEach(gTransformRS, gRootNode->children, gRootNode->children, 0);
+2 −5
Original line number Diff line number Diff line
@@ -67,15 +67,12 @@ void root(const void *v_in, void *v_out, const void *usrData, uint32_t x, uint32
        // Reset our local matrix
        rsMatrixLoadIdentity(localMat);

        float4 *transformSource = &data->transforms0;
        int *transformTypes = &data->transformType0;

        for(int i = 0; i < 16; i ++) {
            if(transformTypes[i] == TRANSFORM_NONE) {
            if(data->transformTypes[i] == TRANSFORM_NONE) {
                break;
            }
            //rsDebug("Transform adding transformation", transformTypes[i]);
            appendTransformation(transformTypes[i], transformSource[i], localMat);
            appendTransformation(data->transformTypes[i], data->transforms[i], localMat);
        }
    }

+2 −33
Original line number Diff line number Diff line
@@ -25,39 +25,8 @@ typedef struct __attribute__((packed, aligned(4))) {
    rs_matrix4x4 globalMat;
    rs_matrix4x4 localMat;

    float4 transforms0;
    float4 transforms1;
    float4 transforms2;
    float4 transforms3;
    float4 transforms4;
    float4 transforms5;
    float4 transforms6;
    float4 transforms7;
    float4 transforms8;
    float4 transforms9;
    float4 transforms10;
    float4 transforms11;
    float4 transforms12;
    float4 transforms13;
    float4 transforms14;
    float4 transforms15;

    int transformType0;
    int transformType1;
    int transformType2;
    int transformType3;
    int transformType4;
    int transformType5;
    int transformType6;
    int transformType7;
    int transformType8;
    int transformType9;
    int transformType10;
    int transformType11;
    int transformType12;
    int transformType13;
    int transformType14;
    int transformType15;
    float4 transforms[16];
    int transformTypes[16];

    int isDirty;

Loading