OSDN Git Service

2cac75744ef84bb848c4a2045896b030f42754d2
[mikutoga/TogaGem.git] / src / main / java / jp / sourceforge / mikutoga / vmd / model / ShadowMode.java
1 /*
2  * shadow mode
3  *
4  * License : The MIT License
5  * Copyright(c) 2011 MikuToga Partners
6  */
7
8 package jp.sourceforge.mikutoga.vmd.model;
9
10 /**
11  * セルフシャドウ描画モード。
12  */
13 public enum ShadowMode {
14
15     /**
16      * シャドウを描画しないモード。
17      */
18     NONE(0x00),
19
20     /**
21      * シャドウ描画の質がカメラからの距離の影響をあまり受けないモード。
22      * <p>※MMDのUIにおけるデフォルト。
23      */
24     MODE_1(0x01),
25
26     /**
27      * シャドウ描画の質をカメラからの距離に応じて劣化させることにより、
28      * カメラに近いオブジェクトのシャドウ描画の質を向上させるモード。
29      */
30     MODE_2(0x02),
31
32     ;
33
34
35     private static final int MASK_8 = 0xff;
36
37
38     private final byte code;
39
40
41     /**
42      * コンストラクタ。
43      * @param code 割り当て番号(byte)
44      */
45     private ShadowMode(byte code){
46         this.code = code;
47         return;
48     }
49
50     /**
51      * コンストラクタ。
52      * @param iVal 割り当て番号(int)
53      * ※上位24bitは捨てられる。
54      */
55     private ShadowMode(int iVal){
56         this((byte)(iVal & MASK_8));
57         return;
58     }
59
60
61     /**
62      * byte型値に符号化された時の値を返す。
63      * @return byte型値に符号化された時の値
64      */
65     public byte getEncodedByte(){
66         return this.code;
67     }
68
69     /**
70      * byte型値から描画モードを復号する。
71      * @param bVal byte型値
72      * @return 描画モード。未定義の値が与えられた場合はnull。
73      */
74     public static ShadowMode decode(byte bVal){
75         ShadowMode result = null;
76
77         if     (bVal == NONE  .code) result = NONE;
78         else if(bVal == MODE_1.code) result = MODE_1;
79         else if(bVal == MODE_2.code) result = MODE_2;
80
81         return result;
82     }
83
84     /**
85      * int型値から描画モードを復号する。
86      * <p>上位24bitは無視される。
87      * @param iVal int型値
88      * @return 描画モード。未定義の値が与えられた場合はnull。
89      */
90     public static ShadowMode decode(int iVal){
91         return decode((byte)(iVal & MASK_8));
92     }
93
94 }