1 /* 2 * Copyright (c) 2009-2010 jMonkeyEngine 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: 8 * 9 * * Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 12 * * Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 16 * * Neither the name of 'jMonkeyEngine' nor the names of its contributors 17 * may be used to endorse or promote products derived from this software 18 * without specific prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 22 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 27 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 28 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 29 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 30 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 */ 32 33 package jme3tools.converters.model.strip; 34 35 import java.util.Arrays; 36 37 38 class VertexCache { 39 40 int[] entries; 41 int numEntries; 42 43 public VertexCache() { 44 this(16); 45 } 46 47 public VertexCache(int size) { 48 numEntries = size; 49 entries = new int[numEntries]; 50 clear(); 51 } 52 53 public boolean inCache(int entry) { 54 for(int i = 0; i < numEntries; i++) 55 { 56 if(entries[i] == entry) 57 { 58 return true; 59 } 60 } 61 return false; 62 } 63 64 public int addEntry(int entry) { 65 int removed; 66 67 removed = entries[numEntries - 1]; 68 69 //push everything right one 70 for(int i = numEntries - 2; i >= 0; i--) 71 { 72 entries[i + 1] = entries[i]; 73 } 74 75 entries[0] = entry; 76 77 return removed; 78 } 79 80 public void clear() { 81 Arrays.fill(entries,-1); 82 } 83 84 public int at(int index) { 85 return entries[index]; 86 } 87 88 public void set(int index, int value) { 89 entries[index] = value; 90 } 91 92 public void copy(VertexCache inVcache) 93 { 94 for(int i = 0; i < numEntries; i++) 95 { 96 inVcache.set(i, entries[i]); 97 } 98 } 99 100 } 101