1a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk/*
2a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk * Copyright (C) 2011 The Android Open Source Project
3a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk *
4a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk * Licensed under the Apache License, Version 2.0 (the "License");
5a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk * you may not use this file except in compliance with the License.
6a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk * You may obtain a copy of the License at
7a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk *
8a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk *      http://www.apache.org/licenses/LICENSE-2.0
9a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk *
10a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk * Unless required by applicable law or agreed to in writing, software
11a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk * distributed under the License is distributed on an "AS IS" BASIS,
12a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk * See the License for the specific language governing permissions and
14a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk * limitations under the License.
15a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk */
16a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk
17a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchoukpackage com.android.scenegraph;
18a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk
19a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchoukimport java.lang.Math;
20a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchoukimport java.util.ArrayList;
21a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk
22a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchoukimport android.renderscript.Matrix4f;
23a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchoukimport android.util.Log;
24a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk
25a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk/**
26a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk * @hide
27a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk */
28a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchoukpublic class MatrixTransform extends Transform {
29a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk
30a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk    Matrix4f mLocalMatrix;
31a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk    public MatrixTransform() {
32a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk        mLocalMatrix = new Matrix4f();
33a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk    }
34a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk
35a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk    public void setMatrix(Matrix4f matrix) {
36a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk        mLocalMatrix = matrix;
37e93db17a143ff560f92d94b68ce1e76f79db7902Alex Sakhartchouk        updateRSData();
38e93db17a143ff560f92d94b68ce1e76f79db7902Alex Sakhartchouk    }
39e93db17a143ff560f92d94b68ce1e76f79db7902Alex Sakhartchouk
40e93db17a143ff560f92d94b68ce1e76f79db7902Alex Sakhartchouk    public Matrix4f getMatrix() {
41e93db17a143ff560f92d94b68ce1e76f79db7902Alex Sakhartchouk        return new Matrix4f(mLocalMatrix.getArray());
42a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk    }
43a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk
44a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk    void initLocalData() {
45a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk        mTransformData.localMat = mLocalMatrix;
46a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk    }
47a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk
48e93db17a143ff560f92d94b68ce1e76f79db7902Alex Sakhartchouk    void updateRSData() {
49e93db17a143ff560f92d94b68ce1e76f79db7902Alex Sakhartchouk        if (mField == null) {
50e93db17a143ff560f92d94b68ce1e76f79db7902Alex Sakhartchouk            return;
51e93db17a143ff560f92d94b68ce1e76f79db7902Alex Sakhartchouk        }
52e92c78ccd095ae1cb47198afb664f98571ce2148Alex Sakhartchouk        mField.set_localMat(0, mLocalMatrix, false);
53e92c78ccd095ae1cb47198afb664f98571ce2148Alex Sakhartchouk        mField.set_isDirty(0, 1, true);
54a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk    }
55a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk}
56a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk
57a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk
58a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk
59a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk
60a7a211b8a68a7d3f5ff4409aa286db07f96c0550Alex Sakhartchouk
61