14fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk/* 24fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk * Copyright (C) 2011 The Android Open Source Project 34fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk * 44fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk * Licensed under the Apache License, Version 2.0 (the "License"); 54fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk * you may not use this file except in compliance with the License. 64fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk * You may obtain a copy of the License at 74fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk * 84fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk * http://www.apache.org/licenses/LICENSE-2.0 94fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk * 104fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk * Unless required by applicable law or agreed to in writing, software 114fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk * distributed under the License is distributed on an "AS IS" BASIS, 124fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk * See the License for the specific language governing permissions and 144fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk * limitations under the License. 154fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk */ 164fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk 174fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchoukpackage com.android.scenegraph; 184fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk 194fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchoukimport java.lang.Math; 204fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk 214fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchoukimport com.android.scenegraph.SceneManager; 224fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchoukimport com.android.scenegraph.TextureBase; 234fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk 244fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchoukimport android.content.res.Resources; 254fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchoukimport android.renderscript.*; 264fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchoukimport android.util.Log; 274fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk 284fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk/** 294fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk * @hide 304fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk */ 314fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchoukpublic class TextureCube extends TextureBase { 324fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk String mFileName; 334fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk String mFileDir; 34d2dc9838961f945c402e5d810bc715196240be6fAlex Sakhartchouk int mResourceID; 354fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk 364fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk public TextureCube() { 37e8bb420a687598be9801e7ff4a0d114fa72ac5bcAlex Sakhartchouk super(ScriptC_export.const_TextureType_TEXTURE_CUBE); 384fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk } 394fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk 404fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk public TextureCube(Allocation tex) { 41e8bb420a687598be9801e7ff4a0d114fa72ac5bcAlex Sakhartchouk super(ScriptC_export.const_TextureType_TEXTURE_CUBE); 424fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk setTexture(tex); 434fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk } 444fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk 4599b93819f12f18b8559f702d7a303c31fe05205aAlex Sakhartchouk public TextureCube(String dir, String file) { 46e8bb420a687598be9801e7ff4a0d114fa72ac5bcAlex Sakhartchouk super(ScriptC_export.const_TextureType_TEXTURE_CUBE); 4799b93819f12f18b8559f702d7a303c31fe05205aAlex Sakhartchouk setFileDir(dir); 4899b93819f12f18b8559f702d7a303c31fe05205aAlex Sakhartchouk setFileName(file); 4999b93819f12f18b8559f702d7a303c31fe05205aAlex Sakhartchouk } 5099b93819f12f18b8559f702d7a303c31fe05205aAlex Sakhartchouk 51d2dc9838961f945c402e5d810bc715196240be6fAlex Sakhartchouk public TextureCube(int resourceID) { 52d2dc9838961f945c402e5d810bc715196240be6fAlex Sakhartchouk super(ScriptC_export.const_TextureType_TEXTURE_2D); 53d2dc9838961f945c402e5d810bc715196240be6fAlex Sakhartchouk mResourceID = resourceID; 54d2dc9838961f945c402e5d810bc715196240be6fAlex Sakhartchouk } 55d2dc9838961f945c402e5d810bc715196240be6fAlex Sakhartchouk 564fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk public void setFileDir(String dir) { 574fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk mFileDir = dir; 584fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk } 594fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk 604fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk public void setFileName(String file) { 614fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk mFileName = file; 624fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk } 634fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk 644fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk public String getFileName() { 654fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk return mFileName; 664fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk } 674fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk 684fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk public void setTexture(Allocation tex) { 69a9eb319965da1f2d59c06135d0d8d4631312bfffAlex Sakhartchouk mData.texture = tex != null ? tex : SceneManager.getDefaultTexCube(); 70e8bb420a687598be9801e7ff4a0d114fa72ac5bcAlex Sakhartchouk if (mField != null) { 71e8bb420a687598be9801e7ff4a0d114fa72ac5bcAlex Sakhartchouk mField.set_texture(0, mData.texture, true); 72e8bb420a687598be9801e7ff4a0d114fa72ac5bcAlex Sakhartchouk } 734fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk } 744fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk 75e8bb420a687598be9801e7ff4a0d114fa72ac5bcAlex Sakhartchouk void load() { 76e8bb420a687598be9801e7ff4a0d114fa72ac5bcAlex Sakhartchouk RenderScriptGL rs = SceneManager.getRS(); 77e8bb420a687598be9801e7ff4a0d114fa72ac5bcAlex Sakhartchouk Resources res = SceneManager.getRes(); 78d2dc9838961f945c402e5d810bc715196240be6fAlex Sakhartchouk if (mFileName != null && mFileName.length() > 0) { 79d2dc9838961f945c402e5d810bc715196240be6fAlex Sakhartchouk String shortName = mFileName.substring(mFileName.lastIndexOf('/') + 1); 80d2dc9838961f945c402e5d810bc715196240be6fAlex Sakhartchouk setTexture(SceneManager.loadCubemap(mFileDir + shortName, rs, res)); 81d2dc9838961f945c402e5d810bc715196240be6fAlex Sakhartchouk } else if (mResourceID != 0) { 82d2dc9838961f945c402e5d810bc715196240be6fAlex Sakhartchouk setTexture(SceneManager.loadCubemap(mResourceID , rs, res)); 83d2dc9838961f945c402e5d810bc715196240be6fAlex Sakhartchouk } 84e8bb420a687598be9801e7ff4a0d114fa72ac5bcAlex Sakhartchouk } 85e8bb420a687598be9801e7ff4a0d114fa72ac5bcAlex Sakhartchouk 86e8bb420a687598be9801e7ff4a0d114fa72ac5bcAlex Sakhartchouk ScriptField_Texture_s getRsData(boolean loadNow) { 87e8bb420a687598be9801e7ff4a0d114fa72ac5bcAlex Sakhartchouk if (mField != null) { 88e8bb420a687598be9801e7ff4a0d114fa72ac5bcAlex Sakhartchouk return mField; 894fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk } 904fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk 91e93db17a143ff560f92d94b68ce1e76f79db7902Alex Sakhartchouk RenderScriptGL rs = SceneManager.getRS(); 92e93db17a143ff560f92d94b68ce1e76f79db7902Alex Sakhartchouk Resources res = SceneManager.getRes(); 93e93db17a143ff560f92d94b68ce1e76f79db7902Alex Sakhartchouk if (rs == null || res == null) { 94e93db17a143ff560f92d94b68ce1e76f79db7902Alex Sakhartchouk return null; 95e93db17a143ff560f92d94b68ce1e76f79db7902Alex Sakhartchouk } 96e93db17a143ff560f92d94b68ce1e76f79db7902Alex Sakhartchouk 97e8bb420a687598be9801e7ff4a0d114fa72ac5bcAlex Sakhartchouk mField = new ScriptField_Texture_s(rs, 1); 98e8bb420a687598be9801e7ff4a0d114fa72ac5bcAlex Sakhartchouk 99e8bb420a687598be9801e7ff4a0d114fa72ac5bcAlex Sakhartchouk if (loadNow) { 100e8bb420a687598be9801e7ff4a0d114fa72ac5bcAlex Sakhartchouk load(); 101e8bb420a687598be9801e7ff4a0d114fa72ac5bcAlex Sakhartchouk } else { 102e8bb420a687598be9801e7ff4a0d114fa72ac5bcAlex Sakhartchouk mData.texture = SceneManager.getDefaultTexCube(); 103e8bb420a687598be9801e7ff4a0d114fa72ac5bcAlex Sakhartchouk new SingleImageLoaderTask().execute(this); 104e8bb420a687598be9801e7ff4a0d114fa72ac5bcAlex Sakhartchouk } 1054fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk 106e8bb420a687598be9801e7ff4a0d114fa72ac5bcAlex Sakhartchouk mField.set(mData, 0, true); 107e8bb420a687598be9801e7ff4a0d114fa72ac5bcAlex Sakhartchouk return mField; 1084fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk } 1094fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk} 1104fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk 1114fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk 1124fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk 1134fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk 1144fd35d8f49dbed174828da60b70c37e7a77a0d13Alex Sakhartchouk 115