• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 /**
36  *
37  */
38 public class PrimitiveGroup {
39 
40     public static final int PT_LIST = 0;
41     public static final int PT_STRIP = 1;
42     public static final int PT_FAN = 2;
43 
44     public int type;
45     public int[] indices;
46     public int numIndices;
47 
PrimitiveGroup()48     public PrimitiveGroup() {
49         type = PT_STRIP;
50     }
51 
getTypeString()52     public String getTypeString() {
53         switch(type) {
54             case PT_LIST : return "list";
55             case PT_STRIP: return "strip";
56             case PT_FAN: return "fan";
57             default: return "????";
58         }
59     }
60 
toString()61     public String toString() {
62         return getTypeString() + " : " + numIndices;
63     }
64 
getFullInfo()65     public String getFullInfo() {
66         if ( type != PT_STRIP )
67             return toString();
68 
69         int[] stripLengths = new int[numIndices];
70 
71         int prev = -1;
72         int length = -1;
73         for ( int i =0; i < numIndices; i++) {
74             if (indices[i] == prev) {
75                 stripLengths[length]++;
76                 length = -1;
77                 prev = -1;
78             } else {
79                 prev = indices[i];
80                 length++;
81             }
82         }
83         stripLengths[length]++;
84 
85         StringBuffer sb = new StringBuffer();
86         sb.append("Strip:").append(numIndices).append("\n");
87         for ( int i =0; i < stripLengths.length; i++) {
88             if ( stripLengths[i] > 0) {
89                 sb.append(i).append("->").append(stripLengths[i]).append("\n");
90             }
91         }
92         return sb.toString();
93     }
94 
95     /**
96      * @return
97      */
getTrimmedIndices()98     public int[] getTrimmedIndices() {
99         if ( indices.length == numIndices )
100             return indices;
101         int[] nind = new int[numIndices];
102         System.arraycopy(indices,0,nind,0,numIndices);
103         return nind;
104     }
105 
106 }
107 
108