refactor: change repo layout
This commit is contained in:
43
Assets/CodeGen/EnumsMigration/.gitignore
vendored
Normal file
43
Assets/CodeGen/EnumsMigration/.gitignore
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
# ===== Result =====
|
||||
dest/*
|
||||
!dest/*.gitkeep
|
||||
|
||||
# ===== ANTLR Output =====
|
||||
*.interp
|
||||
*.tokens
|
||||
|
||||
CKGeneralLexer*.java
|
||||
CKEnumsParser*.java
|
||||
CKDefinesParser*.java
|
||||
|
||||
# ===== Eclipse Java =====
|
||||
# Eclipse projects
|
||||
.classpath
|
||||
.project
|
||||
.settings/
|
||||
.metadata
|
||||
|
||||
# Compiled class file
|
||||
*.class
|
||||
|
||||
# Log file
|
||||
*.log
|
||||
|
||||
# BlueJ files
|
||||
*.ctxt
|
||||
|
||||
# Mobile Tools for Java (J2ME)
|
||||
.mtj.tmp/
|
||||
|
||||
# Package Files #
|
||||
*.jar
|
||||
*.war
|
||||
*.nar
|
||||
*.ear
|
||||
*.zip
|
||||
*.tar.gz
|
||||
*.rar
|
||||
|
||||
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
||||
hs_err_pid*
|
||||
replay_pid*
|
||||
6
Assets/CodeGen/EnumsMigration/CKDefinesParser.g4
Normal file
6
Assets/CodeGen/EnumsMigration/CKDefinesParser.g4
Normal file
@@ -0,0 +1,6 @@
|
||||
parser grammar CKDefinesParser;
|
||||
options { tokenVocab = CKGeneralLexer; }
|
||||
|
||||
prog: definePair+ ;
|
||||
|
||||
definePair: CKGENERAL_DEFINE CKGENERAL_ID (CKGENERAL_NUM | CKGENERAL_ID) ;
|
||||
14
Assets/CodeGen/EnumsMigration/CKEnumsParser.g4
Normal file
14
Assets/CodeGen/EnumsMigration/CKEnumsParser.g4
Normal file
@@ -0,0 +1,14 @@
|
||||
parser grammar CKEnumsParser;
|
||||
options { tokenVocab = CKGeneralLexer; }
|
||||
|
||||
prog: enumBody* ;
|
||||
|
||||
enumBody: CKGENERAL_TYPEDEF? CKGENERAL_ENUM CKGENERAL_ID CKGENERAL_LBRACKET
|
||||
entryPair+
|
||||
CKGENERAL_RBRACKET CKGENERAL_ID? CKGENERAL_SEMICOLON ;
|
||||
|
||||
entryPair: CKGENERAL_ID (CKGENERAL_EQUAL entryValue)? CKGENERAL_COMMA? ;
|
||||
|
||||
entryValue: CKGENERAL_NUM (CKGENERAL_LSHIFT CKGENERAL_NUM)? # entryDirectValue
|
||||
| CKGENERAL_ID (CKGENERAL_OR CKGENERAL_ID)* # entryRelativeValue
|
||||
;
|
||||
26
Assets/CodeGen/EnumsMigration/CKGeneralLexer.g4
Normal file
26
Assets/CodeGen/EnumsMigration/CKGeneralLexer.g4
Normal file
@@ -0,0 +1,26 @@
|
||||
lexer grammar CKGeneralLexer;
|
||||
|
||||
channels { COMMENTS, WHITESPACE }
|
||||
|
||||
// keywords
|
||||
CKGENERAL_TYPEDEF: 'typedef' ;
|
||||
CKGENERAL_DEFINE: '#define' ;
|
||||
CKGENERAL_ENUM: 'enum' ;
|
||||
// symbols
|
||||
CKGENERAL_LBRACKET: '{' ;
|
||||
CKGENERAL_RBRACKET: '}' ;
|
||||
CKGENERAL_EQUAL: '=';
|
||||
CKGENERAL_SEMICOLON: ';' ;
|
||||
CKGENERAL_LSHIFT: '<<' ;
|
||||
CKGENERAL_OR: '|' ;
|
||||
CKGENERAL_COMMA: ',' ;
|
||||
|
||||
// identifider and number
|
||||
CKGENERAL_ID: [_a-zA-Z][_a-zA-Z0-9]* ;
|
||||
CKGENERAL_NUM: (('0'[xX]) | '-')? [0-9a-fA-F]+ [uUlL]* ;
|
||||
|
||||
// comments
|
||||
CKGENERAL_LINE_COMMENT: '//' ~[\r\n]* -> channel(COMMENTS);
|
||||
CKGENERAL_BLOCK_COMMENT: '/*' .*? '*/' -> channel(COMMENTS);
|
||||
// whitespace
|
||||
CKGENERAL_WS: [ \t\r\n]+ -> channel(WHITESPACE);
|
||||
168
Assets/CodeGen/EnumsMigration/CSharpWriter.java
Normal file
168
Assets/CodeGen/EnumsMigration/CSharpWriter.java
Normal file
@@ -0,0 +1,168 @@
|
||||
import java.io.OutputStreamWriter;
|
||||
|
||||
/**
|
||||
* Write enum declarations and accessible value into CSharp format.
|
||||
*/
|
||||
public class CSharpWriter {
|
||||
|
||||
// =========== C# Enum Declaration Writer ===========
|
||||
|
||||
/**
|
||||
* Get corredponding C# underlying type of given enum.
|
||||
* <p>
|
||||
* This is C# specific function.
|
||||
*
|
||||
* @param canUnsigned The parameter stored in Enum_t that indicate whether this
|
||||
* enum can use unsigned int as its underlying type.
|
||||
* @return The string form of its underlying type.
|
||||
*/
|
||||
private static String getEnumUnderlyingType(boolean canUnsigned) {
|
||||
return canUnsigned ? "uint" : "int";
|
||||
}
|
||||
|
||||
/**
|
||||
* Internal real enum declaration writer.
|
||||
*
|
||||
* @param writer {@linkplain java.io.OutputStreamWriter} instance for writing.
|
||||
* @param prog {@linkplain EnumsHelper.EnumCollection_t} instance for writing.
|
||||
* @throws Exception
|
||||
*/
|
||||
private static void internalWriteEnums(OutputStreamWriter writer, EnumsHelper.EnumCollection_t prog)
|
||||
throws Exception {
|
||||
IndentHelper indent = new IndentHelper(writer, CommonHelper.LangType.CSharp);
|
||||
for (EnumsHelper.Enum_t enum_t : prog.mEnums) {
|
||||
// write enum comment
|
||||
indent.briefComment(enum_t.mEnumComment);
|
||||
|
||||
// write enum start
|
||||
// write flasg attribute if it is
|
||||
if (enum_t.mUseFlags) {
|
||||
indent.puts("[Flags]");
|
||||
}
|
||||
indent.printf("public enum %s : %s {", enum_t.mEnumName, getEnumUnderlyingType(enum_t.mCanUnsigned));
|
||||
indent.inc();
|
||||
|
||||
// write enum entries
|
||||
for (EnumsHelper.EnumEntry_t enumEntry_t : enum_t.mEntries) {
|
||||
// write entry self
|
||||
if (enumEntry_t.mEntryValue == null) {
|
||||
indent.printf("%s,", enumEntry_t.mEntryName);
|
||||
} else {
|
||||
indent.printf("%s = %s,", enumEntry_t.mEntryName, enumEntry_t.mEntryValue);
|
||||
}
|
||||
|
||||
// write entry comment after member
|
||||
indent.afterMemberComment(enumEntry_t.mEntryComment);
|
||||
}
|
||||
|
||||
// write enum tail
|
||||
indent.dec();
|
||||
indent.puts("}");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Write an enum declaration collection into given file.
|
||||
* <p>
|
||||
* Actually this is a wrapper of internal enum declaration collection writer.
|
||||
*
|
||||
* @param filename The name of written file.
|
||||
* @param prog {@linkplain EnumsHelper.EnumCollection_t} instance for
|
||||
* writing.
|
||||
* @throws Exception
|
||||
*/
|
||||
public static void writeEnums(String filename, EnumsHelper.EnumCollection_t prog) throws Exception {
|
||||
// open file and write
|
||||
OutputStreamWriter fs = CommonHelper.openOutputFile(filename);
|
||||
internalWriteEnums(fs, prog);
|
||||
fs.close();
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a single enum declaration into given file.
|
||||
* <p>
|
||||
* Actually this is a wrapper of internal enum declaration collection writer.
|
||||
*
|
||||
* @param filename The name of written file.
|
||||
* @param _enum {@linkplain EnumsHelper.Enum_t} instance for writing.
|
||||
* @throws Exception
|
||||
*/
|
||||
public static void writeEnum(String filename, EnumsHelper.Enum_t _enum) throws Exception {
|
||||
// create collection from single enum
|
||||
EnumsHelper.EnumCollection_t col = new EnumsHelper.EnumCollection_t();
|
||||
col.mEnums.add(_enum);
|
||||
// open file and write
|
||||
OutputStreamWriter fs = CommonHelper.openOutputFile(filename);
|
||||
internalWriteEnums(fs, col);
|
||||
fs.close();
|
||||
}
|
||||
|
||||
// =========== C# Enum Accessible Value Writer ===========
|
||||
|
||||
/**
|
||||
* Internal real enum accessible value writer.
|
||||
*
|
||||
* @param writer {@linkplain java.io.OutputStreamWriter} instance for writing.
|
||||
* @param prog {@linkplain EnumsHelper.EnumCollection_t} instance for writing.
|
||||
* @throws Exception
|
||||
*/
|
||||
private static void internalWriteAccVals(OutputStreamWriter writer, EnumsHelper.EnumCollection_t prog)
|
||||
throws Exception {
|
||||
IndentHelper indent = new IndentHelper(writer, CommonHelper.LangType.CSharp);
|
||||
// write enum collections
|
||||
for (EnumsHelper.Enum_t enum_t : prog.mEnums) {
|
||||
// write enum desc header
|
||||
indent.printf(
|
||||
"public static readonly System.Collections.Generic.Dictionary<%s, string> %s = new System.Collections.Generic.Dictionary<%s, string>() {",
|
||||
enum_t.mEnumName, enum_t.mEnumName, enum_t.mEnumName);
|
||||
indent.inc();
|
||||
|
||||
// write enum desc entries
|
||||
for (EnumsHelper.EnumEntry_t enumEntry_t : enum_t.mEntries) {
|
||||
indent.printf("{ %s.%s, \"%s\" },", enum_t.mEnumName, enumEntry_t.mEntryName, enumEntry_t.mEntryName);
|
||||
}
|
||||
|
||||
// write enum tail
|
||||
indent.dec();
|
||||
indent.puts("};");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Write an enum accessible value collection into given file.
|
||||
* <p>
|
||||
* Actually this is a wrapper of internal enum accessible value collection
|
||||
* writer.
|
||||
*
|
||||
* @param filename The name of written file.
|
||||
* @param prog {@linkplain EnumsHelper.EnumCollection_t} instance for
|
||||
* writing.
|
||||
* @throws Exception
|
||||
*/
|
||||
public static void writeAccVals(String filename, EnumsHelper.EnumCollection_t prog) throws Exception {
|
||||
// open file and write
|
||||
OutputStreamWriter fs = CommonHelper.openOutputFile(filename);
|
||||
internalWriteAccVals(fs, prog);
|
||||
fs.close();
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a single enum accessible value into given file.
|
||||
* <p>
|
||||
* Actually this is a wrapper of internal enum accessible value collection
|
||||
* writer.
|
||||
*
|
||||
* @param filename The name of written file.
|
||||
* @param _enum {@linkplain EnumsHelper.Enum_t} instance for writing.
|
||||
* @throws Exception
|
||||
*/
|
||||
public static void writeAccVal(String filename, EnumsHelper.Enum_t _enum) throws Exception {
|
||||
// create a collection with single enum.
|
||||
EnumsHelper.EnumCollection_t col = new EnumsHelper.EnumCollection_t();
|
||||
col.mEnums.add(_enum);
|
||||
// open file and write
|
||||
OutputStreamWriter fs = CommonHelper.openOutputFile(filename);
|
||||
internalWriteAccVals(fs, col);
|
||||
fs.close();
|
||||
}
|
||||
}
|
||||
120
Assets/CodeGen/EnumsMigration/ClassidWalker.java
Normal file
120
Assets/CodeGen/EnumsMigration/ClassidWalker.java
Normal file
@@ -0,0 +1,120 @@
|
||||
|
||||
import java.util.Stack;
|
||||
|
||||
import org.antlr.v4.runtime.*;
|
||||
import org.antlr.v4.runtime.tree.*;
|
||||
|
||||
/**
|
||||
* The specialized walker for collecting CK_CLASSID and its inherit
|
||||
* relationship.
|
||||
*/
|
||||
public class ClassidWalker extends CKDefinesParserBaseListener {
|
||||
|
||||
public ClassidWalker(BufferedTokenStream tokenStream) {
|
||||
mTokenStream = tokenStream;
|
||||
mResult = null;
|
||||
|
||||
mLevelStack = null;
|
||||
mCurrentEnum = null;
|
||||
mCurrentEntry = null;
|
||||
}
|
||||
|
||||
public EnumsHelper.Enum_t getEnum() {
|
||||
return mResult;
|
||||
}
|
||||
|
||||
private int getClassidLevel(Token defineHead) {
|
||||
Token ws = CommonHelper.getPreChannelToken(mTokenStream, defineHead, CKGeneralLexer.WHITESPACE);
|
||||
if (ws == null)
|
||||
return 0;
|
||||
|
||||
// reverse finding how many tab used.
|
||||
int counter = 0;
|
||||
char[] wstxt = ws.getText().toCharArray();
|
||||
for (int i = wstxt.length - 1; i >= 0; i--) {
|
||||
if (wstxt[i] == '\t') {
|
||||
counter++;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return counter;
|
||||
}
|
||||
|
||||
private void safePop() {
|
||||
if (mLevelStack.size() != 0)
|
||||
mLevelStack.pop();
|
||||
}
|
||||
|
||||
private void safePopTimes(int times) {
|
||||
for (int i = 0; i < times; i++) {
|
||||
if (mLevelStack.size() != 0)
|
||||
mLevelStack.pop();
|
||||
}
|
||||
}
|
||||
|
||||
private BufferedTokenStream mTokenStream;
|
||||
private EnumsHelper.Enum_t mResult;
|
||||
|
||||
private int mLevel;
|
||||
private Stack<EnumsHelper.EnumEntryWithHierarchy_t> mLevelStack;
|
||||
private EnumsHelper.Enum_t mCurrentEnum;
|
||||
private EnumsHelper.EnumEntryWithHierarchy_t mCurrentEntry;
|
||||
|
||||
@Override
|
||||
public void enterProg(CKDefinesParser.ProgContext ctx) {
|
||||
mLevel = 0;
|
||||
mLevelStack = new Stack<EnumsHelper.EnumEntryWithHierarchy_t>();
|
||||
mCurrentEnum = new EnumsHelper.Enum_t();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exitProg(CKDefinesParser.ProgContext ctx) {
|
||||
mLevel = 0;
|
||||
mLevelStack = null;
|
||||
|
||||
// classid is signed int and do not have flags feature.
|
||||
mCurrentEnum.mCanUnsigned = false;
|
||||
mCurrentEnum.mUseFlags = false;
|
||||
mResult = mCurrentEnum;
|
||||
mCurrentEnum = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enterDefinePair(CKDefinesParser.DefinePairContext ctx) {
|
||||
mCurrentEntry = new EnumsHelper.EnumEntryWithHierarchy_t();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exitDefinePair(CKDefinesParser.DefinePairContext ctx) {
|
||||
// fill entry info
|
||||
mCurrentEntry.mEntryName = ctx.CKGENERAL_ID(0).getText();
|
||||
mCurrentEntry.mEntryValue = ctx.CKGENERAL_NUM().getText();
|
||||
|
||||
// fill entry level info
|
||||
int this_level = getClassidLevel(ctx.getStart());
|
||||
if (this_level > mLevel) {
|
||||
// level up
|
||||
mLevel++;
|
||||
|
||||
mLevelStack.push(mCurrentEntry);
|
||||
mCurrentEntry.mHierarchy.addAll(mLevelStack);
|
||||
} else if (this_level == mLevel) {
|
||||
safePop();
|
||||
mLevelStack.push(mCurrentEntry);
|
||||
mCurrentEntry.mHierarchy.addAll(mLevelStack);
|
||||
} else if (this_level < mLevel) {
|
||||
// level down
|
||||
safePopTimes(mLevel - this_level + 1);
|
||||
mLevel = this_level;
|
||||
|
||||
mLevelStack.push(mCurrentEntry);
|
||||
mCurrentEntry.mHierarchy.addAll(mLevelStack);
|
||||
}
|
||||
|
||||
// move to list
|
||||
mCurrentEnum.mEntries.add(mCurrentEntry);
|
||||
mCurrentEntry = null;
|
||||
}
|
||||
|
||||
}
|
||||
51
Assets/CodeGen/EnumsMigration/CommentsFinder.java
Normal file
51
Assets/CodeGen/EnumsMigration/CommentsFinder.java
Normal file
@@ -0,0 +1,51 @@
|
||||
import java.util.List;
|
||||
|
||||
import org.antlr.v4.runtime.*;
|
||||
|
||||
public class CommentsFinder {
|
||||
|
||||
enum CommentsPosition {
|
||||
Unknown, Precomment, Postcomment
|
||||
}
|
||||
|
||||
public CommentsFinder(BufferedTokenStream tokenStream) {
|
||||
mTokenStream = tokenStream;
|
||||
mCommentsPos = CommentsPosition.Unknown;
|
||||
}
|
||||
|
||||
private BufferedTokenStream mTokenStream;
|
||||
private CommentsPosition mCommentsPos;
|
||||
|
||||
public String getComment(Token preToken, Token postToken) {
|
||||
switch (mCommentsPos) {
|
||||
case Unknown: {
|
||||
// if we don't know where is our token,
|
||||
// we should assume it is from precomment to postcomment
|
||||
// and check it.
|
||||
List<Token> precomment = CommonHelper.getPreChannelTokens(mTokenStream, preToken, CKGeneralLexer.COMMENTS);
|
||||
if (precomment != null) {
|
||||
mCommentsPos = CommentsPosition.Precomment;
|
||||
return CommonHelper.cutComments(precomment);
|
||||
}
|
||||
|
||||
List<Token> postcomment = CommonHelper.getPostChannelTokens(mTokenStream, postToken, CKGeneralLexer.COMMENTS);
|
||||
if (postcomment != null) {
|
||||
mCommentsPos = CommentsPosition.Postcomment;
|
||||
return CommonHelper.cutComments(postcomment);
|
||||
}
|
||||
|
||||
// really do not have comment, return empty and keep comment pos
|
||||
return null;
|
||||
}
|
||||
case Precomment: {
|
||||
return CommonHelper.cutComments(CommonHelper.getPreChannelTokens(mTokenStream, preToken, CKGeneralLexer.COMMENTS));
|
||||
}
|
||||
case Postcomment: {
|
||||
return CommonHelper.cutComments(CommonHelper.getPostChannelTokens(mTokenStream, postToken, CKGeneralLexer.COMMENTS));
|
||||
}
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
237
Assets/CodeGen/EnumsMigration/CommonHelper.java
Normal file
237
Assets/CodeGen/EnumsMigration/CommonHelper.java
Normal file
@@ -0,0 +1,237 @@
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.antlr.v4.runtime.*;
|
||||
|
||||
public class CommonHelper {
|
||||
|
||||
// =========== Token Finder & Comments Processing ===========
|
||||
|
||||
public static Token getPreChannelToken(BufferedTokenStream stream, Token token, int channel) {
|
||||
List<Token> tokens = stream.getHiddenTokensToLeft(token.getTokenIndex(), channel);
|
||||
if (tokens == null)
|
||||
return null;
|
||||
return tokens.get(0);
|
||||
}
|
||||
|
||||
public static Token getPostChannelToken(BufferedTokenStream stream, Token token, int channel) {
|
||||
List<Token> tokens = stream.getHiddenTokensToRight(token.getTokenIndex(), channel);
|
||||
if (tokens == null)
|
||||
return null;
|
||||
return tokens.get(0);
|
||||
}
|
||||
|
||||
public static List<Token> getPreChannelTokens(BufferedTokenStream stream, Token token, int channel) {
|
||||
return stream.getHiddenTokensToLeft(token.getTokenIndex(), channel);
|
||||
}
|
||||
|
||||
public static List<Token> getPostChannelTokens(BufferedTokenStream stream, Token token, int channel) {
|
||||
return stream.getHiddenTokensToRight(token.getTokenIndex(), channel);
|
||||
}
|
||||
|
||||
/**
|
||||
* Cut the head and tail of comment
|
||||
*
|
||||
* @param comment The comment need to be cut.
|
||||
* @return The cut comment.
|
||||
*/
|
||||
public static String cutComment(Token comment) {
|
||||
if (comment == null)
|
||||
return null;
|
||||
|
||||
switch (comment.getType()) {
|
||||
case CKGeneralLexer.CKGENERAL_LINE_COMMENT: {
|
||||
return removeStars(comment.getText().substring(2));
|
||||
}
|
||||
case CKGeneralLexer.CKGENERAL_BLOCK_COMMENT: {
|
||||
String cache = comment.getText();
|
||||
return removeStars(cache.substring(2, cache.length() - 4));
|
||||
}
|
||||
default:
|
||||
return comment.getText();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Cut multiple comments.
|
||||
* <p>
|
||||
* Each comment will be cut the head and tail first. And strip all whitespace.
|
||||
* Then join together.
|
||||
*
|
||||
* @param tokens Multiple comments.
|
||||
* @return The joined comment.
|
||||
*/
|
||||
public static String cutComments(List<Token> tokens) {
|
||||
if (tokens == null)
|
||||
return null;
|
||||
|
||||
return tokens.stream().map(value -> {
|
||||
String text = cutComment(value).strip();
|
||||
return text + " ";
|
||||
}).collect(Collectors.joining(""));
|
||||
}
|
||||
|
||||
// =========== Number Operations ===========
|
||||
|
||||
/**
|
||||
* Check whether Antlr captured CKGENERAL_NUM is a negative number.
|
||||
*
|
||||
* @param numstr The captured number.
|
||||
* @return true if it is negative number.
|
||||
*/
|
||||
public static boolean isNegativeNumber(String numstr) {
|
||||
return numstr.startsWith("-");
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether Altlr captured CKGENERAL_NUM is a hex number.
|
||||
*
|
||||
* @param numstr The captured number.
|
||||
* @return true if it is hex number.
|
||||
*/
|
||||
public static boolean isHexNumber(String numstr) {
|
||||
return numstr.startsWith("0x") || numstr.startsWith("0X");
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert accepted string into Python cupported format.
|
||||
*
|
||||
* It actually just remove trail "UL".
|
||||
*
|
||||
* @param numstr The captured number.
|
||||
* @return The Python style number string.
|
||||
*/
|
||||
public static String convertToPythonNumber(String numstr) {
|
||||
return numstr.replaceFirst("[ulUL]+$", "");
|
||||
}
|
||||
|
||||
// =========== Parts ===========
|
||||
|
||||
enum CKParts {
|
||||
CK2, VxMath
|
||||
}
|
||||
|
||||
enum LangType {
|
||||
Cpp, Python, CSharp
|
||||
}
|
||||
|
||||
public static String getCKPartsNamespace(CKParts parts) {
|
||||
switch (parts) {
|
||||
case CK2:
|
||||
return "CK2";
|
||||
case VxMath:
|
||||
return "VxMath";
|
||||
default:
|
||||
throw new IllegalArgumentException("Unexpected value: " + parts);
|
||||
}
|
||||
}
|
||||
|
||||
// =========== File Operations ===========
|
||||
|
||||
public static class InputFilePair {
|
||||
public CharStream mAntlrStream;
|
||||
public FileInputStream mUnderlyingStream;
|
||||
}
|
||||
|
||||
public static InputFilePair openInputFile(String filename) throws Exception {
|
||||
InputFilePair pair = new InputFilePair();
|
||||
pair.mUnderlyingStream = new FileInputStream(filename);
|
||||
pair.mAntlrStream = CharStreams.fromStream(pair.mUnderlyingStream, StandardCharsets.UTF_8);
|
||||
return pair;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get output file for writing.
|
||||
*
|
||||
* @param filename The name of file opening.
|
||||
* @return An OutputStreamWriter.
|
||||
* @throws Exception
|
||||
*/
|
||||
public static OutputStreamWriter openOutputFile(String filename) throws Exception {
|
||||
FileOutputStream fs = new FileOutputStream(filename);
|
||||
return new OutputStreamWriter(fs, StandardCharsets.UTF_8);
|
||||
}
|
||||
|
||||
// =========== String Process ===========
|
||||
|
||||
/**
|
||||
* Escape String
|
||||
*
|
||||
* Escape all characters which are invalid in string quote.
|
||||
*
|
||||
* @param strl The string need to be escaped.
|
||||
* @return The escaped string.
|
||||
* @see removeEol
|
||||
*/
|
||||
public static String escapeString(String strl) {
|
||||
return strl.replace("\\", "\\\\").replace("\t", "\\t").replace("\b", "\\b").replace("\n", "\\n")
|
||||
.replace("\r", "\\r").replace("\f", "\\f").replace("\"", "\\\"");
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove all EOL (End of Line) characters.
|
||||
*
|
||||
* @param strl The string need to be processed.
|
||||
* @return The string eliminated all EOL.
|
||||
* @see escapeString
|
||||
*/
|
||||
public static String removeEol(String strl) {
|
||||
return strl.replace("\n", "").replace("\r", "");
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove redundent star '*' (at least 5 continuous star chars)
|
||||
*
|
||||
* @param cmt The string provided.
|
||||
* @return The string processed.
|
||||
*/
|
||||
public static String removeStars(String cmt) {
|
||||
// only remove at least 5 continuous star chars.
|
||||
return cmt.replaceAll("\\*{5,}", "");
|
||||
}
|
||||
|
||||
/**
|
||||
* Get indent char by style
|
||||
*
|
||||
* @param use_tab Whether indent use Tab, not Space.
|
||||
* @return The indent chars
|
||||
*/
|
||||
public static String getIndentString(boolean use_tab) {
|
||||
if (use_tab)
|
||||
return "\t";
|
||||
else
|
||||
return " ";
|
||||
}
|
||||
|
||||
/**
|
||||
* Re-indent a block of string
|
||||
*
|
||||
* This function will first split block string by line. Then remove all indent
|
||||
* (strip Tab and Space). At last, re-indent and join each line
|
||||
*
|
||||
* @param block_str The string provided.
|
||||
* @param use_tab Use Tab, not Space as indent chars.
|
||||
* @param indent_level The level of indent, started by 0.
|
||||
* @return The re-indent string
|
||||
*/
|
||||
public static String reindentBlockString(String block_str, boolean use_tab, int indent_level) {
|
||||
// pre-create indent string
|
||||
String indentChars = getIndentString(use_tab);
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0; i < indent_level; ++i) {
|
||||
sb.append(indentChars);
|
||||
}
|
||||
String indents = sb.toString();
|
||||
|
||||
// split line
|
||||
return block_str.lines().map((String line) -> {
|
||||
// strip space and tab, then re-indent it.
|
||||
return indents + line.trim();
|
||||
}).collect(Collectors.joining(System.lineSeparator())); // then join with new line breaker and return.
|
||||
}
|
||||
|
||||
}
|
||||
273
Assets/CodeGen/EnumsMigration/CppWriter.java
Normal file
273
Assets/CodeGen/EnumsMigration/CppWriter.java
Normal file
@@ -0,0 +1,273 @@
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* Write enum declarations and accessible value into C++ format.
|
||||
*/
|
||||
public class CppWriter {
|
||||
|
||||
// =========== C++ Enum Declaration Writer ===========
|
||||
|
||||
/**
|
||||
* Get corredponding C++ underlying type of given enum.
|
||||
* <p>
|
||||
* This is C++ specific function.
|
||||
*
|
||||
* @param canUnsigned The parameter stored in Enum_t that indicate whether this
|
||||
* enum can use unsigned int as its underlying type.
|
||||
* @return The string form of its underlying type.
|
||||
*/
|
||||
private static String getEnumUnderlyingType(boolean canUnsigned) {
|
||||
return canUnsigned ? "CKDWORD" : "CKINT";
|
||||
}
|
||||
|
||||
/**
|
||||
* Internal real enum declarations writer.
|
||||
*
|
||||
* @param writer {@linkplain java.io.OutputStreamWriter} instance for writing.
|
||||
* @param prog {@linkplain EnumsHelper.EnumCollection_t} instance for writing.
|
||||
* @throws Exception
|
||||
*/
|
||||
private static void internalWriteEnums(OutputStreamWriter writer, EnumsHelper.EnumCollection_t prog)
|
||||
throws Exception {
|
||||
IndentHelper indent = new IndentHelper(writer, CommonHelper.LangType.Cpp);
|
||||
for (EnumsHelper.Enum_t enum_t : prog.mEnums) {
|
||||
// write enum comment
|
||||
indent.briefComment(enum_t.mEnumComment);
|
||||
|
||||
// write enum start
|
||||
indent.printf("enum class %s : %s {", enum_t.mEnumName, getEnumUnderlyingType(enum_t.mCanUnsigned));
|
||||
indent.inc();
|
||||
|
||||
// write enum entries
|
||||
for (EnumsHelper.EnumEntry_t enumEntry_t : enum_t.mEntries) {
|
||||
// write entry self
|
||||
if (enumEntry_t.mEntryValue == null) {
|
||||
indent.printf("%s,", enumEntry_t.mEntryName);
|
||||
} else {
|
||||
indent.printf("%s = %s,", enumEntry_t.mEntryName, enumEntry_t.mEntryValue);
|
||||
}
|
||||
|
||||
// write entry comment after member
|
||||
indent.afterMemberComment(enumEntry_t.mEntryComment);
|
||||
}
|
||||
|
||||
// write enum tail
|
||||
indent.dec();
|
||||
indent.puts("};");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Write an enum collection into given file.
|
||||
* <p>
|
||||
* Actually this is a wrapper of internal enum collection writer.
|
||||
*
|
||||
* @param filename The name of written file.
|
||||
* @param prog {@linkplain EnumsHelper.EnumCollection_t} instance for
|
||||
* writing.
|
||||
* @throws Exception
|
||||
*/
|
||||
public static void writeEnums(String filename, EnumsHelper.EnumCollection_t prog) throws Exception {
|
||||
// open file and write
|
||||
OutputStreamWriter fs = CommonHelper.openOutputFile(filename);
|
||||
internalWriteEnums(fs, prog);
|
||||
fs.close();
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a single enum into given file.
|
||||
* <p>
|
||||
* Actually this is a wrapper of internal enum collection writer.
|
||||
*
|
||||
* @param filename The name of written file.
|
||||
* @param _enum {@linkplain EnumsHelper.Enum_t} instance for writing.
|
||||
* @throws Exception
|
||||
*/
|
||||
public static void writeEnum(String filename, EnumsHelper.Enum_t _enum) throws Exception {
|
||||
// create an collection from single enum declaration
|
||||
// for suit the argument requirement of real writer.
|
||||
EnumsHelper.EnumCollection_t col = new EnumsHelper.EnumCollection_t();
|
||||
col.mEnums.add(_enum);
|
||||
// open file and write
|
||||
OutputStreamWriter fs = CommonHelper.openOutputFile(filename);
|
||||
internalWriteEnums(fs, col);
|
||||
fs.close();
|
||||
}
|
||||
|
||||
// =========== C++ Enum Accessible Value Writer ===========
|
||||
|
||||
/**
|
||||
* Internal real enum collection accessible value writer.
|
||||
*
|
||||
* @param writer {@linkplain java.io.OutputStreamWriter} instance for writing.
|
||||
* @param prog {@linkplain EnumsHelper.EnumCollection_t} instance for writing.
|
||||
* @param parts The part of these enum declarations. It will indicate the
|
||||
* namespace where find given enum collection.
|
||||
* @throws Exception
|
||||
*/
|
||||
private static void internalWriteAccVals(OutputStreamWriter writer, EnumsHelper.EnumCollection_t prog,
|
||||
CommonHelper.CKParts parts) throws Exception {
|
||||
IndentHelper indent = new IndentHelper(writer, CommonHelper.LangType.Cpp);
|
||||
|
||||
// write type defination (just to let user know what the type is)
|
||||
indent.puts("// struct GeneralReflection { const char8_t* mName; };");
|
||||
indent.puts("// template<typename _Ty, std::enable_if_t<std::is_enum_v<_Ty>, int> = 0>");
|
||||
indent.puts("// using GeneralReflectionArray = std::vector<std::pair<_Ty, GeneralReflection>>;");
|
||||
|
||||
indent.puts("");
|
||||
indent.puts("");
|
||||
indent.puts("");
|
||||
|
||||
// write declarations
|
||||
for (EnumsHelper.Enum_t enum_t : prog.mEnums) {
|
||||
indent.printf("extern const GeneralReflectionArray<LibCmo::%s::%s> %s;",
|
||||
CommonHelper.getCKPartsNamespace(parts), enum_t.mEnumName, enum_t.mEnumName);
|
||||
}
|
||||
|
||||
indent.puts("");
|
||||
indent.puts("");
|
||||
indent.puts("");
|
||||
|
||||
// write implements
|
||||
for (EnumsHelper.Enum_t enum_t : prog.mEnums) {
|
||||
// write enum desc header
|
||||
indent.printf("const GeneralReflectionArray<LibCmo::%s::%s> %s {", CommonHelper.getCKPartsNamespace(parts),
|
||||
enum_t.mEnumName, enum_t.mEnumName);
|
||||
indent.inc();
|
||||
|
||||
// write enum desc entries
|
||||
for (EnumsHelper.EnumEntry_t enumEntry_t : enum_t.mEntries) {
|
||||
indent.printf("{ LibCmo::%s::%s::%s, { u8\"%s\" } },", CommonHelper.getCKPartsNamespace(parts),
|
||||
enum_t.mEnumName, enumEntry_t.mEntryName, enumEntry_t.mEntryName);
|
||||
}
|
||||
|
||||
// write enum tail
|
||||
indent.dec();
|
||||
indent.puts("};");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Write an enum collection accessible value into given file.
|
||||
* <p>
|
||||
* Actually this is a wrapper of internal enum collection accessible value
|
||||
* writer.
|
||||
*
|
||||
* @param filename The name of written file.
|
||||
* @param prog {@linkplain EnumsHelper.EnumCollection_t} instance for
|
||||
* writing.
|
||||
* @param parts The part of these enum declarations.
|
||||
* @throws Exception
|
||||
*/
|
||||
public static void writeAccVals(String filename, EnumsHelper.EnumCollection_t prog, CommonHelper.CKParts parts)
|
||||
throws Exception {
|
||||
// open file and write
|
||||
OutputStreamWriter fs = CommonHelper.openOutputFile(filename);
|
||||
internalWriteAccVals(fs, prog, parts);
|
||||
fs.close();
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a single enum accessible value into given file.
|
||||
* <p>
|
||||
* Actually this is a wrapper of internal enum collection accessible value
|
||||
* writer.
|
||||
*
|
||||
* @param filename The name of written file.
|
||||
* @param _enum {@linkplain EnumsHelper.Enum_t} instance for writing.
|
||||
* @param parts The part of these enum declarations.
|
||||
* @throws Exception
|
||||
*/
|
||||
public static void writeAccVal(String filename, EnumsHelper.Enum_t _enum, CommonHelper.CKParts parts)
|
||||
throws Exception {
|
||||
// create a enum collection to fulfill the requirement of internal writer.
|
||||
EnumsHelper.EnumCollection_t col = new EnumsHelper.EnumCollection_t();
|
||||
col.mEnums.add(_enum);
|
||||
// open file and write
|
||||
OutputStreamWriter fs = CommonHelper.openOutputFile(filename);
|
||||
internalWriteAccVals(fs, col, parts);
|
||||
fs.close();
|
||||
}
|
||||
|
||||
// =========== Specialized C++ Enum Accessible Value Writer ===========
|
||||
// Only accessible value part of CERROR and CK_CLASSID need to be specialized.
|
||||
// The enum self do not need special treat. Just write them normally.
|
||||
|
||||
/**
|
||||
* Specialized CKERROR accessible value writer.
|
||||
* <p>
|
||||
* The declaration of CKERROR do not need special treat. It is okey to use
|
||||
* common writer.
|
||||
*
|
||||
* @param filename The name of written file.
|
||||
* @param errors The {@linkplain EnumsHelper.Enum_t} instance storing CKERROR.
|
||||
* @throws Exception
|
||||
*/
|
||||
public static void writeCkErrorAccVal(String filename, EnumsHelper.Enum_t errors) throws Exception {
|
||||
OutputStreamWriter writer = CommonHelper.openOutputFile(filename);
|
||||
IndentHelper indent = new IndentHelper(writer, CommonHelper.LangType.Cpp);
|
||||
|
||||
// write type defination (just to let user know what the type is)
|
||||
indent.puts("// struct CkErrorReflection { const char8_t* mName; const char8_t* mDescription; };");
|
||||
indent.puts("// using CkErrorReflectionArray = std::vector<std::pair<LibCmo::CK2::CKERROR, CkErrorReflection>>;");
|
||||
|
||||
indent.puts("");
|
||||
indent.puts("");
|
||||
indent.puts("");
|
||||
|
||||
// write implementation
|
||||
indent.puts("const CkErrorReflectionArray CKERROR {");
|
||||
indent.inc();
|
||||
for (EnumsHelper.EnumEntry_t entry : errors.mEntries) {
|
||||
String comment = CommonHelper.escapeString(entry.mEntryComment);
|
||||
if (comment == null)
|
||||
comment = "";
|
||||
|
||||
indent.printf("{ LibCmo::CK2::CKERROR::%s, { u8\"%s\", u8\"%s\" } },", entry.mEntryName, entry.mEntryName,
|
||||
comment);
|
||||
}
|
||||
indent.dec();
|
||||
indent.puts("};");
|
||||
|
||||
writer.close();
|
||||
}
|
||||
|
||||
/**
|
||||
* Specialized CK_CLASSID accessible value writer.
|
||||
* <p>
|
||||
* The declaration of CK_CLASSID do not need special treat. It is okey to use
|
||||
* common writer.
|
||||
*
|
||||
* @param filename The name of written file.
|
||||
* @param classids The {@linkplain EnumsHelper.Enum_t} instance storing
|
||||
* CK_CLASSID.
|
||||
* @throws Exception
|
||||
*/
|
||||
public static void writeCkClassidAccVal(String filename, EnumsHelper.Enum_t classids) throws Exception {
|
||||
OutputStreamWriter writer = CommonHelper.openOutputFile(filename);
|
||||
IndentHelper indent = new IndentHelper(writer, CommonHelper.LangType.Cpp);
|
||||
|
||||
// write type defination (just to let user know what the type is)
|
||||
indent.puts("// struct CkClassidReflection { std::vector<const char8_t*> mHierarchy; };");
|
||||
indent.puts("// using CkClassidReflectionArray = std::vector<std::pair<LibCmo::CK2::CK_CLASSID, CkClassidReflection>>;");
|
||||
|
||||
indent.puts("");
|
||||
indent.puts("");
|
||||
indent.puts("");
|
||||
|
||||
indent.puts("const CkClassidReflectionArray CK_CLASSID {");
|
||||
indent.inc();
|
||||
for (EnumsHelper.EnumEntry_t entry : classids.mEntries) {
|
||||
EnumsHelper.EnumEntryWithHierarchy_t specialized = (EnumsHelper.EnumEntryWithHierarchy_t) entry;
|
||||
|
||||
String hierarchy = specialized.mHierarchy.stream().map(value -> value.mEntryName)
|
||||
.collect(Collectors.joining("\", u8\""));
|
||||
indent.printf("{ LibCmo::CK2::CK_CLASSID::%s, { { u8\"%s\" } } },", entry.mEntryName, hierarchy);
|
||||
}
|
||||
indent.dec();
|
||||
indent.puts("};");
|
||||
|
||||
writer.close();
|
||||
}
|
||||
}
|
||||
73
Assets/CodeGen/EnumsMigration/DefinesWalker.java
Normal file
73
Assets/CodeGen/EnumsMigration/DefinesWalker.java
Normal file
@@ -0,0 +1,73 @@
|
||||
|
||||
import org.antlr.v4.runtime.*;
|
||||
import org.antlr.v4.runtime.tree.*;
|
||||
|
||||
/**
|
||||
* The generic walker for collecting defines as a enum.
|
||||
*/
|
||||
public class DefinesWalker extends CKDefinesParserBaseListener {
|
||||
public DefinesWalker(BufferedTokenStream tokenStream) {
|
||||
mCommentsFinder = new CommentsFinder(tokenStream);
|
||||
mResult = null;
|
||||
|
||||
mCurrentEnum = null;
|
||||
mCurrentEntry = null;
|
||||
}
|
||||
|
||||
public EnumsHelper.Enum_t getEnum() {
|
||||
return mResult;
|
||||
}
|
||||
|
||||
private CommentsFinder mCommentsFinder;
|
||||
private EnumsHelper.Enum_t mResult;
|
||||
|
||||
private EnumsHelper.Enum_t mCurrentEnum;
|
||||
private EnumsHelper.EnumEntry_t mCurrentEntry;
|
||||
|
||||
@Override
|
||||
public void enterProg(CKDefinesParser.ProgContext ctx) {
|
||||
mCurrentEnum = new EnumsHelper.Enum_t();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exitProg(CKDefinesParser.ProgContext ctx) {
|
||||
mResult = mCurrentEnum;
|
||||
mCurrentEnum = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enterDefinePair(CKDefinesParser.DefinePairContext ctx) {
|
||||
mCurrentEntry = new EnumsHelper.EnumEntry_t();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exitDefinePair(CKDefinesParser.DefinePairContext ctx) {
|
||||
// set values
|
||||
mCurrentEntry.mEntryName = ctx.CKGENERAL_ID(0).getText();
|
||||
mCurrentEntry.mEntryComment = mCommentsFinder.getComment(ctx.getStart(), ctx.getStop());
|
||||
|
||||
if (ctx.CKGENERAL_NUM() == null) {
|
||||
// define with id
|
||||
mCurrentEntry.mEntryValue = ctx.CKGENERAL_ID(1).getText();
|
||||
|
||||
} else {
|
||||
// define with number
|
||||
String num = ctx.CKGENERAL_NUM().getText();
|
||||
mCurrentEntry.mEntryValue = num;
|
||||
|
||||
// check whether this enum can be unsigned
|
||||
if (CommonHelper.isNegativeNumber(num)) {
|
||||
mCurrentEnum.mCanUnsigned = false;
|
||||
}
|
||||
// if the number is in hex form, this enum MIGHT have flags feature
|
||||
if (CommonHelper.isHexNumber(num)) {
|
||||
mCurrentEnum.mUseFlags = true;
|
||||
}
|
||||
|
||||
}
|
||||
// add entry
|
||||
mCurrentEnum.mEntries.add(mCurrentEntry);
|
||||
mCurrentEntry = null;
|
||||
}
|
||||
|
||||
}
|
||||
62
Assets/CodeGen/EnumsMigration/EnumsHelper.java
Normal file
62
Assets/CodeGen/EnumsMigration/EnumsHelper.java
Normal file
@@ -0,0 +1,62 @@
|
||||
import java.util.Vector;
|
||||
|
||||
public class EnumsHelper {
|
||||
/**
|
||||
* The struct to describe the entry of an enum.
|
||||
*/
|
||||
public static class EnumEntry_t {
|
||||
public EnumEntry_t() {
|
||||
mEntryName = null;
|
||||
mEntryValue = null;
|
||||
mEntryComment = null;
|
||||
}
|
||||
|
||||
public String mEntryName; ///< The name of this entry. Can not be null.
|
||||
public String mEntryValue; ///< The value of this entry. null if this entry do not have explicit value.
|
||||
public String mEntryComment; ///< The comment of this entry. null if no comment.
|
||||
}
|
||||
|
||||
/**
|
||||
* The specialized EnumEntry type which can store extra hierarchy info.
|
||||
* Used in CK_CLASSID parsing.
|
||||
*/
|
||||
public static class EnumEntryWithHierarchy_t extends EnumEntry_t {
|
||||
public EnumEntryWithHierarchy_t() {
|
||||
super();
|
||||
mHierarchy = new Vector<EnumEntryWithHierarchy_t>();
|
||||
}
|
||||
|
||||
public Vector<EnumEntryWithHierarchy_t> mHierarchy; ///< The list to store this CK_CLASSID inheritance relationship.
|
||||
}
|
||||
|
||||
/**
|
||||
* The struct to describe an enum.
|
||||
*/
|
||||
public static class Enum_t {
|
||||
public Enum_t() {
|
||||
mEnumName = null;
|
||||
mEnumComment = null;
|
||||
mCanUnsigned = true;
|
||||
mUseFlags = false;
|
||||
mEntries = new Vector<EnumEntry_t>();
|
||||
}
|
||||
|
||||
public String mEnumName; ///< The name of this enum. Can not be null.
|
||||
public String mEnumComment; ///< The comment of this enum. null if no comment.
|
||||
public boolean mCanUnsigned; ///< true if this enum can use unsigned integer as its underlaying type.
|
||||
public boolean mUseFlags; ///< true if this enum will have flags feature (supporting OR, AND, operators).
|
||||
public Vector<EnumEntry_t> mEntries; ///< The list to store entries of this enum.
|
||||
}
|
||||
|
||||
/**
|
||||
* The struct to describe a collection of enums.
|
||||
*/
|
||||
public static class EnumCollection_t {
|
||||
public EnumCollection_t() {
|
||||
mEnums = new Vector<Enum_t>();
|
||||
}
|
||||
|
||||
public Vector<Enum_t> mEnums; ///< The list to store enums.
|
||||
}
|
||||
|
||||
}
|
||||
131
Assets/CodeGen/EnumsMigration/EnumsWalker.java
Normal file
131
Assets/CodeGen/EnumsMigration/EnumsWalker.java
Normal file
@@ -0,0 +1,131 @@
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.antlr.v4.runtime.*;
|
||||
import org.antlr.v4.runtime.tree.*;
|
||||
|
||||
/**
|
||||
* The generic walker for collecting multiple enums.
|
||||
*/
|
||||
public class EnumsWalker extends CKEnumsParserBaseListener {
|
||||
public EnumsWalker(BufferedTokenStream tokenStream) {
|
||||
mTokenStream = tokenStream;
|
||||
mCommentsFinder = new CommentsFinder(tokenStream);
|
||||
mResult = null;
|
||||
|
||||
mCurrentProg = null;
|
||||
mCurrentEnum = null;
|
||||
mCurrentEntry = null;
|
||||
}
|
||||
|
||||
public EnumsHelper.EnumCollection_t getEnums() {
|
||||
return mResult;
|
||||
}
|
||||
|
||||
private String getEnumComment(Token enumHead) {
|
||||
return CommonHelper
|
||||
.cutComments(CommonHelper.getPreChannelTokens(mTokenStream, enumHead, CKGeneralLexer.COMMENTS));
|
||||
}
|
||||
|
||||
private BufferedTokenStream mTokenStream;
|
||||
private CommentsFinder mCommentsFinder;
|
||||
private EnumsHelper.EnumCollection_t mResult;
|
||||
|
||||
private EnumsHelper.EnumCollection_t mCurrentProg;
|
||||
private EnumsHelper.Enum_t mCurrentEnum;
|
||||
private EnumsHelper.EnumEntry_t mCurrentEntry;
|
||||
|
||||
@Override
|
||||
public void enterProg(CKEnumsParser.ProgContext ctx) {
|
||||
mCurrentProg = new EnumsHelper.EnumCollection_t();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exitProg(CKEnumsParser.ProgContext ctx) {
|
||||
mResult = mCurrentProg;
|
||||
mCurrentProg = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enterEnumBody(CKEnumsParser.EnumBodyContext ctx) {
|
||||
mCurrentEnum = new EnumsHelper.Enum_t();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exitEnumBody(CKEnumsParser.EnumBodyContext ctx) {
|
||||
// get enum comment
|
||||
mCurrentEnum.mEnumComment = getEnumComment(ctx.getStart());
|
||||
// get the last name (for typedef case)
|
||||
List<TerminalNode> allNames = ctx.CKGENERAL_ID();
|
||||
mCurrentEnum.mEnumName = allNames.get(allNames.size() - 1).getText();
|
||||
|
||||
mCurrentProg.mEnums.add(mCurrentEnum);
|
||||
mCurrentEnum = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enterEntryPair(CKEnumsParser.EntryPairContext ctx) {
|
||||
mCurrentEntry = new EnumsHelper.EnumEntry_t();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exitEntryPair(CKEnumsParser.EntryPairContext ctx) {
|
||||
// get entry comment
|
||||
mCurrentEntry.mEntryComment = mCommentsFinder.getComment(ctx.getStart(), ctx.getStop());
|
||||
// get entry name
|
||||
mCurrentEntry.mEntryName = ctx.CKGENERAL_ID().getText();
|
||||
|
||||
mCurrentEnum.mEntries.add(mCurrentEntry);
|
||||
mCurrentEntry = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exitEntryDirectValue(CKEnumsParser.EntryDirectValueContext ctx) {
|
||||
// get all numbers
|
||||
List<TerminalNode> nums = ctx.CKGENERAL_NUM();
|
||||
|
||||
switch (nums.size()) {
|
||||
case 1: {
|
||||
// set value
|
||||
TerminalNode node = nums.get(0);
|
||||
mCurrentEntry.mEntryValue = node.getText();
|
||||
|
||||
// check whether this enum can be unsigned
|
||||
if (CommonHelper.isNegativeNumber(node.getText())) {
|
||||
mCurrentEnum.mCanUnsigned = false;
|
||||
}
|
||||
// if the number is in hex form, this enum MIGHT have flags feature
|
||||
if (CommonHelper.isHexNumber(node.getText())) {
|
||||
mCurrentEnum.mUseFlags = true;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
// set value
|
||||
TerminalNode num = nums.get(0), offset = nums.get(1);
|
||||
mCurrentEntry.mEntryValue = String.format("%s << %s", num.getText(), offset.getText());
|
||||
|
||||
// << operator appears. this enum must have flags feature
|
||||
mCurrentEnum.mUseFlags = true;
|
||||
|
||||
break;
|
||||
}
|
||||
default:
|
||||
throw new IllegalArgumentException("Unexpected value: " + nums.size());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exitEntryRelativeValue(CKEnumsParser.EntryRelativeValueContext ctx) {
|
||||
// get all identifiers and join them
|
||||
mCurrentEntry.mEntryValue = ctx.CKGENERAL_ID().stream().map(value -> value.getText())
|
||||
.collect(Collectors.joining(" | "));
|
||||
|
||||
// | operator appears. this enum must have flags feature
|
||||
mCurrentEnum.mUseFlags = true;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
116
Assets/CodeGen/EnumsMigration/IndentHelper.java
Normal file
116
Assets/CodeGen/EnumsMigration/IndentHelper.java
Normal file
@@ -0,0 +1,116 @@
|
||||
import java.io.OutputStreamWriter;
|
||||
|
||||
public class IndentHelper {
|
||||
public IndentHelper(OutputStreamWriter writer, CommonHelper.LangType lang_type) {
|
||||
mIndent = 0;
|
||||
mLangType = lang_type;
|
||||
mWriter = writer;
|
||||
|
||||
// set indent chars
|
||||
switch (mLangType) {
|
||||
case Cpp:
|
||||
case CSharp:
|
||||
mIndentChars = CommonHelper.getIndentString(true);
|
||||
break;
|
||||
case Python:
|
||||
mIndentChars = CommonHelper.getIndentString(false);
|
||||
break;
|
||||
default:
|
||||
mIndentChars = "";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private int mIndent;
|
||||
private CommonHelper.LangType mLangType;
|
||||
private String mIndentChars;
|
||||
private OutputStreamWriter mWriter;
|
||||
|
||||
private void rawIndent() throws Exception {
|
||||
for (int i = 0; i < mIndent; ++i) {
|
||||
mWriter.write(mIndentChars);
|
||||
}
|
||||
}
|
||||
|
||||
public void inc() {
|
||||
++mIndent;
|
||||
}
|
||||
|
||||
public void dec() {
|
||||
--mIndent;
|
||||
}
|
||||
|
||||
public void indent() throws Exception {
|
||||
mWriter.write(System.lineSeparator());
|
||||
rawIndent();
|
||||
}
|
||||
|
||||
public void puts(String data) throws Exception {
|
||||
indent();
|
||||
mWriter.write(data);
|
||||
}
|
||||
|
||||
public void printf(String fmt, Object... args) throws Exception {
|
||||
indent();
|
||||
mWriter.write(String.format(fmt, args));
|
||||
}
|
||||
|
||||
/**
|
||||
* Write standard Doxygen document comment.
|
||||
* <p>
|
||||
* Usually be called before writing content.
|
||||
*
|
||||
* @param comment
|
||||
* @throws Exception
|
||||
*/
|
||||
public void briefComment(String comment) throws Exception {
|
||||
if (comment == null)
|
||||
return;
|
||||
|
||||
switch (mLangType) {
|
||||
case Cpp:
|
||||
case CSharp:
|
||||
puts("/**");
|
||||
|
||||
mWriter.write(System.lineSeparator());
|
||||
mWriter.write(CommonHelper.reindentBlockString(comment, true, mIndent));
|
||||
|
||||
puts(" */");
|
||||
break;
|
||||
case Python:
|
||||
puts("\"\"\"!");
|
||||
|
||||
mWriter.write(System.lineSeparator());
|
||||
mWriter.write(CommonHelper.reindentBlockString(comment, false, mIndent));
|
||||
|
||||
puts("\"\"\"");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Write suffix style Doxygen document comment.
|
||||
* <p>
|
||||
* Usually be called after writing content.
|
||||
*
|
||||
* @param comment
|
||||
* @throws Exception
|
||||
*/
|
||||
public void afterMemberComment(String comment) throws Exception {
|
||||
if (comment == null)
|
||||
return;
|
||||
|
||||
mWriter.write(mIndentChars);
|
||||
switch (mLangType) {
|
||||
case Cpp:
|
||||
case CSharp:
|
||||
mWriter.write(String.format("/**< %s */", CommonHelper.removeEol(comment)));
|
||||
break;
|
||||
case Python:
|
||||
mWriter.write(String.format("##< %s", CommonHelper.removeEol(comment)));
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
184
Assets/CodeGen/EnumsMigration/MainRunner.java
Normal file
184
Assets/CodeGen/EnumsMigration/MainRunner.java
Normal file
@@ -0,0 +1,184 @@
|
||||
import org.antlr.v4.runtime.*;
|
||||
import org.antlr.v4.runtime.tree.*;
|
||||
|
||||
public class MainRunner {
|
||||
|
||||
/**
|
||||
* Extract an enums collection from given file.
|
||||
* <p>
|
||||
* This function is the most commonly used function for extracting enums.
|
||||
* <p>
|
||||
* This function is used for a file which only contain enum declarations. This
|
||||
* is not suit for extracting CKERROR and CK_CLASSID. For these declarations,
|
||||
* please use their specialized extractor as described following.
|
||||
*
|
||||
* @param infile The file for reading.
|
||||
* @return An {@linkplain EnumsHelper.EnumCollection_t} instance.
|
||||
* @throws Exception
|
||||
*/
|
||||
private static EnumsHelper.EnumCollection_t getEnumsCollection(String infile) throws Exception {
|
||||
CommonHelper.InputFilePair pair = CommonHelper.openInputFile(infile);
|
||||
CKGeneralLexer lexer = new CKGeneralLexer(pair.mAntlrStream);
|
||||
CommonTokenStream tokens = new CommonTokenStream(lexer);
|
||||
CKEnumsParser parser = new CKEnumsParser(tokens);
|
||||
|
||||
ParseTree tree = parser.prog();
|
||||
ParseTreeWalker walker = new ParseTreeWalker();
|
||||
EnumsWalker worker = new EnumsWalker(tokens);
|
||||
walker.walk(worker, tree);
|
||||
|
||||
pair.mUnderlyingStream.close();
|
||||
return worker.getEnums();
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract a series of "#define" syntax as an enum.
|
||||
* <p>
|
||||
* This function will assume that given file only contain C++ "#define" syntax.
|
||||
* After reading it, it will re-organize it as an enum and return. This only is
|
||||
* used by CKERROR now. But it suit for more scenarios if there are something
|
||||
* like CKERROR in future.
|
||||
*
|
||||
* @param infile The file for reading.
|
||||
* @param assignedEnumName The desired name of organized enum instance.
|
||||
* Contemporary this field should always be "CKERROR"
|
||||
* because no one else is using it.
|
||||
* @return An {@linkplain EnumsHelper.Enum_t} instance.
|
||||
* @throws Exception
|
||||
*/
|
||||
private static EnumsHelper.Enum_t organiseDefines(String infile, String assignedEnumName) throws Exception {
|
||||
CommonHelper.InputFilePair pair = CommonHelper.openInputFile(infile);
|
||||
CKGeneralLexer lexer = new CKGeneralLexer(pair.mAntlrStream);
|
||||
CommonTokenStream tokens = new CommonTokenStream(lexer);
|
||||
CKDefinesParser parser = new CKDefinesParser(tokens);
|
||||
|
||||
ParseTree tree = parser.prog();
|
||||
ParseTreeWalker walker = new ParseTreeWalker();
|
||||
DefinesWalker worker = new DefinesWalker(tokens);
|
||||
walker.walk(worker, tree);
|
||||
|
||||
pair.mUnderlyingStream.close();
|
||||
|
||||
EnumsHelper.Enum_t result = worker.getEnum();
|
||||
result.mEnumName = assignedEnumName;
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract a series of macro define as an enum, considering its indent to build
|
||||
* hierarchy.
|
||||
* <p>
|
||||
* This is specialized enum extractor of CK_CLASSID. The given file should use a
|
||||
* series "#define" syntax to describe enum, and use Tab as the indent before
|
||||
* each "#define" syntax to indicate its hierarchy.
|
||||
*
|
||||
* @param infile The file for reading.
|
||||
* @return An {@linkplain EnumsHelper.Enum_t} instance. Actually it is an
|
||||
* instance to {@linkplain EnumsHelper.Enum_t} whose entries is
|
||||
* {@linkplain EnumsHelper.EnumEntryWithHierarchy_t}, the child class of
|
||||
* {@linkplain EnumsHelper.EnumEntry_t} (the entry type of common
|
||||
* {@linkplain EnumsHelper.Enum_t}) with extra hierarchy infos.
|
||||
* @throws Exception
|
||||
*/
|
||||
private static EnumsHelper.Enum_t organiseClassid(String infile) throws Exception {
|
||||
CommonHelper.InputFilePair pair = CommonHelper.openInputFile(infile);
|
||||
CKGeneralLexer lexer = new CKGeneralLexer(pair.mAntlrStream);
|
||||
CommonTokenStream tokens = new CommonTokenStream(lexer);
|
||||
CKDefinesParser parser = new CKDefinesParser(tokens);
|
||||
|
||||
ParseTree tree = parser.prog();
|
||||
ParseTreeWalker walker = new ParseTreeWalker();
|
||||
ClassidWalker worker = new ClassidWalker(tokens);
|
||||
walker.walk(worker, tree);
|
||||
|
||||
pair.mUnderlyingStream.close();
|
||||
|
||||
EnumsHelper.Enum_t result = worker.getEnum();
|
||||
result.mEnumName = "CK_CLASSID";
|
||||
return result;
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
|
||||
// =========== CKERROR ===========
|
||||
EnumsHelper.Enum_t ckerror = organiseDefines("src/CKERROR.txt", "CKERROR");
|
||||
CppWriter.writeEnum("dest/CKERROR.hpp", ckerror);
|
||||
PythonWriter.writeEnum("dest/CKERROR.py", ckerror);
|
||||
CSharpWriter.writeEnum("dest/CKERROR.cs", ckerror);
|
||||
CppWriter.writeCkErrorAccVal("dest/CKERROR.AccVal.hpp", ckerror);
|
||||
PythonWriter.writeAccVal("dest/CKERROR.AccVal.py", ckerror);
|
||||
CSharpWriter.writeAccVal("dest/CKERROR.AccVal.cs", ckerror);
|
||||
|
||||
// =========== CK_CLASSID ===========
|
||||
EnumsHelper.Enum_t classid = organiseClassid("src/CK_CLASSID.txt");
|
||||
CppWriter.writeEnum("dest/CK_CLASSID.hpp", classid);
|
||||
PythonWriter.writeEnum("dest/CK_CLASSID.py", classid);
|
||||
CSharpWriter.writeEnum("dest/CK_CLASSID.cs", classid);
|
||||
CppWriter.writeCkClassidAccVal("dest/CK_CLASSID.AccVal.hpp", classid);
|
||||
PythonWriter.writeAccVal("dest/CK_CLASSID.AccVal.py", classid);
|
||||
|
||||
// =========== Define2 ===========
|
||||
// Define2 do not need annotation output.
|
||||
// Because they are CKStateChunk used value which are not exposed to outside.
|
||||
EnumsHelper.EnumCollection_t def2 = getEnumsCollection("src/Defines2.txt");
|
||||
CppWriter.writeEnums("dest/Defines2.hpp", def2);
|
||||
PythonWriter.writeEnums("dest/Defines2.py", def2);
|
||||
CSharpWriter.writeEnums("dest/Defines2.cs", def2);
|
||||
|
||||
// =========== Combined enums ===========
|
||||
EnumsHelper.EnumCollection_t ck2Enums = getEnumsCollection("src/CKEnums.txt"),
|
||||
vxEnums = getEnumsCollection("src/VxEnums.txt");
|
||||
|
||||
CppWriter.writeEnums("dest/CKEnums.hpp", ck2Enums);
|
||||
PythonWriter.writeEnums("dest/CKEnums.py", ck2Enums);
|
||||
CSharpWriter.writeEnums("dest/CKEnums.cs", ck2Enums);
|
||||
CppWriter.writeAccVals("dest/CKEnums.AccVal.hpp", ck2Enums, CommonHelper.CKParts.CK2);
|
||||
PythonWriter.writeAccVals("dest/CKEnums.AccVal.py", ck2Enums);
|
||||
CSharpWriter.writeAccVals("dest/CKEnums.AccVal.cs", ck2Enums);
|
||||
|
||||
CppWriter.writeEnums("dest/VxEnums.hpp", vxEnums);
|
||||
PythonWriter.writeEnums("dest/VxEnums.py", vxEnums);
|
||||
CSharpWriter.writeEnums("dest/VxEnums.cs", vxEnums);
|
||||
CppWriter.writeAccVals("dest/VxEnums.AccVal.hpp", vxEnums, CommonHelper.CKParts.VxMath);
|
||||
PythonWriter.writeAccVals("dest/VxEnums.AccVal.py", vxEnums);
|
||||
CSharpWriter.writeAccVals("dest/VxEnums.AccVal.cs", vxEnums);
|
||||
|
||||
// =========== Single enums ===========
|
||||
EnumsHelper.Enum_t single;
|
||||
|
||||
single = organiseDefines("src/CK_STATECHUNK_CHUNKVERSION.txt", "CK_STATECHUNK_CHUNKVERSION");
|
||||
CppWriter.writeEnum("dest/CK_STATECHUNK_CHUNKVERSION.hpp", single);
|
||||
PythonWriter.writeEnum("dest/CK_STATECHUNK_CHUNKVERSION.py", single);
|
||||
CSharpWriter.writeEnum("dest/CK_STATECHUNK_CHUNKVERSION.cs", single);
|
||||
CppWriter.writeAccVal("dest/CK_STATECHUNK_CHUNKVERSION.AccVal.hpp", single, CommonHelper.CKParts.CK2);
|
||||
PythonWriter.writeAccVal("dest/CK_STATECHUNK_CHUNKVERSION.AccVal.py", single);
|
||||
CSharpWriter.writeAccVal("dest/CK_STATECHUNK_CHUNKVERSION.AccVal.cs", single);
|
||||
|
||||
single = organiseDefines("src/CK_STATECHUNK_DATAVERSION.txt", "CK_STATECHUNK_DATAVERSION");
|
||||
CppWriter.writeEnum("dest/CK_STATECHUNK_DATAVERSION.hpp", single);
|
||||
PythonWriter.writeEnum("dest/CK_STATECHUNK_DATAVERSION.py", single);
|
||||
CSharpWriter.writeEnum("dest/CK_STATECHUNK_DATAVERSION.cs", single);
|
||||
CppWriter.writeAccVal("dest/CK_STATECHUNK_DATAVERSION.AccVal.hpp", single, CommonHelper.CKParts.CK2);
|
||||
PythonWriter.writeAccVal("dest/CK_STATECHUNK_DATAVERSION.AccVal.py", single);
|
||||
CSharpWriter.writeAccVal("dest/CK_STATECHUNK_DATAVERSION.AccVal.cs", single);
|
||||
|
||||
single = organiseDefines("src/CK_BITMAPDATA_FLAGS.txt", "CK_BITMAPDATA_FLAGS");
|
||||
CppWriter.writeEnum("dest/CK_BITMAPDATA_FLAGS.hpp", single);
|
||||
PythonWriter.writeEnum("dest/CK_BITMAPDATA_FLAGS.py", single);
|
||||
CSharpWriter.writeEnum("dest/CK_BITMAPDATA_FLAGS.cs", single);
|
||||
CppWriter.writeAccVal("dest/CK_BITMAPDATA_FLAGS.AccVal.hpp", single, CommonHelper.CKParts.CK2);
|
||||
PythonWriter.writeAccVal("dest/CK_BITMAPDATA_FLAGS.AccVal.py", single);
|
||||
CSharpWriter.writeAccVal("dest/CK_BITMAPDATA_FLAGS.AccVal.cs", single);
|
||||
|
||||
single = organiseDefines("src/CK_CAMERA_PROJECTION.txt", "CK_CAMERA_PROJECTION");
|
||||
CppWriter.writeEnum("dest/CK_CAMERA_PROJECTION.hpp", single);
|
||||
PythonWriter.writeEnum("dest/CK_CAMERA_PROJECTION.py", single);
|
||||
CSharpWriter.writeEnum("dest/CK_CAMERA_PROJECTION.cs", single);
|
||||
CppWriter.writeAccVal("dest/CK_CAMERA_PROJECTION.AccVal.hpp", single, CommonHelper.CKParts.CK2);
|
||||
PythonWriter.writeAccVal("dest/CK_CAMERA_PROJECTION.AccVal.py", single);
|
||||
CSharpWriter.writeAccVal("dest/CK_CAMERA_PROJECTION.AccVal.cs", single);
|
||||
|
||||
// print message.
|
||||
System.out.println("DONE!");
|
||||
}
|
||||
}
|
||||
185
Assets/CodeGen/EnumsMigration/PythonWriter.java
Normal file
185
Assets/CodeGen/EnumsMigration/PythonWriter.java
Normal file
@@ -0,0 +1,185 @@
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.util.Locale;
|
||||
|
||||
/**
|
||||
* Write enum declarations and accessible value into Python format.
|
||||
*/
|
||||
public class PythonWriter {
|
||||
|
||||
// =========== Python Enum Declaration Writer ===========
|
||||
|
||||
/**
|
||||
* Internal real enum declaration writer.
|
||||
*
|
||||
* @param writer {@linkplain java.io.OutputStreamWriter} instance for writing.
|
||||
* @param prog {@linkplain EnumsHelper.EnumCollection_t} instance for writing.
|
||||
* @throws Exception
|
||||
*/
|
||||
private static void internalWriteEnums(OutputStreamWriter writer, EnumsHelper.EnumCollection_t prog)
|
||||
throws Exception {
|
||||
IndentHelper indent = new IndentHelper(writer, CommonHelper.LangType.Python);
|
||||
for (EnumsHelper.Enum_t enum_t : prog.mEnums) {
|
||||
// write enum start
|
||||
indent.printf("class %s(enum.IntEnum):", enum_t.mEnumName);
|
||||
indent.inc();
|
||||
|
||||
// write enum comment
|
||||
indent.briefComment(enum_t.mEnumComment);
|
||||
|
||||
// write enum entries
|
||||
for (EnumsHelper.EnumEntry_t enumEntry_t : enum_t.mEntries) {
|
||||
// write entry self
|
||||
if (enumEntry_t.mEntryValue == null) {
|
||||
indent.printf("%s = auto()", enumEntry_t.mEntryName);
|
||||
} else {
|
||||
indent.printf("%s = %s", enumEntry_t.mEntryName,
|
||||
CommonHelper.convertToPythonNumber(enumEntry_t.mEntryValue));
|
||||
}
|
||||
|
||||
// write entry comment after member
|
||||
indent.afterMemberComment(enumEntry_t.mEntryComment);
|
||||
}
|
||||
|
||||
// enum tail
|
||||
indent.dec();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Write an enum declaration collection into given file.
|
||||
* <p>
|
||||
* Actually this is a wrapper of internal enum declaration collection writer.
|
||||
*
|
||||
* @param filename The name of written file.
|
||||
* @param prog {@linkplain EnumsHelper.EnumCollection_t} instance for
|
||||
* writing.
|
||||
* @throws Exception
|
||||
*/
|
||||
public static void writeEnums(String filename, EnumsHelper.EnumCollection_t prog) throws Exception {
|
||||
// open file and write
|
||||
OutputStreamWriter fs = CommonHelper.openOutputFile(filename);
|
||||
internalWriteEnums(fs, prog);
|
||||
fs.close();
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a single enum declaration into given file.
|
||||
* <p>
|
||||
* Actually this is a wrapper of internal enum declaration collection writer.
|
||||
*
|
||||
* @param filename The name of written file.
|
||||
* @param _enum {@linkplain EnumsHelper.Enum_t} instance for writing.
|
||||
* @throws Exception
|
||||
*/
|
||||
public static void writeEnum(String filename, EnumsHelper.Enum_t _enum) throws Exception {
|
||||
// create collection from single enum
|
||||
EnumsHelper.EnumCollection_t col = new EnumsHelper.EnumCollection_t();
|
||||
col.mEnums.add(_enum);
|
||||
// open file and write
|
||||
OutputStreamWriter fs = CommonHelper.openOutputFile(filename);
|
||||
internalWriteEnums(fs, col);
|
||||
fs.close();
|
||||
}
|
||||
|
||||
// =========== Python Enum Accessible Value Writer ===========
|
||||
|
||||
/**
|
||||
* Try generate human readable name from enum entry name.
|
||||
* <p>
|
||||
* This function is only served for Python code generation.
|
||||
* <p>
|
||||
* As you noticed, almost entries of CK enums are fully capital and splitted by
|
||||
* underline. This is really not good for human reading, especially those who
|
||||
* are not programmer. So this function will try give these programmer-oriented
|
||||
* entry name a human readable name as its display name. However, this extract
|
||||
* method is not perfect. It simply do some split and replacement so the
|
||||
* generated content may still not good for reader.
|
||||
*
|
||||
* @param entry_name The name of enum entry
|
||||
* @return A human readable entry name. No guaranteen that return value is must
|
||||
* human readable.
|
||||
*/
|
||||
private static String extractHumanReadableEntryName(String entry_name) {
|
||||
// remove first part (any content before underline '_')
|
||||
entry_name = entry_name.replaceFirst("^[a-zA-Z0-9]+_", "");
|
||||
|
||||
// lower all chars except first char
|
||||
if (entry_name.length() < 1)
|
||||
return entry_name;
|
||||
else
|
||||
return entry_name.substring(0, 1) + entry_name.substring(1).toLowerCase(Locale.ROOT);
|
||||
}
|
||||
|
||||
/**
|
||||
* Internal real enum accessible value writer.
|
||||
*
|
||||
* @param writer {@linkplain java.io.OutputStreamWriter} instance for writing.
|
||||
* @param prog {@linkplain EnumsHelper.EnumCollection_t} instance for writing.
|
||||
* @throws Exception
|
||||
*/
|
||||
private static void internalWriteAccVals(OutputStreamWriter writer, EnumsHelper.EnumCollection_t prog)
|
||||
throws Exception {
|
||||
IndentHelper indent = new IndentHelper(writer, CommonHelper.LangType.Python);
|
||||
|
||||
// write implements
|
||||
for (EnumsHelper.Enum_t enum_t : prog.mEnums) {
|
||||
// write enum desc header
|
||||
indent.printf("g_Annotation_%s: dict[int, EnumAnnotation] = {", enum_t.mEnumName);
|
||||
indent.inc();
|
||||
|
||||
// write enum desc entries
|
||||
for (EnumsHelper.EnumEntry_t enumEntry_t : enum_t.mEntries) {
|
||||
String comment = "";
|
||||
if (enumEntry_t.mEntryComment != null) {
|
||||
comment = CommonHelper.escapeString(enumEntry_t.mEntryComment);
|
||||
}
|
||||
|
||||
indent.printf("%s.%s.value: EnumAnnotation(\"%s\", \"%s\"),", enum_t.mEnumName, enumEntry_t.mEntryName,
|
||||
extractHumanReadableEntryName(enumEntry_t.mEntryName), comment);
|
||||
}
|
||||
|
||||
// write enum tail
|
||||
indent.dec();
|
||||
indent.puts("}");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Write an enum accessible value collection into given file.
|
||||
* <p>
|
||||
* Actually this is a wrapper of internal enum accessible value collection
|
||||
* writer.
|
||||
*
|
||||
* @param filename The name of written file.
|
||||
* @param prog {@linkplain EnumsHelper.EnumCollection_t} instance for
|
||||
* writing.
|
||||
* @throws Exception
|
||||
*/
|
||||
public static void writeAccVals(String filename, EnumsHelper.EnumCollection_t prog) throws Exception {
|
||||
// open file and write
|
||||
OutputStreamWriter fs = CommonHelper.openOutputFile(filename);
|
||||
internalWriteAccVals(fs, prog);
|
||||
fs.close();
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a single enum accessible value into given file.
|
||||
* <p>
|
||||
* Actually this is a wrapper of internal enum accessible value collection
|
||||
* writer.
|
||||
*
|
||||
* @param filename The name of written file.
|
||||
* @param _enum {@linkplain EnumsHelper.Enum_t} instance for writing.
|
||||
* @throws Exception
|
||||
*/
|
||||
public static void writeAccVal(String filename, EnumsHelper.Enum_t _enum) throws Exception {
|
||||
// create a collection with single enum.
|
||||
EnumsHelper.EnumCollection_t col = new EnumsHelper.EnumCollection_t();
|
||||
col.mEnums.add(_enum);
|
||||
// open file and write
|
||||
OutputStreamWriter fs = CommonHelper.openOutputFile(filename);
|
||||
internalWriteAccVals(fs, col);
|
||||
fs.close();
|
||||
}
|
||||
|
||||
}
|
||||
16
Assets/CodeGen/EnumsMigration/README.md
Normal file
16
Assets/CodeGen/EnumsMigration/README.md
Normal file
@@ -0,0 +1,16 @@
|
||||
# Enums Migration
|
||||
|
||||
A helper program to migrate existing Virtools enum declarations into other formats.
|
||||
|
||||
Original Virtools SDK have various enum declarations. All of them are defined as C format and their formation are not uniform. This sub-project will use laxer and parser to recognize these diverse declarations, extract them as a series of uniform Java data struct and output them as C++ code (as C++ enum class syntax for LibCmo using), Python code (for PyBMap using), and C# code (for BMapSharp using).
|
||||
|
||||
The steps processing existing enum declaration is called migration as this sub-project name told.
|
||||
|
||||
```
|
||||
antlr4 CKGeneralLexer.g4
|
||||
antlr4 CKEnumsParser.g4
|
||||
antlr4 CKDefinesParser.g4
|
||||
|
||||
javac *.java
|
||||
java MainRunner
|
||||
```
|
||||
0
Assets/CodeGen/EnumsMigration/dest/.gitkeep
Normal file
0
Assets/CodeGen/EnumsMigration/dest/.gitkeep
Normal file
264
Assets/CodeGen/EnumsMigration/src/CKEnums.txt
Normal file
264
Assets/CodeGen/EnumsMigration/src/CKEnums.txt
Normal file
@@ -0,0 +1,264 @@
|
||||
/*************************************************
|
||||
{filename:CK_FILE_WRITEMODE}
|
||||
Summary: Specify the way files are saved to disk (compression)
|
||||
|
||||
Remarks :
|
||||
+ File write mode controls the format of a Virtools file when saved. More specifically it
|
||||
controls whether compression is enabled and also if the Virtools Dev Interface specific data
|
||||
should be stored in the file (if CKFILE_FORVIEWER flag is set , no interface data is saved)
|
||||
|
||||
See also: CKContext::SetFileWriteMode,CKContext::GetFileWriteMode,CKContext::SetCompressionLevel,CKContext::SetGlobalImagesSaveOptions,CKContext::SetGlobalSoundsSaveOptions
|
||||
*************************************************/
|
||||
typedef enum CK_FILE_WRITEMODE
|
||||
{
|
||||
CKFILE_UNCOMPRESSED =0, // Save data uncompressed
|
||||
CKFILE_CHUNKCOMPRESSED_OLD =1, // Obsolete
|
||||
CKFILE_EXTERNALTEXTURES_OLD=2, // Obsolete : use CKContext::SetGlobalImagesSaveOptions instead.
|
||||
CKFILE_FORVIEWER =4, // Don't save Interface Data within the file, the level won't be editable anymore in the interface
|
||||
CKFILE_WHOLECOMPRESSED =8, // Compress the whole file
|
||||
} CK_FILE_WRITEMODE;
|
||||
|
||||
/*************************************************
|
||||
{filename:CK_LOAD_FLAGS}
|
||||
Summary: Load Options.
|
||||
|
||||
Remarks:
|
||||
+ This options apply when loading a Virtools file
|
||||
or a importing a 3D Model file.
|
||||
+ They defines whether object geometry,only animations
|
||||
or only behaviors should be loaded.
|
||||
+ One can specify (using the CK_LOAD_AS_DYNAMIC_OBJECT) if
|
||||
created CKObjects should be created as dynamic (See also Dynamic Objects)
|
||||
See also : CKContext::Load,CKContext::CKSave
|
||||
*************************************************/
|
||||
typedef enum CK_LOAD_FLAGS {
|
||||
CK_LOAD_ANIMATION =1<<0, // Load animations
|
||||
CK_LOAD_GEOMETRY =1<<1, // Load geometry.
|
||||
CK_LOAD_DEFAULT =CK_LOAD_GEOMETRY|CK_LOAD_ANIMATION, // Load animations & geometry
|
||||
CK_LOAD_ASCHARACTER =1<<2, // Load all the objects and create a character that contains them all .
|
||||
CK_LOAD_DODIALOG =1<<3, // Check object name unicity and warns the user with a dialog box when duplicate names are found.
|
||||
CK_LOAD_AS_DYNAMIC_OBJECT =1<<4, // Objects loaded from this file may be deleted at run-time or are temporary
|
||||
CK_LOAD_AUTOMATICMODE =1<<5, // Check object name unicity and automatically rename or replace according to the options specified in CKContext::SetAutomaticLoadMode
|
||||
CK_LOAD_CHECKDUPLICATES =1<<6, // Check object name unicity (The list of duplicates is stored in the CKFile class after a OpenFile call
|
||||
CK_LOAD_CHECKDEPENDENCIES =1<<7, // Check if every plugins needed are availables
|
||||
CK_LOAD_ONLYBEHAVIORS =1<<8, //
|
||||
} CK_LOAD_FLAGS;
|
||||
|
||||
// Options that will be used to create this object...
|
||||
enum CK_FO_OPTIONS {
|
||||
CK_FO_DEFAULT = 0, // Default behavior : a new object will be created with the name stored in CKFileObject
|
||||
CK_FO_RENAMEOBJECT, // Renaming : a new object will be created with the name stored in CKFileObject + a integer value XXX to ensure its uniqueness
|
||||
CK_FO_REPLACEOBJECT, // Do not create a new object, instead use an existing one which CK_ID is given by CreatedObject
|
||||
// to load the chunk on
|
||||
CK_FO_DONTLOADOBJECT, // Object chunk will not be read either because it is a reference
|
||||
// or because the loaded object already exist in the current level
|
||||
// and the user choose to keep the existing one.
|
||||
};
|
||||
|
||||
/*************************************************
|
||||
{filename:CK_LOADMODE}
|
||||
Summary: Specify the way an object just loaded should be handled when it already exists in the level.
|
||||
{secret}
|
||||
|
||||
See also:
|
||||
*************************************************/
|
||||
typedef enum CK_LOADMODE
|
||||
{
|
||||
CKLOAD_INVALID=-1,// Use the existing object instead of loading
|
||||
CKLOAD_OK=0, // Ignore ( Name unicity is broken )
|
||||
CKLOAD_REPLACE=1, // Replace the existing object (Not yet implemented)
|
||||
CKLOAD_RENAME=2, // Rename the loaded object
|
||||
CKLOAD_USECURRENT=3,// Use the existing object instead of loading
|
||||
} CK_LOADMODE;
|
||||
|
||||
/*************************************************
|
||||
{filename:CK_OBJECTCREATION_OPTIONS}
|
||||
Summary: Specify the way an object is created through CKCreateObject.
|
||||
|
||||
Remarks:
|
||||
+ These flag controls the way an object is created, the most important of these flags
|
||||
being CK_OBJECTCREATION_DYNAMIC which, if set in CKCreateObject, make the newly created object
|
||||
dynamic.
|
||||
See also: CKContext::CreateObject,Dynamic Objects
|
||||
*************************************************/
|
||||
enum CK_OBJECTCREATION_OPTIONS
|
||||
{
|
||||
CK_OBJECTCREATION_NONAMECHECK = 0, // Do not test for name unicity (may be overriden in special case)
|
||||
CK_OBJECTCREATION_REPLACE = 1, // Replace the current object by the object being loaded
|
||||
CK_OBJECTCREATION_RENAME = 2, // Rename the created object to ensure its uniqueness
|
||||
CK_OBJECTCREATION_USECURRENT = 3, // Do not create a new object, use the one with the same name instead
|
||||
CK_OBJECTCREATION_ASK = 4, // If a duplicate name if found, opens a dialog box to ask the useror use automatic load mode if any.
|
||||
CK_OBJECTCREATION_FLAGSMASK = 0x0000000F, // Mask for previous values
|
||||
CK_OBJECTCREATION_DYNAMIC = 0x00000010, // The object must be created dynamic
|
||||
CK_OBJECTCREATION_ACTIVATE = 0x00000020, // The object will be copied/created active
|
||||
CK_OBJECTCREATION_NONAMECOPY = 0x00000040 // The object will take control of the string given to it directly, without copying it
|
||||
};
|
||||
|
||||
/*************************************************
|
||||
{filename:CK_PLUGIN_TYPE}
|
||||
Summary: Type identifier for a Virtools plugin.
|
||||
Remarks:
|
||||
+ Each plugin must be given a type.
|
||||
+ This enumeration is used to identify a specific catagory
|
||||
of plugin when using the CKPluginManager.
|
||||
|
||||
See also: CKPluginManager,Creating New Plugins
|
||||
*************************************************/
|
||||
typedef enum CK_PLUGIN_TYPE {
|
||||
CKPLUGIN_BITMAP_READER = 0, // The plugin is bitmap (textures,sprites) loader
|
||||
CKPLUGIN_SOUND_READER = 1, // Sound Reader Plugin
|
||||
CKPLUGIN_MODEL_READER = 2, // 3D Model Reader
|
||||
CKPLUGIN_MANAGER_DLL = 3, // The plugin implements a Manager
|
||||
CKPLUGIN_BEHAVIOR_DLL = 4, // The plugin implements one or more behaviors
|
||||
CKPLUGIN_RENDERENGINE_DLL = 5, // Render Engine plugin
|
||||
CKPLUGIN_MOVIE_READER = 6, // Movie (AVI,Mpeg) reader
|
||||
CKPLUGIN_EXTENSION_DLL = 7, // Generic extension (definition of new parameter types or operations for ex.)
|
||||
} CK_PLUGIN_TYPE;
|
||||
|
||||
/***************************************************
|
||||
CHUNK_OPTIONS in Virtools header.
|
||||
*************************************************/
|
||||
enum CK_STATECHUNK_CHUNKOPTIONS {
|
||||
CHNK_OPTION_IDS = 0x01, // IDS are stored inside chunk
|
||||
CHNK_OPTION_MAN = 0x02, // Managers ints are store inside chunk
|
||||
CHNK_OPTION_CHN = 0x04, // Sub chunk are stored inside chunk
|
||||
CHNK_OPTION_FILE = 0x08, // Chunk was written with indices relative to a file....
|
||||
CHNK_OPTION_ALLOWDYN = 0x10, // Dynamic object can be written in the chunk
|
||||
CHNK_OPTION_LISTBIG = 0x20, // List are store in big Endian ?
|
||||
CHNK_DONTDELETE_PTR = 0x40, // Data buffer stored in m_Buffer is not owned by CKStateChunk , it must not be deleted...
|
||||
CHNK_DONTDELETE_PARSER = 0x80, // m_Parser Ptr is not owned by CKStateChunk , it must not be deleted...
|
||||
};
|
||||
|
||||
typedef enum CK_OBJECT_SHOWOPTION {
|
||||
CKHIDE =0,
|
||||
CKSHOW =1,
|
||||
CKHIERARCHICALHIDE =2
|
||||
} CK_OBJECT_SHOWOPTION;
|
||||
|
||||
/***************************************************
|
||||
{filename:CK_OBJECT_FLAGS}
|
||||
Summary: CKObject Flags
|
||||
|
||||
Remarks:
|
||||
+ Flags specifying special settings for basic objects.
|
||||
+ Some of this flags are shared with sub-classes such as CKParameterIn,CKParameterOut and CKBehaviorIO.
|
||||
+ You rarely need to modify directly this flags through CKObject::SetFlags or CKObject::ModifyObjectFlags instead
|
||||
you should always use the specific acces function (given between ()) which may need to perform additionnal operations.
|
||||
See also: CKObject,CKObject::GetObjectFlags,CKObject::ModifyObjectFlags
|
||||
*************************************************/
|
||||
typedef enum CK_OBJECT_FLAGS {
|
||||
CK_OBJECT_INTERFACEOBJ = 0x00000001, // Reserved for Inteface Use
|
||||
CK_OBJECT_PRIVATE = 0x00000002, // The object must not be displayed in interface (Lists,Level view,etc...),nor should it be saved. (CKObject::IsPrivate()
|
||||
CK_OBJECT_INTERFACEMARK = 0x00000004,
|
||||
CK_OBJECT_FREEID = 0x00000008, // ID of this object can be released safely and is free to be reused by future CKobjects.
|
||||
CK_OBJECT_TOBEDELETED = 0x00000010, // This object is being deleted
|
||||
CK_OBJECT_NOTTOBESAVED = 0x00000020, // This object must not be saved
|
||||
CK_OBJECT_VISIBLE = 0x00000040, // This object is visible (CKObject::Show)
|
||||
CK_OBJECT_NAMESHARED = 0x00000080, // This object has its name from another entity
|
||||
CK_OBJECT_DYNAMIC = 0x00000108, // This object may be created or deleted at run-time, it also contails CK_OBJECT_FREEID. (CKObject::IsDynamic,CKContext::CreateObject)
|
||||
CK_OBJECT_HIERACHICALHIDE = 0x00000200, // This object hides all its hierarchy (CKObject::Show)
|
||||
CK_OBJECT_UPTODATE = 0x00000400, // (Camera,etc..)
|
||||
CK_OBJECT_TEMPMARKER = 0x00000800,
|
||||
CK_OBJECT_ONLYFORFILEREFERENCE = 0x00001000,
|
||||
CK_OBJECT_NOTTOBEDELETED = 0x00002000, // This object must not be deleted in a clear all
|
||||
CK_OBJECT_APPDATA = 0x00004000, // This object has app data
|
||||
CK_OBJECT_SINGLEACTIVITY = 0x00008000, // this object has an information of single activity
|
||||
CK_OBJECT_LOADSKIPBEOBJECT = 0x00010000, // When loading this object the CKBeObject part should be skipped
|
||||
|
||||
CK_OBJECT_NOTTOBELISTEDANDSAVED = 0x00000023, // Combination of Private and Not To Be Saved
|
||||
|
||||
|
||||
// The following flags are specific to parameters (they are stored here for object's size purposes )
|
||||
CK_PARAMETEROUT_SETTINGS = 0x00400000,
|
||||
CK_PARAMETEROUT_PARAMOP = 0x00800000, // This parameter is the output of a CKParameterOperation (Automatically set by Engine)
|
||||
CK_PARAMETERIN_DISABLED = 0x01000000, // Parameter In or Out is disabled (CKBehavior::EnableInputParameter,CKBehavior::DisableInputParameter)
|
||||
CK_PARAMETERIN_THIS = 0x02000000, // Special parameter type : its value and type are always equal to its owner (CKParameter::SetAsMyselfParameter)
|
||||
CK_PARAMETERIN_SHARED = 0x04000000,
|
||||
CK_PARAMETEROUT_DELETEAFTERUSE = 0x08000000, // When adding parameters to CKMessage, they can be automatically deleted when message is released (CKMessage::AddParameter)
|
||||
CK_OBJECT_PARAMMASK = 0x0FC00000, // Mask for options specific to parameters
|
||||
|
||||
// The Following flags are specific for Behavior ios (CKBehaviorIO)
|
||||
CK_BEHAVIORIO_IN = 0x10000000, // This BehaviorIO is a behavior input (CKBehaviorIO::SetType}
|
||||
CK_BEHAVIORIO_OUT = 0x20000000, // This BehaviorIO is a behavior output (CKBehaviorIO::SetType)
|
||||
CK_BEHAVIORIO_ACTIVE = 0x40000000, // This BehaviorIO is a currently active (CKBehaviorIO::Activate}
|
||||
CK_OBJECT_IOTYPEMASK = 0x30000000,
|
||||
CK_OBJECT_IOMASK = 0xF0000000,
|
||||
|
||||
// The Following flags are specific for Behavior ios (CKBehaviorIO)
|
||||
CKBEHAVIORLINK_RESERVED = 0x10000000, // This BehaviorIO is a behavior input (CKBehaviorIO::SetType}
|
||||
CKBEHAVIORLINK_ACTIVATEDLASTFRAME = 0x20000000, // This link had been activated last frame
|
||||
CK_OBJECT_BEHAVIORLINKMASK = 0x30000000,
|
||||
} CK_OBJECT_FLAGS;
|
||||
|
||||
|
||||
/*************************************************
|
||||
{filename:CK_3DENTITY_FLAGS}
|
||||
Summary: 3dEntity Flags
|
||||
Remarks:
|
||||
+ Flags give user and engine more information about the 3dEntity.
|
||||
|
||||
See also: CK3dEntity::SetFlags,CK3dEntity::GetFlags,
|
||||
*************************************************/
|
||||
typedef enum CK_3DENTITY_FLAGS {
|
||||
CK_3DENTITY_DUMMY = 0x00000001, // Entity is a dummy used to represent a position
|
||||
CK_3DENTITY_FRAME = 0x00000002, // Entity is a frame used to represent an orientation
|
||||
CK_3DENTITY_RESERVED0 = 0x00000020, // Obsolete Flag
|
||||
CK_3DENTITY_TARGETLIGHT = 0x00000100, // Entity is a target of a light
|
||||
CK_3DENTITY_TARGETCAMERA = 0x00000200, // Entity is a target of a camera
|
||||
CK_3DENTITY_IGNOREANIMATION = 0x00000400, // Animation using this entity can't modify it
|
||||
CK_3DENTITY_HIERARCHICALOBSTACLE= 0x00000800, // Used by the Collision Manager
|
||||
CK_3DENTITY_UPDATELASTFRAME = 0x00001000, // Store the last world matrix for this Entity after each render
|
||||
CK_3DENTITY_CAMERAIGNOREASPECT = 0x00002000, // Ignore aspect ratio setting for cameras
|
||||
CK_3DENTITY_DISABLESKINPROCESS = 0x00004000, // Force skin processing to be disabled
|
||||
CK_3DENTITY_ENABLESKINOFFSET = 0x00008000, // If not set the skin stay attached to the bones the vertices are linked to, otherwise the skin can be freely rotated,translated or scaled according to its owner entity matrix.
|
||||
CK_3DENTITY_PLACEVALID = 0x00010000, // Used internally when saving
|
||||
CK_3DENTITY_PARENTVALID = 0x00020000, // Used internally when saving
|
||||
CK_3DENTITY_IKJOINTVALID = 0x00040000, // Special flag for Bodyparts : IK Joint data is valid
|
||||
CK_3DENTITY_PORTAL = 0x00080000, // The 3dEntity is a portal
|
||||
CK_3DENTITY_ZORDERVALID = 0x00100000, // The 3dEntity has a non-zero ZOrder
|
||||
CK_3DENTITY_CHARACTERDOPROCESS = 0x80000000, // Special flag for Characters : Automatic process of animation
|
||||
} CK_3DENTITY_FLAGS;
|
||||
|
||||
|
||||
/*************************************************
|
||||
{filename:CK_TEXTURE_SAVEOPTIONS}
|
||||
Summary: Specify the way textures or sprites will be saved
|
||||
|
||||
Remarks :
|
||||
+ Textures can be stored inside Virtools files or kept as references to external files.
|
||||
+ These options can be used for a specific texture (or sprite) or as a global setting.
|
||||
See also: CKBitmapData::SetSaveOptions,CKSprite::SetSaveOptions,CKContext::SetGlobalImagesSaveOptions
|
||||
*************************************************/
|
||||
typedef enum CK_TEXTURE_SAVEOPTIONS
|
||||
{
|
||||
CKTEXTURE_RAWDATA =0, // Save raw data inside file. The bitmap is saved in a raw 32 bit per pixel format.
|
||||
CKTEXTURE_EXTERNAL =1, // Store only the file name for the texture. The bitmap file must be present in the bitmap paths
|
||||
// when loading the composition.
|
||||
CKTEXTURE_IMAGEFORMAT =2, // Save using format specified. The bitmap data will be converted to the
|
||||
// specified format by the correspondant bitmap plugin and saved inside file.
|
||||
CKTEXTURE_USEGLOBAL =3, // Use Global settings, that is the settings given with CKContext::SetGlobalImagesSaveOptions. (Not valid when using CKContext::SetImagesSaveOptions).
|
||||
CKTEXTURE_INCLUDEORIGINALFILE =4, // Insert original image file inside CMO file. The bitmap file that
|
||||
// was used originally for the texture or sprite will be append to
|
||||
// the composition file and extracted when the file is loaded.
|
||||
} CK_TEXTURE_SAVEOPTIONS;
|
||||
|
||||
|
||||
/*************************************************
|
||||
{filename:CK_SOUND_SAVEOPTIONS}
|
||||
Summary: Specify the way sounds will be saved
|
||||
|
||||
Remarks :
|
||||
+ Sounds can kept as references to external files or the original sound file can
|
||||
be appended to the composition file.
|
||||
+ These options can be used for a specific sound or as a global setting.
|
||||
See also: CKSound::SetSaveOptions,CKContext::SetGlobalSoundSaveOptions
|
||||
*************************************************/
|
||||
typedef enum CK_SOUND_SAVEOPTIONS
|
||||
{
|
||||
CKSOUND_EXTERNAL =0, // Store only the file name for the sound. The sound file must be present
|
||||
// in one of the sound paths when the composition is loaded.
|
||||
CKSOUND_INCLUDEORIGINALFILE =1, // Insert original sound file inside the CMO file. The sound file that
|
||||
// was used originally will be append to the composition file and
|
||||
// extracted when the file is loaded.
|
||||
CKSOUND_USEGLOBAL =2, // Use Global settings. This flag is only valid for the CKSound::SetSaveOptions method.
|
||||
} CK_SOUND_SAVEOPTIONS;
|
||||
205
Assets/CodeGen/EnumsMigration/src/CKError.txt
Normal file
205
Assets/CodeGen/EnumsMigration/src/CKError.txt
Normal file
@@ -0,0 +1,205 @@
|
||||
// Operation successful
|
||||
|
||||
#define CKERR_OK 0
|
||||
|
||||
// One of the parameter passed to the function was invalid
|
||||
|
||||
#define CKERR_INVALIDPARAMETER -1
|
||||
|
||||
// One of the parameter passed to the function was invalid
|
||||
|
||||
#define CKERR_INVALIDPARAMETERTYPE -2
|
||||
|
||||
// The parameter size was invalid
|
||||
|
||||
#define CKERR_INVALIDSIZE -3
|
||||
|
||||
// The operation type didn't exist
|
||||
|
||||
#define CKERR_INVALIDOPERATION -4
|
||||
|
||||
// The function used to execute the operation is not yet implemented
|
||||
|
||||
#define CKERR_OPERATIONNOTIMPLEMENTED -5
|
||||
|
||||
// There was not enough memory to perform the action
|
||||
|
||||
#define CKERR_OUTOFMEMORY -6
|
||||
|
||||
// The function is not yet implemented
|
||||
|
||||
#define CKERR_NOTIMPLEMENTED -7
|
||||
|
||||
// There was an attempt to remove something not present
|
||||
|
||||
#define CKERR_NOTFOUND -11
|
||||
|
||||
// There is no level currently created
|
||||
|
||||
#define CKERR_NOLEVEL -13
|
||||
|
||||
//
|
||||
|
||||
#define CKERR_CANCREATERENDERCONTEXT -14
|
||||
|
||||
// The notification message was not used
|
||||
|
||||
#define CKERR_NOTIFICATIONNOTHANDLED -16
|
||||
|
||||
// Attempt to add an item that was already present
|
||||
|
||||
#define CKERR_ALREADYPRESENT -17
|
||||
|
||||
// the render context is not valid
|
||||
|
||||
#define CKERR_INVALIDRENDERCONTEXT -18
|
||||
|
||||
// the render context is not activated for rendering
|
||||
|
||||
#define CKERR_RENDERCONTEXTINACTIVE -19
|
||||
|
||||
// there was no plugins to load this kind of file
|
||||
|
||||
#define CKERR_NOLOADPLUGINS -20
|
||||
|
||||
// there was no plugins to save this kind of file
|
||||
|
||||
#define CKERR_NOSAVEPLUGINS -21
|
||||
|
||||
// attempt to load an invalid file
|
||||
|
||||
#define CKERR_INVALIDFILE -22
|
||||
|
||||
// attempt to load with an invalid plugin
|
||||
|
||||
#define CKERR_INVALIDPLUGIN -23
|
||||
|
||||
// attempt use an object that wasnt initialized
|
||||
|
||||
#define CKERR_NOTINITIALIZED -24
|
||||
|
||||
// attempt use a message type that wasn't registred
|
||||
|
||||
#define CKERR_INVALIDMESSAGE -25
|
||||
|
||||
// attempt use an invalid prototype
|
||||
|
||||
#define CKERR_INVALIDPROTOTYPE -28
|
||||
|
||||
// No dll file found in the parse directory
|
||||
|
||||
#define CKERR_NODLLFOUND -29
|
||||
|
||||
// this dll has already been registred
|
||||
|
||||
#define CKERR_ALREADYREGISTREDDLL -30
|
||||
|
||||
// this dll does not contain information to create the prototype
|
||||
|
||||
#define CKERR_INVALIDDLL -31
|
||||
|
||||
// Invalid Object (attempt to Get an object from an invalid ID)
|
||||
|
||||
#define CKERR_INVALIDOBJECT -34
|
||||
|
||||
// Invalid window was provided as console window
|
||||
|
||||
#define CKERR_INVALIDCONDSOLEWINDOW -35
|
||||
|
||||
// Invalid kinematic chain ( end and start effector may not be part of the same hierarchy )
|
||||
|
||||
#define CKERR_INVALIDKINEMATICCHAIN -36
|
||||
|
||||
|
||||
// Keyboard not attached or not working properly
|
||||
|
||||
#define CKERR_NOKEYBOARD -37
|
||||
|
||||
// Mouse not attached or not working properly
|
||||
|
||||
#define CKERR_NOMOUSE -38
|
||||
|
||||
// Joystick not attached or not working properly
|
||||
|
||||
#define CKERR_NOJOYSTICK -39
|
||||
|
||||
// Try to link imcompatible Parameters
|
||||
|
||||
#define CKERR_INCOMPATIBLEPARAMETERS -40
|
||||
|
||||
// There is no render engine dll
|
||||
|
||||
#define CKERR_NORENDERENGINE -44
|
||||
|
||||
// There is no current level (use CKSetCurrentLevel )
|
||||
|
||||
#define CKERR_NOCURRENTLEVEL -45
|
||||
|
||||
// Sound Management has been disabled
|
||||
|
||||
#define CKERR_SOUNDDISABLED -46
|
||||
|
||||
// DirectInput Management has been disabled
|
||||
|
||||
#define CKERR_DINPUTDISABLED -47
|
||||
|
||||
// Guid is already in use or invalid
|
||||
|
||||
#define CKERR_INVALIDGUID -48
|
||||
|
||||
// There was no more free space on disk when trying to save a file
|
||||
|
||||
#define CKERR_NOTENOUGHDISKPLACE -49
|
||||
|
||||
// Impossible to write to file (write-protection ?)
|
||||
|
||||
#define CKERR_CANTWRITETOFILE -50
|
||||
|
||||
// The behavior cannnot be added to this entity
|
||||
|
||||
#define CKERR_BEHAVIORADDDENIEDBYCB -51
|
||||
|
||||
// The behavior cannnot be added to this entity
|
||||
|
||||
#define CKERR_INCOMPATIBLECLASSID -52
|
||||
|
||||
// A manager was registered more than once
|
||||
|
||||
#define CKERR_MANAGERALREADYEXISTS -53
|
||||
|
||||
// CKprocess or TimeManager process while CK is paused will fail
|
||||
|
||||
#define CKERR_PAUSED -54
|
||||
|
||||
// Some plugins were missing whileloading a file
|
||||
|
||||
#define CKERR_PLUGINSMISSING -55
|
||||
|
||||
// Virtools version too old to load this file
|
||||
|
||||
#define CKERR_OBSOLETEVIRTOOLS -56
|
||||
|
||||
// CRC Error while loading file
|
||||
|
||||
#define CKERR_FILECRCERROR -57
|
||||
|
||||
// A Render context is already in Fullscreen Mode
|
||||
|
||||
#define CKERR_ALREADYFULLSCREEN -58
|
||||
|
||||
// Operation was cancelled by user
|
||||
|
||||
#define CKERR_CANCELLED -59
|
||||
|
||||
|
||||
// there were no animation key at the given index
|
||||
|
||||
#define CKERR_NOANIMATIONKEY -121
|
||||
|
||||
// attemp to acces an animation key with an invalid index
|
||||
|
||||
#define CKERR_INVALIDINDEX -122
|
||||
|
||||
// the animation is invalid (no entity associated or zero length)
|
||||
|
||||
#define CKERR_INVALIDANIMATION -123
|
||||
14
Assets/CodeGen/EnumsMigration/src/CK_BITMAPDATA_FLAGS.txt
Normal file
14
Assets/CodeGen/EnumsMigration/src/CK_BITMAPDATA_FLAGS.txt
Normal file
@@ -0,0 +1,14 @@
|
||||
|
||||
#define CKBITMAPDATA_INVALID 1
|
||||
|
||||
#define CKBITMAPDATA_TRANSPARENT 2
|
||||
|
||||
#define CKBITMAPDATA_FORCERESTORE 4
|
||||
|
||||
#define CKBITMAPDATA_CLAMPUPTODATE 8
|
||||
|
||||
#define CKBITMAPDATA_CUBEMAP 16
|
||||
|
||||
#define CKBITMAPDATA_FREEVIDEOMEMORY 32
|
||||
|
||||
#define CKBITMAPDATA_DYNAMIC 64
|
||||
@@ -0,0 +1,4 @@
|
||||
|
||||
#define CK_PERSPECTIVEPROJECTION 1
|
||||
|
||||
#define CK_ORTHOGRAPHICPROJECTION 2
|
||||
69
Assets/CodeGen/EnumsMigration/src/CK_CLASSID.txt
Normal file
69
Assets/CodeGen/EnumsMigration/src/CK_CLASSID.txt
Normal file
@@ -0,0 +1,69 @@
|
||||
#define CKCID_OBJECT 1
|
||||
#define CKCID_PARAMETERIN 2
|
||||
#define CKCID_PARAMETEROPERATION 4
|
||||
#define CKCID_STATE 5
|
||||
#define CKCID_BEHAVIORLINK 6
|
||||
#define CKCID_BEHAVIOR 8
|
||||
#define CKCID_BEHAVIORIO 9
|
||||
#define CKCID_RENDERCONTEXT 12
|
||||
#define CKCID_KINEMATICCHAIN 13
|
||||
#define CKCID_SCENEOBJECT 11
|
||||
#define CKCID_OBJECTANIMATION 15
|
||||
#define CKCID_ANIMATION 16
|
||||
#define CKCID_KEYEDANIMATION 18
|
||||
#define CKCID_BEOBJECT 19
|
||||
#define CKCID_DATAARRAY 52
|
||||
#define CKCID_SCENE 10
|
||||
#define CKCID_LEVEL 21
|
||||
#define CKCID_PLACE 22
|
||||
#define CKCID_GROUP 23
|
||||
#define CKCID_SOUND 24
|
||||
#define CKCID_WAVESOUND 25
|
||||
#define CKCID_MIDISOUND 26
|
||||
#define CKCID_MATERIAL 30
|
||||
#define CKCID_TEXTURE 31
|
||||
#define CKCID_MESH 32
|
||||
#define CKCID_PATCHMESH 53
|
||||
#define CKCID_RENDEROBJECT 47
|
||||
#define CKCID_2DENTITY 27
|
||||
#define CKCID_SPRITE 28
|
||||
#define CKCID_SPRITETEXT 29
|
||||
#define CKCID_3DENTITY 33
|
||||
#define CKCID_GRID 50
|
||||
#define CKCID_CURVEPOINT 36
|
||||
#define CKCID_SPRITE3D 37
|
||||
#define CKCID_CURVE 43
|
||||
#define CKCID_CAMERA 34
|
||||
#define CKCID_TARGETCAMERA 35
|
||||
#define CKCID_LIGHT 38
|
||||
#define CKCID_TARGETLIGHT 39
|
||||
#define CKCID_CHARACTER 40
|
||||
#define CKCID_3DOBJECT 41
|
||||
#define CKCID_BODYPART 42
|
||||
#define CKCID_PARAMETER 46
|
||||
#define CKCID_PARAMETERLOCAL 45
|
||||
#define CKCID_PARAMETEROUT 3
|
||||
#define CKCID_INTERFACEOBJECTMANAGER 48
|
||||
#define CKCID_CRITICALSECTION 49
|
||||
#define CKCID_LAYER 51
|
||||
#define CKCID_PROGRESSIVEMESH 54
|
||||
#define CKCID_SYNCHRO 20
|
||||
|
||||
#define CKCID_OBJECTARRAY 80
|
||||
#define CKCID_SCENEOBJECTDESC 81
|
||||
#define CKCID_ATTRIBUTEMANAGER 82
|
||||
#define CKCID_MESSAGEMANAGER 83
|
||||
#define CKCID_COLLISIONMANAGER 84
|
||||
#define CKCID_OBJECTMANAGER 85
|
||||
#define CKCID_FLOORMANAGER 86
|
||||
#define CKCID_RENDERMANAGER 87
|
||||
#define CKCID_BEHAVIORMANAGER 88
|
||||
#define CKCID_INPUTMANAGER 89
|
||||
#define CKCID_PARAMETERMANAGER 90
|
||||
#define CKCID_GRIDMANAGER 91
|
||||
#define CKCID_SOUNDMANAGER 92
|
||||
#define CKCID_TIMEMANAGER 93
|
||||
#define CKCID_CUIKBEHDATA -1
|
||||
|
||||
#define CKCID_MAXCLASSID 55
|
||||
#define CKCID_MAXMAXCLASSID 128
|
||||
@@ -0,0 +1,6 @@
|
||||
|
||||
#define CHUNK_VERSIONBASE 0
|
||||
#define CHUNK_VERSION1 4 // equal to file version : WriteObjectID => table
|
||||
#define CHUNK_VERSION2 5 // add Manager Data
|
||||
#define CHUNK_VERSION3 6 // New ConvertToBuffer / ReadFromBuffer (file system changed to reflect this )
|
||||
#define CHUNK_VERSION4 7 // New WriteObjectID when saving to a file
|
||||
@@ -0,0 +1,14 @@
|
||||
|
||||
#define CHUNKDATA_OLDVERSION 0 // Before any version was saved
|
||||
#define CHUNKDATA_BASEVERSION 1 // First version
|
||||
#define CHUNK_WAVESOUND_VERSION2 2 // Changes in wavesound format
|
||||
#define CHUNK_WAVESOUND_VERSION3 3 // Changes in wavesound format
|
||||
#define CHUNK_MATERIAL_VERSION_ZTEST 4 // Change in material save format
|
||||
#define CHUNK_MAJORCHANGE_VERSION 5 // Optimisations on many save functions
|
||||
#define CHUNK_MACCHANGE_VERSION 6 // Misc new Statechunk functions for macintosh (Big-Endian <-> Little Endian conversion )
|
||||
#define CHUNK_WAVESOUND_VERSION4 7 // Changes in wavesound format (Added sound length)
|
||||
#define CHUNK_SCENECHANGE_VERSION 8 // Changes in sceneObjectDesc format (Remove lasttimevalue)
|
||||
#define CHUNK_MESHCHANGE_VERSION 9 // Changes in Mesh save format (primitives)
|
||||
#define CHUNK_DEV_2_1 10 // Changes in wavesound reading of inside, outside angles
|
||||
|
||||
#define CHUNKDATA_CURRENTVERSION CHUNK_DEV_2_1
|
||||
722
Assets/CodeGen/EnumsMigration/src/Defines2.txt
Normal file
722
Assets/CodeGen/EnumsMigration/src/Defines2.txt
Normal file
@@ -0,0 +1,722 @@
|
||||
|
||||
//------------------------------------------------
|
||||
// Object
|
||||
typedef enum CK_STATESAVEFLAGS_OBJECT {
|
||||
CK_STATESAVE_NAME = 0x00000001, // Obsolete
|
||||
CK_STATESAVE_ID = 0x00000002, // Obsolete
|
||||
CK_STATESAVE_OBJECTHIDDEN = 0x00000004, // The object is hidden
|
||||
CK_STATESAVE_OBJECTHIERAHIDDEN = 0x00000018, // The object is hidden hierarchically
|
||||
CK_STATESAVE_OBJECTALL = 0x0000000F
|
||||
} CK_STATESAVEFLAGS_OBJECT;
|
||||
|
||||
|
||||
//------------------------------------------------
|
||||
// Be Object
|
||||
typedef enum CK_STATESAVEFLAGS_BEOBJECT
|
||||
{
|
||||
CK_STATESAVE_ATTRIBUTES = 0x00000010, // Obsolete
|
||||
CK_STATESAVE_NEWATTRIBUTES = 0x00000011, // Save Attributes
|
||||
CK_STATESAVE_GROUPS = 0x00000020, // Obsolete
|
||||
CK_STATESAVE_DATAS = 0x00000040, // Save Flags and (Waiting for message) status
|
||||
CK_STATESAVE_SOUNDS = 0x00000080, // Obsolete
|
||||
CK_STATESAVE_BEHAVIORS = 0x00000100, // Obsolete
|
||||
CK_STATESAVE_PARAMETERS = 0x00000200, // Obsolete
|
||||
CK_STATESAVE_SINGLEACTIVITY = 0x00000400, // SINGLE ACTIVITY
|
||||
CK_STATESAVE_SCRIPTS = 0x00000800, // Obsolete
|
||||
CK_STATESAVE_BEOBJECTONLY = 0x00000FF0, // Save only BeObject specific datas
|
||||
CK_STATESAVE_BEOBJECTALL = 0x00000FFF // Save All datas
|
||||
} CK_STATESAVEFLAGS_BEOBJECT;
|
||||
|
||||
|
||||
//------------------------------------------------
|
||||
// 3dEntity
|
||||
typedef enum CK_STATESAVEFLAGS_3DENTITY
|
||||
{
|
||||
CK_STATESAVE_3DENTITYSKINDATANORMALS = 0x00001000, // Save Skin normals
|
||||
CK_STATESAVE_ANIMATION = 0x00002000, // Obsolete
|
||||
CK_STATESAVE_MESHS = 0x00004000, // Save List of mesh
|
||||
CK_STATESAVE_PARENT = 0x00008000, // Save Parent
|
||||
CK_STATESAVE_3DENTITYFLAGS = 0x00010000, // Save Flags
|
||||
CK_STATESAVE_3DENTITYMATRIX = 0x00020000, // Save Position/orientation/Scale
|
||||
CK_STATESAVE_3DENTITYHIERARCHY = 0x00040000, // obsolete
|
||||
CK_STATESAVE_3DENTITYPLACE = 0x00080000, // Save Place in which the Entity is referenced
|
||||
CK_STATESAVE_3DENTITYNDATA = 0x00100000, // Reserved for future use
|
||||
CK_STATESAVE_3DENTITYSKINDATA = 0x00200000, // Save Skin data
|
||||
CK_STATESAVE_3DENTITYONLY = 0x003FF000, // Save only 3dEntity specific datas
|
||||
CK_STATESAVE_3DENTITYALL = 0x003FFFFF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_3DENTITY;
|
||||
|
||||
//------------------------------------------------
|
||||
// Light
|
||||
typedef enum CK_STATESAVEFLAGS_LIGHT
|
||||
{
|
||||
CK_STATESAVE_LIGHTDATA = 0x00400000, // Save Color,Type,Attenuation,Range and cone
|
||||
CK_STATESAVE_LIGHTDATA2 = 0x00800000, // Reserved for future use
|
||||
CK_STATESAVE_LIGHTRESERVED1 = 0x01000000, // Reserved for future use
|
||||
CK_STATESAVE_LIGHTRESERVED2 = 0x02000000, // Reserved for future use
|
||||
CK_STATESAVE_LIGHTRESERVED3 = 0x04000000, // Reserved for future use
|
||||
CK_STATESAVE_LIGHTRESERVED4 = 0x08000000, // Reserved for future use
|
||||
CK_STATESAVE_LIGHTONLY = 0x0FC00000, // Save only Light specific datas
|
||||
CK_STATESAVE_LIGHTALL = 0x0FFFFFFF, // Save All datas for sub-classes
|
||||
// Target Light
|
||||
CK_STATESAVE_TLIGHTTARGET = 0x80000000, // Save Light Target
|
||||
CK_STATESAVE_TLIGHTRESERVED0 = 0x10000000, // Reserved for future use
|
||||
CK_STATESAVE_TLIGHTRESERVED1 = 0x20000000, // Reserved for future use
|
||||
CK_STATESAVE_TLIGHTRESERVED2 = 0x40000000, // Reserved for future use
|
||||
CK_STATESAVE_TLIGHTONLY = 0xF0000000, // Save only Target Light specific datas
|
||||
CK_STATESAVE_TLIGHTALL = 0xFFFFFFFF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_LIGHT;
|
||||
|
||||
//--------------------------------------------------
|
||||
// Camera
|
||||
typedef enum CK_STATESAVEFLAGS_CAMERA
|
||||
{
|
||||
CK_STATESAVE_CAMERAFOV = 0x00400000, // Save Camera Field of View
|
||||
CK_STATESAVE_CAMERAPROJTYPE = 0x00800000, // Save Camera projection type
|
||||
CK_STATESAVE_CAMERAOTHOZOOM = 0x01000000, // Save Camera orhographic zoom
|
||||
CK_STATESAVE_CAMERAASPECT = 0x02000000, // Save Camera aspect ration
|
||||
CK_STATESAVE_CAMERAPLANES = 0x04000000, // Save Camera near and far clip planes
|
||||
CK_STATESAVE_CAMERARESERVED2 = 0x08000000, // Reserved for future use
|
||||
CK_STATESAVE_CAMERAONLY = 0x0FC00000, // Save only camera specific datas
|
||||
CK_STATESAVE_CAMERAALL = 0x0FFFFFFF, // Save All datas for sub-classes
|
||||
// Target Camera
|
||||
CK_STATESAVE_TCAMERATARGET = 0x10000000, // Save camera Target
|
||||
CK_STATESAVE_TCAMERARESERVED1 = 0x20000000, // Reserved for future use
|
||||
CK_STATESAVE_TCAMERARESERVED2 = 0x40000000, // Reserved for future use
|
||||
CK_STATESAVE_TCAMERAONLY = 0x70000000, // Save only Target camera specific datas
|
||||
CK_STATESAVE_TCAMERAALL = 0x7FFFFFFF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_CAMERA;
|
||||
|
||||
|
||||
//--------------------------------------------------
|
||||
// Sprite3D
|
||||
typedef enum CK_STATESAVEFLAGS_SPRITE3D
|
||||
{
|
||||
CK_STATESAVE_SPRITE3DDATA = 0x00400000, // Save offset,mapping,size and material
|
||||
CK_STATESAVE_SPRITE3DRESERVED0 = 0x00800000, // Reserved for future use
|
||||
CK_STATESAVE_SPRITE3DRESERVED1 = 0x01000000, // Reserved for future use
|
||||
CK_STATESAVE_SPRITE3DRESERVED2 = 0x02000000, // Reserved for future use
|
||||
CK_STATESAVE_SPRITE3DRESERVED3 = 0x04000000, // Reserved for future use
|
||||
CK_STATESAVE_SPRITE3DRESERVED4 = 0x08000000, // Reserved for future use
|
||||
CK_STATESAVE_SPRITE3DONLY = 0x0FC00000, // Save only Sprite3D specific datas
|
||||
CK_STATESAVE_SPRITE3DALL = 0x0FFFFFFF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_SPRITE3D;
|
||||
|
||||
//--------------------------------------------------
|
||||
// Object 3D
|
||||
typedef enum CK_STATESAVEFLAGS_3DOBJECT
|
||||
{
|
||||
CK_STATESAVE_3DOBJECTATTRIBUTES = 0x00400000, // Obsolete
|
||||
CK_STATESAVE_3DOBJECTRESERVED = 0x00800000, // Reserved for future use
|
||||
CK_STATESAVE_3DOBJECTRONLY = 0x00C00000, // Save only 3dObject specific datas
|
||||
CK_STATESAVE_3DOBJECTALL = 0x03FFFFFF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_3DOBJECT;
|
||||
|
||||
//--------------------------------------------------
|
||||
// BodyPart
|
||||
typedef enum CK_STATESAVEFLAGS_BODYPART
|
||||
{
|
||||
CK_STATESAVE_BODYPARTROTJOINT = 0x01000000, // Save rotation joint data
|
||||
CK_STATESAVE_BODYPARTPOSJOINT = 0x02000000, // Save position joint data
|
||||
CK_STATESAVE_BODYPARTCHARACTER = 0x04000000, // Save character owning this bodypart
|
||||
CK_STATESAVE_BODYPARTRESERVED1 = 0x08000000, // Reserved for future use
|
||||
CK_STATESAVE_BODYPARTRESERVED2 = 0x10000000, // Reserved for future use
|
||||
CK_STATESAVE_BODYPARTRESERVED3 = 0x20000000, // Reserved for future use
|
||||
CK_STATESAVE_BODYPARTRESERVED4 = 0x40000000, // Reserved for future use
|
||||
CK_STATESAVE_BODYPARTONLY = 0x7F000000, // Save only bodypart specific datas
|
||||
CK_STATESAVE_BODYPARTALL = 0x7FFFFFFF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_BODYPART;
|
||||
|
||||
//--------------------------------------------------
|
||||
// Character
|
||||
typedef enum CK_STATESAVEFLAGS_CHARACTER
|
||||
{
|
||||
CK_STATESAVE_CHARACTERBODYPARTS = 0x00400000, // Obsolete
|
||||
CK_STATESAVE_CHARACTERKINECHAINS = 0x00800000, // Obsolete
|
||||
CK_STATESAVE_CHARACTERANIMATIONS = 0x01000000, // Obsolete
|
||||
CK_STATESAVE_CHARACTERROOT = 0x02000000, // Obsolete
|
||||
CK_STATESAVE_CHARACTERSAVEANIMS = 0x04000000, // Save current and next active animations
|
||||
CK_STATESAVE_CHARACTERSAVECHAINS = 0x08000000, // Obsolete
|
||||
CK_STATESAVE_CHARACTERSAVEPARTS = 0x10000000, // Save sub bodyparts and sub-bodyparts data (saved with flag :CK_STATESAVE_BODYPARTALL)
|
||||
CK_STATESAVE_CHARACTERFLOORREF = 0x20000000, // Save Character floor reference object
|
||||
CK_STATESAVE_CHARACTERRESERVED2 = 0x40000000, // Reserved for future use
|
||||
CK_STATESAVE_CHARACTERRESERVED3 = 0x80000000, // Reserved for future use
|
||||
CK_STATESAVE_CHARACTERONLY = 0xFFC00000, // Save only character specific datas
|
||||
CK_STATESAVE_CHARACTERALL = 0xFFFFFFFF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_CHARACTER;
|
||||
|
||||
//--------------------------------------------------
|
||||
// CURVE
|
||||
// && Curve Point
|
||||
typedef enum CK_STATESAVEFLAGS_CURVE
|
||||
{
|
||||
CK_STATESAVE_CURVEFITCOEFF = 0x00400000, // Save fitting coef
|
||||
CK_STATESAVE_CURVECONTROLPOINT = 0x00800000, // Save list of control points
|
||||
CK_STATESAVE_CURVESTEPS = 0x01000000, // Save number of step setting
|
||||
CK_STATESAVE_CURVEOPEN = 0x02000000, // Save Open/Close flag
|
||||
CK_STATESAVE_CURVERESERVED1 = 0x04000000, // Reserved for future use
|
||||
CK_STATESAVE_CURVERESERVED2 = 0x08000000, // Reserved for future use
|
||||
// Control points
|
||||
CK_STATESAVE_CURVEPOINTDEFAULTDATA = 0x10000000, // Save Control point setting and position
|
||||
CK_STATESAVE_CURVEPOINTTCB = 0x20000000, // Save Control point tcb settings
|
||||
CK_STATESAVE_CURVEPOINTTANGENTS = 0x40000000, // Save Control point tangents
|
||||
CK_STATESAVE_CURVEPOINTCURVEPOS = 0x80000000, // Save Control point position in curve
|
||||
CK_STATESAVE_CURVESAVEPOINTS = 0xFF000000, // Save control points data
|
||||
|
||||
CK_STATESAVE_CURVEONLY = 0xFFC00000, // Save only curve specific data
|
||||
CK_STATESAVE_CURVEALL = 0xFFFFFFFF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_CURVE;
|
||||
|
||||
//------------------------------------------------
|
||||
// 2dEntity
|
||||
typedef enum CK_STATESAVEFLAGS_2DENTITY
|
||||
{
|
||||
CK_STATESAVE_2DENTITYSRCSIZE = 0x00001000, // Save source size
|
||||
CK_STATESAVE_2DENTITYSIZE = 0x00002000, // Save size
|
||||
CK_STATESAVE_2DENTITYFLAGS = 0x00004000, // Save Flags
|
||||
CK_STATESAVE_2DENTITYPOS = 0x00008000, // Save position
|
||||
CK_STATESAVE_2DENTITYZORDER = 0x00100000, // Save Z order
|
||||
CK_STATESAVE_2DENTITYONLY = 0x0010F000, // Save only 2dEntity specific data
|
||||
CK_STATESAVE_2DENTITYMATERIAL = 0x00200000, // Save Material
|
||||
CK_STATESAVE_2DENTITYHIERARCHY = 0x00400000, // Save Material
|
||||
CK_STATESAVE_2DENTITYALL = 0x0070FFFF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_2DENTITY;
|
||||
|
||||
//------------------------------------------------
|
||||
// Sprite
|
||||
typedef enum CK_STATESAVEFLAGS_SPRITE
|
||||
{
|
||||
CK_STATESAVE_SPRITECURRENTIMAGE = 0x00010000, // Save current image
|
||||
CK_STATESAVE_SPRITETRANSPARENT = 0x00020000, // Save transparency settings
|
||||
CK_STATESAVE_SPRITEBITMAPS = 0x00040000, // Obsolete
|
||||
CK_STATESAVE_SPRITESHARED = 0x00080000, // Save shared sprite
|
||||
CK_STATESAVE_SPRITEDONOTUSE = 0x00100000, // Reseved by CK_STATESAVEFLAGS_2DENTITY
|
||||
CK_STATESAVE_SPRITEAVIFILENAME = 0x00200000, // Obsolete
|
||||
CK_STATESAVE_SPRITEFILENAMES = 0x00400000, // Obsolete
|
||||
CK_STATESAVE_SPRITECOMPRESSED = 0x00800000, // Obsolete
|
||||
CK_STATESAVE_SPRITEREADER = 0x10000000, // Reserved for future use
|
||||
CK_STATESAVE_SPRITEFORMAT = 0x20000000, // Reserved for future use
|
||||
CK_STATESAVE_SPRITEVIDEOFORMAT = 0x40000000, // Video Format
|
||||
CK_STATESAVE_SPRITESYSTEMCACHING = 0x80000000, // System Memory Caching
|
||||
CK_STATESAVE_SPRITERENDEROPTIONS = 0x80800000, // Render options if any...
|
||||
CK_STATESAVE_SPRITEONLY = 0xF0EF0000, // Save only sprite specific data
|
||||
CK_STATESAVE_SPRITEALL = 0x70FFFFFF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_SPRITE;
|
||||
|
||||
|
||||
//------------------------------------------------
|
||||
// Sprite Text
|
||||
typedef enum CK_STATESAVEFLAGS_SPRITETEXT
|
||||
{
|
||||
CK_STATESAVE_SPRITETEXT = 0x01000000, // Save text
|
||||
CK_STATESAVE_SPRITEFONT = 0x02000000, // Save font settings
|
||||
CK_STATESAVE_SPRITETEXTCOLOR = 0x04000000, // Save text color
|
||||
CK_STATESAVE_SPRITETEXTRESERVED = 0x08000000, // Reserved for future use
|
||||
CK_STATESAVE_SPRITETEXTDOTNOTUSE = 0x10000000, // Reserved by CK_STATESAVE_SPRITEREADER
|
||||
CK_STATESAVE_SPRITETEXTDONOTUSED2 = 0x20000000, // Reserved by CK_STATESAVE_SPRITEFORMAT
|
||||
CK_STATESAVE_SPRITETEXTONLY = 0x0F000000, // Save only SpriteText specific data
|
||||
CK_STATESAVE_SPRITETEXTALL = 0x3FFFFFFF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_SPRITETEXT;
|
||||
|
||||
//------------------------------------------------
|
||||
// Sound
|
||||
typedef enum CK_STATESAVEFLAGS_SOUND
|
||||
{
|
||||
CK_STATESAVE_SOUNDFILENAME = 0x00001000, // Reserved for future use
|
||||
CK_STATESAVE_SOUNDRESERVED1 = 0x00002000, // Reserved for future use
|
||||
CK_STATESAVE_SOUNDRESERVED2 = 0x00004000, // Reserved for future use
|
||||
CK_STATESAVE_SOUNDRESERVED3 = 0x00008000, // Reserved for future use
|
||||
CK_STATESAVE_SOUNDRESERVED4 = 0x00010000, // Reserved for future use
|
||||
CK_STATESAVE_SOUNDRESERVED5 = 0x00020000, // Reserved for future use
|
||||
CK_STATESAVE_SOUNDRESERVED6 = 0x00040000, // Reserved for future use
|
||||
CK_STATESAVE_SOUNDRESERVED7 = 0x00080000, // Reserved for future use
|
||||
CK_STATESAVE_SOUNDONLY = 0x000FF000, // Save only Sound specific data
|
||||
CK_STATESAVE_SOUNDALL = 0x000FFFFF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_SOUND;
|
||||
|
||||
//------------------------------------------------
|
||||
// Wave Sound
|
||||
typedef enum CK_STATESAVEFLAGS_WAVSOUND
|
||||
{
|
||||
CK_STATESAVE_WAVSOUNDFILE = 0x00100000, // Save sound filename
|
||||
CK_STATESAVE_WAVSOUNDDATA = 0x00200000, // Obsolete
|
||||
CK_STATESAVE_WAVSOUNDDATA2 = 0x00400000, // Save sound properties (3D/2D,pitch,gain,streaming,loop,etc..)
|
||||
CK_STATESAVE_WAVSOUNDDURATION = 0x00800000, // Sound Length (in case it cannot be calculated latter)
|
||||
CK_STATESAVE_WAVSOUNDRESERVED4 = 0x01000000, // Reserved for future use
|
||||
CK_STATESAVE_WAVSOUNDRESERVED5 = 0x02000000, // Reserved for future use
|
||||
CK_STATESAVE_WAVSOUNDRESERVED6 = 0x04000000, // Reserved for future use
|
||||
CK_STATESAVE_WAVSOUNDRESERVED7 = 0x08000000, // Reserved for future use
|
||||
CK_STATESAVE_WAVSOUNDONLY = 0x0FF00000, // Save All datas for sub-classes
|
||||
CK_STATESAVE_WAVSOUNDALL = 0x0FFFFFFF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_WAVSOUND;
|
||||
|
||||
|
||||
//------------------------------------------------
|
||||
// Wave Sound
|
||||
typedef enum CK_STATESAVEFLAGS_MIDISOUND
|
||||
{
|
||||
CK_STATESAVE_MIDISOUNDFILE = 0x00100000, // Save sound filename
|
||||
CK_STATESAVE_MIDISOUNDDATA = 0x00200000, // Save midi data
|
||||
CK_STATESAVE_MIDISOUNDRESERVED2 = 0x00400000, // Reserved for future use
|
||||
CK_STATESAVE_MIDISOUNDRESERVED3 = 0x00800000, // Reserved for future use
|
||||
CK_STATESAVE_MIDISOUNDRESERVED4 = 0x01000000, // Reserved for future use
|
||||
CK_STATESAVE_MIDISOUNDRESERVED5 = 0x02000000, // Reserved for future use
|
||||
CK_STATESAVE_MIDISOUNDRESERVED6 = 0x04000000, // Reserved for future use
|
||||
CK_STATESAVE_MIDISOUNDRESERVED7 = 0x08000000, // Reserved for future use
|
||||
CK_STATESAVE_MIDISOUNDONLY = 0x0FF00000,
|
||||
CK_STATESAVE_MIDISOUNDALL = 0x0FFFFFFF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_MIDISOUND;
|
||||
|
||||
|
||||
//------------------------------------------------
|
||||
// Place
|
||||
typedef enum CK_STATESAVEFLAGS_PLACE
|
||||
{
|
||||
CK_STATESAVE_PLACEPORTALS = 0x00001000, // Save level using the place
|
||||
CK_STATESAVE_PLACECAMERA = 0x00002000, // Save attached camera
|
||||
CK_STATESAVE_PLACEREFERENCES = 0x00004000, // Save list of objects in the place
|
||||
CK_STATESAVE_PLACELEVEL = 0x00008000, // Save level using the place
|
||||
CK_STATESAVE_PLACEALL = 0x0000FFFF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_PLACE;
|
||||
|
||||
//------------------------------------------------
|
||||
// Level
|
||||
// CKSaveObjectState will not save any data
|
||||
typedef enum CK_STATESAVEFLAGS_LEVEL
|
||||
{
|
||||
CK_STATESAVE_LEVELRESERVED0 = 0x00001000, // Reserved for future use
|
||||
CK_STATESAVE_LEVELINACTIVEMAN = 0x00002000, // Reserved for future use
|
||||
CK_STATESAVE_LEVELDUPLICATEMAN = 0x00004000, // Reserved for future use
|
||||
CK_STATESAVE_LEVELDEFAULTDATA = 0x20000000, // Save Places,Scenes and Objects
|
||||
CK_STATESAVE_LEVELSCENE = 0x80000000, // Default and active scene
|
||||
CK_STATESAVE_LEVELALL = 0xFFFFFFFF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_LEVEL;
|
||||
|
||||
|
||||
|
||||
|
||||
//------------------------------------------------
|
||||
// GROUP
|
||||
typedef enum CK_STATESAVEFLAGS_GROUP
|
||||
{
|
||||
CK_STATESAVE_GROUPDATA = 0x00001000, // Save list of objects in the group
|
||||
CK_STATESAVE_GROUPRESERVED1 = 0x00002000, // Reserved for future use
|
||||
CK_STATESAVE_GROUPRESERVED2 = 0x00004000, // Reserved for future use
|
||||
CK_STATESAVE_GROUPRESERVED3 = 0x00008000, // Reserved for future use
|
||||
CK_STATESAVE_GROUPRESERVED4 = 0x00010000, // Reserved for future use
|
||||
CK_STATESAVE_GROUPRESERVED5 = 0x00020000, // Reserved for future use
|
||||
CK_STATESAVE_GROUPRESERVED6 = 0x00040000, // Reserved for future use
|
||||
CK_STATESAVE_GROUPRESERVED7 = 0x00080000, // Reserved for future use
|
||||
CK_STATESAVE_GROUPALL = 0x000FFFFF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_GROUP;
|
||||
|
||||
|
||||
//------------------------------------------------
|
||||
// MESH
|
||||
// CKSaveOjectSave will save all data and does not take flags into account
|
||||
typedef enum CK_STATESAVEFLAGS_MESH
|
||||
{
|
||||
CK_STATESAVE_MESHRESERVED0 = 0x00001000, // Reserved for future use
|
||||
CK_STATESAVE_MESHFLAGS = 0x00002000, // Save flags
|
||||
CK_STATESAVE_MESHCHANNELS = 0x00004000, // Save Channels
|
||||
CK_STATESAVE_MESHFACECHANMASK = 0x00008000, // Save face channel Mask
|
||||
CK_STATESAVE_MESHFACES = 0x00010000, // Save face data
|
||||
CK_STATESAVE_MESHVERTICES = 0x00020000, // Save geometry
|
||||
CK_STATESAVE_MESHLINES = 0x00040000, // Save line data
|
||||
CK_STATESAVE_MESHWEIGHTS = 0x00080000, // Save Vertex Weight info
|
||||
CK_STATESAVE_MESHMATERIALS = 0x00100000, // Reserved for future use
|
||||
CK_STATESAVE_MESHRESERVED1 = 0x00200000, // Reserved for future use
|
||||
CK_STATESAVE_MESHRESERVED2 = 0x00400000, // Reserved for future use
|
||||
CK_STATESAVE_PROGRESSIVEMESH = 0x00800000, // Save All datas for sub-classes
|
||||
CK_STATESAVE_MESHONLY = 0x00FFF000, // Save All datas for sub-classes
|
||||
CK_STATESAVE_MESHALL = 0x00FFFFFF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_MESH;
|
||||
|
||||
|
||||
//------------------------------------------------
|
||||
// PATCH MESH
|
||||
// CKSaveOjectSave will save all data and does not take flags into account
|
||||
typedef enum CK_STATESAVEFLAGS_PATCHMESH
|
||||
{
|
||||
CK_STATESAVE_PATCHMESHDATA = 0x00800000, // Obsolete
|
||||
CK_STATESAVE_PATCHMESHDATA2 = 0x01000000, // Obsolete
|
||||
CK_STATESAVE_PATCHMESHSMOOTH = 0x02000000, // Obsolete
|
||||
CK_STATESAVE_PATCHMESHMATERIALS = 0x04000000, // Obsolete
|
||||
CK_STATESAVE_PATCHMESHDATA3 = 0x08000000, // Save Patch Data
|
||||
CK_STATESAVE_PATCHMESHONLY = 0x0FF00000, // Save All datas for sub-classes
|
||||
CK_STATESAVE_PATCHMESHALL = 0x0FFFFFFF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_PATCHMESH;
|
||||
|
||||
//-------------------------------------------------
|
||||
// Material
|
||||
typedef enum CK_STATESAVEFLAGS_MATERIAL
|
||||
{
|
||||
CK_STATESAVE_MATDATA = 0x00001000, // Save colors,blending modes,shade modes,fill modes etc...
|
||||
CK_STATESAVE_MATDATA2 = 0x00002000, // Additional texture objects...
|
||||
CK_STATESAVE_MATDATA3 = 0x00004000, // Effect Alone
|
||||
CK_STATESAVE_MATDATA4 = 0x00008000, // none
|
||||
CK_STATESAVE_MATDATA5 = 0x00010000, // Effect + parameter
|
||||
CK_STATESAVE_MATRESERVED5 = 0x00020000, // Reserved for future use
|
||||
CK_STATESAVE_MATRESERVED6 = 0x00040000, // Reserved for future use
|
||||
CK_STATESAVE_MATRESERVED7 = 0x00080000, // Reserved for future use
|
||||
CK_STATESAVE_MATERIALONLY = 0x000FF000, // Save All datas for sub-classes
|
||||
CK_STATESAVE_MATERIALALL = 0x0FFFFFFF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_MATERIAL;
|
||||
|
||||
//---------------------------------------------------
|
||||
// Texture
|
||||
// CKSaveOjectSave will save all relevant data and does not take flags into account
|
||||
typedef enum CK_STATESAVEFLAGS_TEXTURE
|
||||
{
|
||||
CK_STATESAVE_TEXAVIFILENAME = 0x00001000, // Save movie file name
|
||||
CK_STATESAVE_TEXCURRENTIMAGE = 0x00002000, // Save current slot
|
||||
CK_STATESAVE_TEXBITMAPS = 0x00004000, // Obsolete
|
||||
CK_STATESAVE_TEXTRANSPARENT = 0x00008000, // Save transparency data
|
||||
CK_STATESAVE_TEXFILENAMES = 0x00010000, // Save texture slot filenames
|
||||
CK_STATESAVE_TEXCOMPRESSED = 0x00020000, // Save raw texture data
|
||||
CK_STATESAVE_TEXVIDEOFORMAT = 0x00040000, // Save chosen video format
|
||||
CK_STATESAVE_TEXSAVEFORMAT = 0x00080000, // Save chosen save format
|
||||
CK_STATESAVE_TEXREADER = 0x00100000, // Save texture data using a specific BitmapReader
|
||||
CK_STATESAVE_PICKTHRESHOLD = 0x00200000, // Save pick threshold
|
||||
CK_STATESAVE_USERMIPMAP = 0x00400000, // User mipmap levels
|
||||
CK_STATESAVE_TEXSYSTEMCACHING = 0x00800000, // System Memory Caching
|
||||
CK_STATESAVE_OLDTEXONLY = 0x002FF000, // Kept for compatibility
|
||||
CK_STATESAVE_TEXONLY = 0x00FFF000, // Save Only Texture Data (Dot NOT MODIFY ! Texture loading/saving relies on this value)
|
||||
CK_STATESAVE_TEXALL = 0x002FFFFF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_TEXTURE;
|
||||
|
||||
|
||||
//---------------------------------------------------
|
||||
// 2d CURVE
|
||||
// && 2d Curve Point
|
||||
typedef enum CK_STATESAVEFLAGS_2DCURVE
|
||||
{
|
||||
CK_STATESAVE_2DCURVERESERVED0 = 0x00000010, // Reserved for future use
|
||||
CK_STATESAVE_2DCURVERESERVED4 = 0x00000020, // Reserved for future use
|
||||
CK_STATESAVE_2DCURVEFITCOEFF = 0x00000040, // Obsolete
|
||||
CK_STATESAVE_2DCURVECONTROLPOINT = 0x00000080, // Obsolete
|
||||
CK_STATESAVE_2DCURVENEWDATA = 0x00000100, // Save All relevant data
|
||||
CK_STATESAVE_2DCURVERESERVED2 = 0x00000200, // Obsolete
|
||||
CK_STATESAVE_2DCURVERESERVED3 = 0x00000400, // Obsolete
|
||||
CK_STATESAVE_2DCURVEPOINTTCB = 0x00000800, // Obsolete
|
||||
CK_STATESAVE_2DCURVEPOINTTANGENTS = 0x00001000, // Obsolete
|
||||
CK_STATESAVE_2DCURVEPOINT2DCURVEPOS = 0x00002000, // Obsolete
|
||||
CK_STATESAVE_2DCURVEPOINTDEFAULTDATA= 0x00004000, // Obsolete
|
||||
CK_STATESAVE_2DCURVEPOINTNEWDATA = 0x00008000, // Save All relevant data
|
||||
CK_STATESAVE_2DCURVEPOINTRESERVED1 = 0x00010000, // Reserved for future use
|
||||
CK_STATESAVE_2DCURVEPOINTRESERVED2 = 0x00020000, // Reserved for future use
|
||||
CK_STATESAVE_2DCURVESAVEPOINTS = 0x0003F800, // Obsolete
|
||||
CK_STATESAVE_2DCURVEALL = 0x0007FFFF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_2DCURVE;
|
||||
|
||||
//---------------------------------------------------
|
||||
// Kinematic Chain
|
||||
|
||||
typedef enum CK_STATESAVEFLAGS_KINEMATICCHAIN
|
||||
{
|
||||
CK_STATESAVE_KINEMATICCHAINDATA = 0x00000010, // Save chain data
|
||||
CK_STATESAVE_KINEMATICCHAINRESERVED1 = 0x00000020, // Reserved for future use
|
||||
CK_STATESAVE_KINEMATICCHAINRESERVED2 = 0x00000040, // Reserved for future use
|
||||
CK_STATESAVE_KINEMATICCHAINRESERVED3 = 0x00000080, // Reserved for future use
|
||||
CK_STATESAVE_KINEMATICCHAINALL = 0x000000FF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_KINEMATICCHAIN;
|
||||
|
||||
//---------------------------------------------------
|
||||
// Animation
|
||||
typedef enum CK_STATESAVEFLAGS_ANIMATION
|
||||
{
|
||||
CK_STATESAVE_ANIMATIONDATA = 0x00000010, // Save Flags & Framerate data
|
||||
CK_STATESAVE_ANIMATIONRESERVED1 = 0x00000020, // Reserved for future use
|
||||
CK_STATESAVE_ANIMATIONLENGTH = 0x00000040, // Save animation Length
|
||||
CK_STATESAVE_ANIMATIONBODYPARTS = 0x00000080, // Save root & list of bodypart
|
||||
CK_STATESAVE_ANIMATIONCHARACTER = 0x00000100, // Save character
|
||||
CK_STATESAVE_ANIMATIONCURRENTSTEP = 0x00000200, // Save current step
|
||||
CK_STATESAVE_ANIMATIONRESERVED5 = 0x00000400, // Reserved for future use
|
||||
CK_STATESAVE_ANIMATIONRESERVED6 = 0x00000800, // Reserved for future use
|
||||
CK_STATESAVE_ANIMATIONALL = 0x0FFFFFFF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_ANIMATION;
|
||||
|
||||
//---------------------------------------------------
|
||||
// Keyed Anim
|
||||
typedef enum CK_STATESAVEFLAGS_KEYEDANIMATION
|
||||
{
|
||||
CK_STATESAVE_KEYEDANIMANIMLIST = 0x00001000, // Save list of object animations
|
||||
CK_STATESAVE_KEYEDANIMLENGTH = 0x00002000, // Obsolete
|
||||
CK_STATESAVE_KEYEDANIMPOSKEYS = 0x00004000, // Obsolete
|
||||
CK_STATESAVE_KEYEDANIMROTKEYS = 0x00008000, // Obsolete
|
||||
CK_STATESAVE_KEYEDANIMMORPHKEYS = 0x00010000, // Obsolete
|
||||
CK_STATESAVE_KEYEDANIMSCLKEYS = 0x00020000, // Obsolete
|
||||
CK_STATESAVE_KEYEDANIMFLAGS = 0x00040000, // Obsolete
|
||||
CK_STATESAVE_KEYEDANIMENTITY = 0x00080000, // Obsolete
|
||||
CK_STATESAVE_KEYEDANIMMERGE = 0x00100000, // Save merged animations
|
||||
CK_STATESAVE_KEYEDANIMSUBANIMS = 0x00200000, // Save object animations data (using same flags than CKSaveObjectState)
|
||||
CK_STATESAVE_KEYEDANIMRESERVED0 = 0x00400000, // Reserved for future use
|
||||
CK_STATESAVE_KEYEDANIMRESERVED1 = 0x00800000, // Reserved for future use
|
||||
CK_STATESAVE_KEYEDANIMRESERVED2 = 0x01000000, // Reserved for future use
|
||||
CK_STATESAVE_KEYEDANIMRESERVED3 = 0x02000000 // Reserved for future use
|
||||
} CK_STATESAVEFLAGS_KEYEDANIMATION;
|
||||
|
||||
|
||||
//---------------------------------------------------
|
||||
// Object Animation
|
||||
// CKSaveOjectSave will save all relevant data and does not take flags into account
|
||||
typedef enum CK_STATESAVEFLAGS_OBJECTANIMATION
|
||||
{
|
||||
CK_STATESAVE_OBJANIMNEWDATA = 0x00001000, // Save all relevant data
|
||||
CK_STATESAVE_OBJANIMLENGTH = 0x00002000, // Not used
|
||||
CK_STATESAVE_OBJANIMPOSKEYS = 0x00004000, // Not used
|
||||
CK_STATESAVE_OBJANIMROTKEYS = 0x00008000, // Not used
|
||||
CK_STATESAVE_OBJANIMMORPHKEYS = 0x00010000, // Not used
|
||||
CK_STATESAVE_OBJANIMSCLKEYS = 0x00020000, // Not used
|
||||
CK_STATESAVE_OBJANIMFLAGS = 0x00040000, // Not used
|
||||
CK_STATESAVE_OBJANIMENTITY = 0x00080000, // Not used
|
||||
CK_STATESAVE_OBJANIMMERGE = 0x00100000, // Not used
|
||||
CK_STATESAVE_OBJANIMMORPHKEYS2 = 0x00200000, // Not used
|
||||
CK_STATESAVE_OBJANIMNEWSAVE1 = 0x00400000, // Not used
|
||||
CK_STATESAVE_OBJANIMMORPHNORMALS = 0x00800000, // Not used (Virtools 1.1)
|
||||
CK_STATESAVE_OBJANIMMORPHCOMP = 0x01000000, // Not used (Virtools 1.1)
|
||||
CK_STATESAVE_OBJANIMSHARED = 0x02000000, // Save Data for a shared animation
|
||||
CK_STATESAVE_OBJANIMCONTROLLERS = 0x04000000, // (Virtools 1.5) Save All Controller information
|
||||
CK_STATESAVE_OBJANIMONLY = 0x07FFF000,
|
||||
CK_STATESAVE_OBJANIMALL = 0x07FFFFFF,
|
||||
CK_STATESAVE_KEYEDANIMONLY = 0x03FFF000, // Save All datas for sub-classes
|
||||
CK_STATESAVE_KEYEDANIMALL = 0x03FFFFFF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_OBJECTANIMATION;
|
||||
|
||||
|
||||
//---------------------------------------------------
|
||||
// IK Animation
|
||||
typedef enum CK_STATESAVEFLAGS_IKANIMATION
|
||||
{
|
||||
CK_STATESAVE_IKANIMATIONDATA = 0x00001000, // Save IK data
|
||||
CK_STATESAVE_IKANIMATIONRESERVED2 = 0x00002000, // Reserved for future use
|
||||
CK_STATESAVE_IKANIMATIONRESERVED3 = 0x00004000, // Reserved for future use
|
||||
CK_STATESAVE_IKANIMATIONRESERVED4 = 0x00008000, // Reserved for future use
|
||||
CK_STATESAVE_IKANIMATIONRESERVED5 = 0x00010000, // Reserved for future use
|
||||
CK_STATESAVE_IKANIMATIONRESERVED6 = 0x00020000, // Reserved for future use
|
||||
CK_STATESAVE_IKANIMATIONRESERVED7 = 0x00040000, // Reserved for future use
|
||||
CK_STATESAVE_IKANIMATIONRESERVED8 = 0x00100000, // Reserved for future use
|
||||
CK_STATESAVE_IKANIMATIONRESERVED9 = 0x00200000, // Reserved for future use
|
||||
CK_STATESAVE_IKANIMATIONALL = 0x003FFFFF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_IKANIMATION;
|
||||
|
||||
//---------------------------------------------------
|
||||
// BehaviorLink
|
||||
typedef enum CK_STATESAVEFLAGS_BEHAV_LINK
|
||||
{
|
||||
CK_STATESAVE_BEHAV_LINK_CURDELAY = 0x00000004, // Obsolete
|
||||
CK_STATESAVE_BEHAV_LINK_IOS = 0x00000008, // Obsolete
|
||||
CK_STATESAVE_BEHAV_LINK_DELAY = 0x00000010, // Obsolete
|
||||
CK_STATESAVE_BEHAV_LINK_NEWDATA = 0x00000020, // Save all relevant data (In,Out,Activation delay)
|
||||
CK_STATESAVE_BEHAV_LINKRESERVED5 = 0x00000040, // Reserved for future use
|
||||
CK_STATESAVE_BEHAV_LINKRESERVED6 = 0x00000080, // Reserved for future use
|
||||
CK_STATESAVE_BEHAV_LINKONLY = 0x000000F0, //
|
||||
CK_STATESAVE_BEHAV_LINKALL = 0x000000FF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_BEHAV_LINK;
|
||||
|
||||
//---------------------------------------------------
|
||||
// BehaviorIO
|
||||
typedef enum CK_STATESAVEFLAGS_BEHAV_IO
|
||||
{
|
||||
CK_STATESAVE_BEHAV_IOFLAGS = 0x00000008, // Save IO flags
|
||||
CK_STATESAVE_BEHAV_IORESERVED3 = 0x00000010, // Reserved for future use
|
||||
CK_STATESAVE_BEHAV_IORESERVED4 = 0x00000020, // Reserved for future use
|
||||
CK_STATESAVE_BEHAV_IORESERVED5 = 0x00000040, // Reserved for future use
|
||||
CK_STATESAVE_BEHAV_IORESERVED6 = 0x00000080, // Reserved for future use
|
||||
CK_STATESAVE_BEHAVIOONLY = 0x000000F0, //
|
||||
CK_STATESAVE_BEHAVIOALL = 0x000000FF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_BEHAV_IO;
|
||||
|
||||
//---------------------------------------------------
|
||||
// BehaviorPrototype
|
||||
typedef enum CK_STATESAVEFLAGS_PROTOTYPE
|
||||
{
|
||||
CK_STATESAVE_PROTORESERVED0 = 0x00000010, // Reserved for future use
|
||||
CK_STATESAVE_PROTORESERVED1 = 0x00000020, // Reserved for future use
|
||||
CK_STATESAVE_PROTOFLAGS = 0x00000040, // Save Flags
|
||||
CK_STATESAVE_PROTOSUBPROTOS = 0x00000080, // Save sub prototypes
|
||||
CK_STATESAVE_PROTOLINKS = 0x00000100, // Save links
|
||||
CK_STATESAVE_PROTOBEHAVFLAG = 0x00000200, // Save behavior flags
|
||||
CK_STATESAVE_PROTOGUID = 0x00000400, // Save GUID
|
||||
CK_STATESAVE_PROTOINPUTS = 0x00000800, // Save inputs
|
||||
CK_STATESAVE_PROTOOUTPUTS = 0x00001000, // Save outputs
|
||||
CK_STATESAVE_PROTOINPARAMS = 0x00002000, // Save input parameters
|
||||
CK_STATESAVE_PROTOOUTPARAMS = 0x00004000, // Save output parameters
|
||||
CK_STATESAVE_PROTOLOCALPARAMS = 0x00008000, // Save local parameters
|
||||
CK_STATESAVE_PROTOOPERATIONS = 0x00010000, // Save parameter operations
|
||||
CK_STATESAVE_PROTOPARAMETERLINKS = 0x00020000, // Save parameter links
|
||||
CK_STATESAVE_PROTOAPPLYTO = 0x00040000, // Save ClassID of object to which it applies
|
||||
CK_STATESAVE_PROTORESERVED14 = 0x00080000, // Reserved for future use
|
||||
CK_STATESAVE_PROTOALL = 0x000FFFFF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_PROTOTYPE;
|
||||
|
||||
|
||||
//---------------------------------------------------
|
||||
// Behavior
|
||||
typedef enum CK_STATESAVEFLAGS_BEHAVIOR
|
||||
{
|
||||
CK_STATESAVE_BEHAVIORRESERVED0 = 0x00000010, // Reserved for internal use
|
||||
CK_STATESAVE_BEHAVIORNEWDATA = 0x00000020, // not used
|
||||
CK_STATESAVE_BEHAVIORFLAGS = 0x00000040, // not used
|
||||
CK_STATESAVE_BEHAVIORCOMPATIBLECID = 0x00000080, // not used
|
||||
CK_STATESAVE_BEHAVIORSUBBEHAV = 0x00000100, // Save Sub-Behaviors
|
||||
CK_STATESAVE_BEHAVIORINPARAMS = 0x00000200, // not used
|
||||
CK_STATESAVE_BEHAVIOROUTPARAMS = 0x00000400, // not used
|
||||
CK_STATESAVE_BEHAVIORINPUTS = 0x00000800, // not used
|
||||
CK_STATESAVE_BEHAVIOROUTPUTS = 0x00001000, // not used
|
||||
CK_STATESAVE_BEHAVIORINFO = 0x00002000, // not used
|
||||
CK_STATESAVE_BEHAVIOROPERATIONS = 0x00004000, // not used
|
||||
CK_STATESAVE_BEHAVIORTYPE = 0x00008000, // not used
|
||||
CK_STATESAVE_BEHAVIOROWNER = 0x00010000, // not used
|
||||
CK_STATESAVE_BEHAVIORLOCALPARAMS = 0x00020000, // Save local parameters
|
||||
CK_STATESAVE_BEHAVIORPROTOGUID = 0x00040000, // not used
|
||||
CK_STATESAVE_BEHAVIORSUBLINKS = 0x00080000, // not used
|
||||
CK_STATESAVE_BEHAVIORACTIVESUBLINKS= 0x00100000, // not used
|
||||
CK_STATESAVE_BEHAVIORSINGLEACTIVITY= 0x00200000, // SINGLE ACTIVITY
|
||||
CK_STATESAVE_BEHAVIORSCRIPTDATA = 0x00400000, // not used
|
||||
CK_STATESAVE_BEHAVIORPRIORITY = 0x00800000, // not used
|
||||
CK_STATESAVE_BEHAVIORTARGET = 0x01000000, // not used
|
||||
CK_STATESAVE_BEHAVIORONLY = 0x01FFFFF0,
|
||||
CK_STATESAVE_BEHAVIORALL = 0x01FFFFFF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_BEHAVIOR;
|
||||
|
||||
|
||||
|
||||
|
||||
//---------------------------------------------------
|
||||
// SCENE
|
||||
// CKSaveOjectSave will save all relevant data and does not take flags into account
|
||||
typedef enum CK_STATESAVEFLAGS_SCENE
|
||||
{
|
||||
CK_STATESAVE_SCENERESERVED0 = 0x00001000, // Reserved for future use
|
||||
CK_STATESAVE_SCENERESERVED8 = 0x00002000, // Reserved for future use
|
||||
CK_STATESAVE_SCENEFLAGS = 0x00004000,
|
||||
CK_STATESAVE_SCENELEVEL = 0x00008000,
|
||||
CK_STATESAVE_SCENEOBJECTS = 0x00010000,
|
||||
CK_STATESAVE_SCENENEWDATA = 0x00020000, // every object description and initial conditions
|
||||
CK_STATESAVE_SCENELAUNCHED = 0x00040000, // Scene was already launched once
|
||||
CK_STATESAVE_SCENERENDERSETTINGS = 0x00080000, // Background Color, Fog Color etc..
|
||||
CK_STATESAVE_SCENERESERVED1 = 0x00100000, // Reserved for future use
|
||||
CK_STATESAVE_SCENERESERVED2 = 0x00200000, // Reserved for future use
|
||||
CK_STATESAVE_SCENERESERVED3 = 0x00400000, // Reserved for future use
|
||||
CK_STATESAVE_SCENERESERVED4 = 0x00800000, // Reserved for future use
|
||||
CK_STATESAVE_SCENERESERVED5 = 0x01000000, // Reserved for future use
|
||||
CK_STATESAVE_SCENERESERVED12 = 0x02000000, // Reserved for future use
|
||||
CK_STATESAVE_SCENERESERVED13 = 0x04000000, // Reserved for future use
|
||||
CK_STATESAVE_SCENERESERVED14 = 0x08000000, // Reserved for future use
|
||||
CK_STATESAVE_SCENEALL = 0x0FFFFFFF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_SCENE;
|
||||
|
||||
|
||||
//---------------------------------------------------
|
||||
// ParameterIn
|
||||
typedef enum CK_STATESAVEFLAGS_PARAMETERIN
|
||||
{
|
||||
CK_STATESAVE_PARAMETERIN_RESERVED4 = 0x00000010, // Reserved for future use
|
||||
CK_STATESAVE_PARAMETERIN_RESERVED0 = 0x00000020, // Reserved for future use
|
||||
CK_STATESAVE_PARAMETERIN_RESERVED1 = 0x00000040, // Reserved for future use
|
||||
CK_STATESAVE_PARAMETERIN_OWNER = 0x00000080, // Obsolete
|
||||
CK_STATESAVE_PARAMETERIN_INSHARED = 0x00000100, // Obsolete
|
||||
CK_STATESAVE_PARAMETERIN_OUTSOURCE = 0x00000200, // Obsolete
|
||||
CK_STATESAVE_PARAMETERIN_DEFAULTDATA = 0x00000400, // Obsolete
|
||||
CK_STATESAVE_PARAMETERIN_DATASHARED = 0x00000800, // Save reference to shared inparameter
|
||||
CK_STATESAVE_PARAMETERIN_DATASOURCE = 0x00001000, // Save reference to source outparameter
|
||||
CK_STATESAVE_PARAMETERIN_DISABLED = 0x00002000, // The parameter was disabled
|
||||
CK_STATESAVE_PARAMETERIN_ALL = 0x0000FFFF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_PARAMETERIN;
|
||||
|
||||
//---------------------------------------------------
|
||||
// ParameterLocal et ParameterOut
|
||||
typedef enum CK_STATESAVEFLAGS_PARAMETEROUT
|
||||
{
|
||||
CK_STATESAVE_PARAMETEROUT_RESERVED0 = 0x00000010, // Reserved for future use
|
||||
CK_STATESAVE_PARAMETEROUT_DESTINATIONS = 0x00000020, // Save destinations
|
||||
CK_STATESAVE_PARAMETEROUT_VAL = 0x00000040, // Save value
|
||||
CK_STATESAVE_PARAMETEROUT_OWNER = 0x00000080, // Save Owner
|
||||
CK_STATESAVE_PARAMETEROUT_MYSELF = 0x00000200, //
|
||||
CK_STATESAVE_PARAMETEROUT_ISSETTING = 0x00000400, // Reserved for future use
|
||||
CK_STATESAVE_PARAMETEROUT_ALL = 0x0000FFFF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_PARAMETEROUT;
|
||||
|
||||
|
||||
//---------------------------------------------------
|
||||
// Parameter Operation
|
||||
|
||||
typedef enum CK_STATESAVEFLAGS_OPERATION
|
||||
{
|
||||
CK_STATESAVE_OPERATIONRESERVED0 = 0x00000010, // Reserved for future use
|
||||
CK_STATESAVE_OPERATIONRESERVED1 = 0x00000020, // Reserved for future use
|
||||
CK_STATESAVE_OPERATIONINPUTS = 0x00000040,
|
||||
CK_STATESAVE_OPERATIONOUTPUT = 0x00000080,
|
||||
CK_STATESAVE_OPERATIONOP = 0x00000100,
|
||||
CK_STATESAVE_OPERATIONDEFAULTDATA = 0x00000200,
|
||||
CK_STATESAVE_OPERATIONNEWDATA = 0x00000400,
|
||||
CK_STATESAVE_OPERATIONALL = 0x000007FF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_OPERATION;
|
||||
|
||||
|
||||
//---------------------------------------------------
|
||||
// Synchro Object
|
||||
// CKSaveOjectSave will save all relevant data and does not take flags into account
|
||||
typedef enum CK_STATESAVEFLAGS_SYNCHRO
|
||||
{
|
||||
CK_STATESAVE_SYNCHRODATA = 0x00000010, // Save data
|
||||
CK_STATESAVE_SYNCHRORESERVED0 = 0x00000040, // Reserved for future use
|
||||
CK_STATESAVE_SYNCHRORESERVED1 = 0x00000080, // Reserved for future use
|
||||
CK_STATESAVE_SYNCHRORESERVED2 = 0x00000100, // Reserved for future use
|
||||
CK_STATESAVE_SYNCHRORESERVED3 = 0x00000200, // Reserved for future use
|
||||
CK_STATESAVE_SYNCHRONALL = 0x000003FF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_SYNCHRO;
|
||||
|
||||
//------------------------------------------------
|
||||
// Grid
|
||||
typedef enum CK_STATESAVEFLAGS_GRID
|
||||
{
|
||||
CK_STATESAVE_GRIDDATA = 0x00400000, // Save Grid Data
|
||||
CK_STATESAVE_GRIDRESERVED0 = 0x00800000, // Reserved for future use
|
||||
CK_STATESAVE_GRIDRESERVED1 = 0x01000000, // Reserved for future use
|
||||
CK_STATESAVE_GRIDRESERVED2 = 0x02000000, // Reserved for future use
|
||||
CK_STATESAVE_GRIDRESERVED3 = 0x04000000, // Reserved for future use
|
||||
CK_STATESAVE_GRIDRESERVED4 = 0x08000000, // Reserved for future use
|
||||
CK_STATESAVE_GRIDONLY = 0x0FC00000, //
|
||||
CK_STATESAVE_GRIDALL = 0x0FFFFFFF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_GRID;
|
||||
|
||||
|
||||
//------------------------------------------------
|
||||
// Layer (For Grids)
|
||||
typedef enum CK_STATESAVEFLAGS_LAYER
|
||||
{
|
||||
CK_STATESAVE_LAYERDATA = 0x00000010, // Save Layer Data
|
||||
CK_STATESAVE_LAYERRESERVED0 = 0x00800020, // Reserved for future use
|
||||
CK_STATESAVE_LAYERRESERVED1 = 0x00000040, // Reserved for future use
|
||||
CK_STATESAVE_LAYERRESERVED2 = 0x00000080, // Reserved for future use
|
||||
CK_STATESAVE_LAYERRESERVED3 = 0x00000100, // Reserved for future use
|
||||
CK_STATESAVE_LAYERRESERVED4 = 0x00000200, // Reserved for future use
|
||||
CK_STATESAVE_LAYERONLY = 0x000003F0, //
|
||||
CK_STATESAVE_LAYERALL = 0x000003FF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_LAYER;
|
||||
|
||||
//------------------------------------------------
|
||||
// DataArray
|
||||
// CKSaveOjectSave will save all relevant data and does not take flags into account
|
||||
typedef enum CK_STATESAVEFLAGS_DATAARRAY
|
||||
{
|
||||
CK_STATESAVE_DATAARRAYFORMAT = 0x00001000, // Save format
|
||||
CK_STATESAVE_DATAARRAYDATA = 0x00002000, // Save array data
|
||||
CK_STATESAVE_DATAARRAYMEMBERS = 0x00004000, // Save members
|
||||
CK_STATESAVE_DATAARRAYALL = 0x0000FFFF // Save All datas for sub-classes
|
||||
} CK_STATESAVEFLAGS_DATAARRAY;
|
||||
|
||||
|
||||
//------------------------------------------------
|
||||
// SceneObjectDesc
|
||||
typedef enum CK_STATESAVEFLAGS_SCENEOBJECTDESC {
|
||||
|
||||
CK_STATESAVE_SCENEOBJECTDESC = 0x00000010,
|
||||
CK_STATESAVE_SCENEOBJECTRES1 = 0x00000020, // Reserved for future use
|
||||
CK_STATESAVE_SCENEOBJECTRES2 = 0x00000040, // Reserved for future use
|
||||
CK_STATESAVE_SCENEOBJECTRES3 = 0x00000080, // Reserved for future use
|
||||
CK_STATESAVE_SCENEOBJECTDESCALL = 0x000000FF // Save All datas for sub-classes
|
||||
|
||||
} CK_STATESAVEFLAGS_SCENEOBJECTDESC;
|
||||
375
Assets/CodeGen/EnumsMigration/src/VxEnums.txt
Normal file
375
Assets/CodeGen/EnumsMigration/src/VxEnums.txt
Normal file
@@ -0,0 +1,375 @@
|
||||
|
||||
/*****************************************************************
|
||||
{filename:VX_PIXELFORMAT}
|
||||
Name: VX_PIXELFORMAT
|
||||
|
||||
Summary: Pixel format types.
|
||||
See Also: VxImageDesc2PixelFormat,VxPixelFormat2ImageDesc
|
||||
******************************************************************/
|
||||
typedef enum VX_PIXELFORMAT {
|
||||
UNKNOWN_PF = 0, // Unknown pixel format
|
||||
_32_ARGB8888 = 1, // 32-bit ARGB pixel format with alpha
|
||||
_32_RGB888 = 2, // 32-bit RGB pixel format without alpha
|
||||
_24_RGB888 = 3, // 24-bit RGB pixel format
|
||||
_16_RGB565 = 4, // 16-bit RGB pixel format
|
||||
_16_RGB555 = 5, // 16-bit RGB pixel format (5 bits per color)
|
||||
_16_ARGB1555 = 6, // 16-bit ARGB pixel format (5 bits per color + 1 bit for alpha)
|
||||
_16_ARGB4444 = 7, // 16-bit ARGB pixel format (4 bits per color)
|
||||
_8_RGB332 = 8, // 8-bit RGB pixel format
|
||||
_8_ARGB2222 = 9, // 8-bit ARGB pixel format
|
||||
_32_ABGR8888 = 10, // 32-bit ABGR pixel format
|
||||
_32_RGBA8888 = 11, // 32-bit RGBA pixel format
|
||||
_32_BGRA8888 = 12, // 32-bit BGRA pixel format
|
||||
_32_BGR888 = 13, // 32-bit BGR pixel format
|
||||
_24_BGR888 = 14, // 24-bit BGR pixel format
|
||||
_16_BGR565 = 15, // 16-bit BGR pixel format
|
||||
_16_BGR555 = 16, // 16-bit BGR pixel format (5 bits per color)
|
||||
_16_ABGR1555 = 17, // 16-bit ABGR pixel format (5 bits per color + 1 bit for alpha)
|
||||
_16_ABGR4444 = 18, // 16-bit ABGR pixel format (4 bits per color)
|
||||
_DXT1 = 19, // S3/DirectX Texture Compression 1
|
||||
_DXT2 = 20, // S3/DirectX Texture Compression 2
|
||||
_DXT3 = 21, // S3/DirectX Texture Compression 3
|
||||
_DXT4 = 22, // S3/DirectX Texture Compression 4
|
||||
_DXT5 = 23, // S3/DirectX Texture Compression 5
|
||||
_16_V8U8 = 24, // 16-bit Bump Map format format (8 bits per color)
|
||||
_32_V16U16 = 25, // 32-bit Bump Map format format (16 bits per color)
|
||||
_16_L6V5U5 = 26, // 16-bit Bump Map format format with luminance
|
||||
_32_X8L8V8U8 = 27, // 32-bit Bump Map format format with luminance
|
||||
_8_ABGR8888_CLUT = 28, // 8 bits indexed CLUT (ABGR)
|
||||
_8_ARGB8888_CLUT = 29, // 8 bits indexed CLUT (ARGB)
|
||||
_4_ABGR8888_CLUT = 30, // 4 bits indexed CLUT (ABGR)
|
||||
_4_ARGB8888_CLUT = 31 // 4 bits indexed CLUT (ARGB)
|
||||
} VX_PIXELFORMAT;
|
||||
|
||||
|
||||
/******************************************************************
|
||||
{filename:VXLIGHT_TYPE}
|
||||
Summary: Light type.
|
||||
|
||||
Remarks:
|
||||
+ Used by CKLight::SetType to specify the type of a light.
|
||||
See also: CKLight::SetType,CKLight::GetType
|
||||
******************************************************************/
|
||||
typedef enum VXLIGHT_TYPE
|
||||
{
|
||||
VX_LIGHTPOINT = 1UL, // The Light is a point of light
|
||||
VX_LIGHTSPOT = 2UL, // The light is a spotlight
|
||||
VX_LIGHTDIREC = 3UL, // The light is directional light : Lights comes from an infinite point so only direction of light can be given
|
||||
VX_LIGHTPARA = 4UL // Obsolete, do not use
|
||||
} VXLIGHT_TYPE;
|
||||
|
||||
|
||||
|
||||
/*****************************************************************
|
||||
{filename:VXTEXTURE_BLENDMODE}
|
||||
Summary: Blend Mode Flags
|
||||
|
||||
Remarks:
|
||||
+ The VXTEXTURE_BLENDMODE is used by CKMaterial::SetTextureBlendMode() to specify how
|
||||
texture is applied on primitives.
|
||||
+ Also used as value for CKRST_TSS_TEXTUREMAPBLEND texture stage state.
|
||||
See Also: Using Materials,CKMaterial,CKTexture,CKMaterial::SetTextureBlendMode,CKRST_TSS_TEXTUREMAPBLEND.
|
||||
******************************************************************/
|
||||
typedef enum VXTEXTURE_BLENDMODE
|
||||
{
|
||||
VXTEXTUREBLEND_DECAL = 1UL, // Texture replace any material information
|
||||
VXTEXTUREBLEND_MODULATE = 2UL, // Texture and material are combine. Alpha information of the texture replace material alpha component.
|
||||
VXTEXTUREBLEND_DECALALPHA = 3UL, // Alpha information in the texture specify how material and texture are combined. Alpha information of the texture replace material alpha component.
|
||||
VXTEXTUREBLEND_MODULATEALPHA = 4UL, // Alpha information in the texture specify how material and texture are combined
|
||||
VXTEXTUREBLEND_DECALMASK = 5UL,
|
||||
VXTEXTUREBLEND_MODULATEMASK = 6UL,
|
||||
VXTEXTUREBLEND_COPY = 7UL, // Equivalent to DECAL
|
||||
VXTEXTUREBLEND_ADD = 8UL,
|
||||
VXTEXTUREBLEND_DOTPRODUCT3 = 9UL, // Perform a Dot Product 3 between texture (normal map)
|
||||
// and a referential vector given in VXRENDERSTATE_TEXTUREFACTOR.
|
||||
VXTEXTUREBLEND_MAX = 10UL,
|
||||
VXTEXTUREBLEND_MASK = 0xFUL
|
||||
} VXTEXTURE_BLENDMODE;
|
||||
|
||||
|
||||
/******************************************************************
|
||||
{filename:VXTEXTURE_FILTERMODE}
|
||||
Summary: Filter Mode Options
|
||||
|
||||
Remarks:
|
||||
+ The VXTEXTURE_FILTERMODE is used by CKMaterial::SetTextureMagMode and CKMaterial::SetTextureMinMode to specify how
|
||||
texture is filtered when magnified.
|
||||
+ Also used as value for CKRST_TSS_MAGFILTER and CKRST_TSS_MINFILTER texture stage state.
|
||||
See Also: Using Materials,CKMaterial,CKTexture,CKMaterial::SetTextureMagMode,CKMaterial::SetTextureMinMode,,CKRenderContext::SetTextureStageState
|
||||
******************************************************************/
|
||||
typedef enum VXTEXTURE_FILTERMODE
|
||||
{
|
||||
VXTEXTUREFILTER_NEAREST = 1UL, // No Filter
|
||||
VXTEXTUREFILTER_LINEAR = 2UL, // Bilinear Interpolation
|
||||
VXTEXTUREFILTER_MIPNEAREST = 3UL, // Mip mapping
|
||||
VXTEXTUREFILTER_MIPLINEAR = 4UL, // Mip Mapping with Bilinear interpolation
|
||||
VXTEXTUREFILTER_LINEARMIPNEAREST = 5UL, // Mip Mapping with Bilinear interpolation between mipmap levels.
|
||||
VXTEXTUREFILTER_LINEARMIPLINEAR = 6UL, // Trilinear Filtering
|
||||
VXTEXTUREFILTER_ANISOTROPIC = 7UL, // Anisotropic filtering
|
||||
VXTEXTUREFILTER_MASK = 0xFUL
|
||||
} VXTEXTURE_FILTERMODE;
|
||||
|
||||
/******************************************************************
|
||||
{filename:VXBLEND_MODE}
|
||||
Summary: Blending Mode options
|
||||
|
||||
Remarks:
|
||||
+ The VXBLEND_MODE is used by CKMaterial::SetSourceBlend() and SetDestBlend() to specify the blend
|
||||
factors that are used when blending is enabled. (Rs,Gs,Bs,As) are color components of the source pixel (being drawn) and
|
||||
(Rd,Gd,Bd,Ad) are color components of the destination pixel (current pixel on screen).
|
||||
When blending is enabled the final pixel will be equal to :
|
||||
|
||||
SrcBlendFactor * SrcPixel + DstBlendFactor * CurrentPixelOnScreen
|
||||
|
||||
+ Also used as value for VXRENDERSTATE_SRCBLEND and VXRENDERSTATE_DESTBLEND render state.
|
||||
|
||||
See Also: CKMaterial,CKTexture,CKMaterial::SetSourceBlend,CKMaterial::SetDestBlend,CKRenderContext::SetState,CKSprite::SetBlending,VXRENDERSTATE_SRCBLEND,VXRENDERSTATE_DESTBLEND
|
||||
******************************************************************/
|
||||
typedef enum VXBLEND_MODE
|
||||
{
|
||||
VXBLEND_ZERO = 1UL, //Blend factor is (0, 0, 0, 0).
|
||||
VXBLEND_ONE = 2UL, //Blend factor is (1, 1, 1, 1).
|
||||
VXBLEND_SRCCOLOR = 3UL, //Blend factor is (Rs, Gs, Bs, As).
|
||||
VXBLEND_INVSRCCOLOR = 4UL, //Blend factor is (1-Rs, 1-Gs, 1-Bs, 1-As).
|
||||
VXBLEND_SRCALPHA = 5UL, //Blend factor is (As, As, As, As).
|
||||
VXBLEND_INVSRCALPHA = 6UL, //Blend factor is (1-As, 1-As, 1-As, 1-As).
|
||||
VXBLEND_DESTALPHA = 7UL, //Blend factor is (Ad, Ad, Ad, Ad).
|
||||
VXBLEND_INVDESTALPHA = 8UL, //Blend factor is (1-Ad, 1-Ad, 1-Ad, 1-Ad).
|
||||
VXBLEND_DESTCOLOR = 9UL, //Blend factor is (Rd, Gd, Bd, Ad).
|
||||
VXBLEND_INVDESTCOLOR = 10UL, //Blend factor is (1-Rd, 1-Gd, 1-Bd, 1-Ad).
|
||||
VXBLEND_SRCALPHASAT = 11UL, //Blend factor is (f, f, f, 1); f = min(As, 1-Ad).
|
||||
VXBLEND_BOTHSRCALPHA = 12UL, //Source blend factor is (As, As, As, As) and destination blend factor is (1-As, 1-As, 1-As, 1-As)
|
||||
VXBLEND_BOTHINVSRCALPHA = 13UL, //Source blend factor is (1-As, 1-As, 1-As, 1-As) and destination blend factor is (As, As, As, As)
|
||||
VXBLEND_MASK = 0xFUL //Source blend factor is (1-As, 1-As, 1-As, 1-As) and destination blend factor is (As, As, As, As)
|
||||
} VXBLEND_MODE;
|
||||
|
||||
|
||||
/******************************************************************
|
||||
{filename:VXTEXTURE_ADDRESSMODE}
|
||||
Summary: Texture addressing modes.
|
||||
|
||||
Remarks:
|
||||
+ The VXTEXTURE_ADDRESSMODE is used by CKMaterial::SetTextureAddresMode to specify texture coordinate are
|
||||
taken into account when they are outside the range [0.0 , 1.0].
|
||||
+ Also used as value for CKRST_TSS_ADDRESS texture stage state.
|
||||
See Also: CKMaterial,CKTexture,CKRST_TSS_ADDRESS,CKRenderContext::SetTextureStageState
|
||||
******************************************************************/
|
||||
typedef enum VXTEXTURE_ADDRESSMODE
|
||||
{
|
||||
VXTEXTURE_ADDRESSWRAP = 1UL, // Default mesh wrap mode is used (see CKMesh::SetWrapMode)
|
||||
VXTEXTURE_ADDRESSMIRROR = 2UL, // Texture coordinates outside the range [0..1] are flipped evenly.
|
||||
VXTEXTURE_ADDRESSCLAMP = 3UL, // Texture coordinates greater than 1.0 are set to 1.0, and values less than 0.0 are set to 0.0.
|
||||
VXTEXTURE_ADDRESSBORDER = 4UL, // When texture coordinates are greater than 1.0 or less than 0.0 texture is set to a color defined in CKMaterial::SetTextureBorderColor.
|
||||
VXTEXTURE_ADDRESSMIRRORONCE = 5UL, //
|
||||
VXTEXTURE_ADDRESSMASK = 0x7UL // mask for all values
|
||||
} VXTEXTURE_ADDRESSMODE;
|
||||
|
||||
|
||||
/******************************************************************
|
||||
{filename:VXFILL_MODE}
|
||||
Summary: Fill Mode Options
|
||||
|
||||
Remarks:
|
||||
+ The VXFILL_MODE is used by CKMaterial::SetFillMode to specify how faces are drawn.
|
||||
+ Also used as value for VXRENDERSTATE_FILLMODE render state.
|
||||
See Also: CKMaterial::SetFillMode,VXRENDERSTATE_FILLMODE
|
||||
******************************************************************/
|
||||
typedef enum VXFILL_MODE
|
||||
{
|
||||
VXFILL_POINT = 1UL, // Vertices rendering
|
||||
VXFILL_WIREFRAME = 2UL, // Edges rendering
|
||||
VXFILL_SOLID = 3UL, // Face rendering
|
||||
VXFILL_MASK = 3UL
|
||||
}VXFILL_MODE;
|
||||
|
||||
|
||||
/******************************************************************
|
||||
{filename:VXSHADE_MODE}
|
||||
Summary: Shade Mode Options
|
||||
|
||||
Remarks:
|
||||
+ The VXSHADE_MODE is used by CKMaterial::SetShadeMode to specify how color
|
||||
interpolation is perform on faces when they are drawn.
|
||||
+ Also used as value for VXRENDERSTATE_SHADEMODE render state.
|
||||
See Also: CKMaterial::SetShadeMode,VXRENDERSTATE_SHADEMODE
|
||||
******************************************************************/
|
||||
typedef enum VXSHADE_MODE
|
||||
{
|
||||
VXSHADE_FLAT = 1UL, // Flat Shading
|
||||
VXSHADE_GOURAUD = 2UL, // Gouraud Shading
|
||||
VXSHADE_PHONG = 3UL, // Phong Shading (Not yet supported by most implementation)
|
||||
VXSHADE_MASK = 3UL
|
||||
} VXSHADE_MODE;
|
||||
|
||||
|
||||
/******************************************************************
|
||||
{filename:VXCMPFUNC}
|
||||
Summary: Comparison Function
|
||||
|
||||
Remarks:
|
||||
+ Used by CKRenderContext::SetState with VXRENDERSTATE_ZFUNC, VXRENDERSTATE_ALPHAFUNC or VXRENDERSTATE_STENCILFUNC
|
||||
to specify the type of Z or Alpha comparison function.
|
||||
+ The comparison function is used to compare the stencil,alpha or z reference value to a stencil,z or alpha entry.
|
||||
See also: CKRenderContext::SetState,VXRENDERSTATETYPE,VXRENDERSTATE_ZFUNC,VXRENDERSTATE_ALPHAFUNC,
|
||||
******************************************************************/
|
||||
typedef enum VXCMPFUNC
|
||||
{
|
||||
VXCMP_NEVER = 1UL, // Always fail the test.
|
||||
VXCMP_LESS = 2UL, // Accept if value if less than current value.
|
||||
VXCMP_EQUAL = 3UL, // Accept if value if equal than current value.
|
||||
VXCMP_LESSEQUAL = 4UL, // Accept if value if less or equal than current value.
|
||||
VXCMP_GREATER = 5UL, // Accept if value if greater than current value.
|
||||
VXCMP_NOTEQUAL = 6UL, // Accept if value if different than current value.
|
||||
VXCMP_GREATEREQUAL = 7UL, // Accept if value if greater or equal current value.
|
||||
VXCMP_ALWAYS = 8UL, // Always accept the test.
|
||||
VXCMP_MASK = 0xFUL // Mask for all possible values.
|
||||
} VXCMPFUNC;
|
||||
|
||||
/******************************************************************
|
||||
{filename:VX_EFFECT}
|
||||
Summary: Material special effects
|
||||
|
||||
Remarks:
|
||||
+ Effects provide additionnal functionnalities to take advantage of graphic features such as bump mapping,cube maps etc...
|
||||
+ When an effect is enabled on a material (CKMaterial::SetEffect) it may override the default settings of mesh channels or material blend options
|
||||
+ New effects can be created by providing a callback function (see CKRenderManager::AddEffect)
|
||||
+ This enumeration provides the list of hardcoded existing effects.
|
||||
+ Most of this effect are heavily hardware and device (DX8,DX7,etc..) dependant
|
||||
See also: CKMaterial::SetEffect,CKMaterial::GetEffect,CKRenderManager::AddEffect
|
||||
******************************************************************/
|
||||
typedef enum VX_EFFECT
|
||||
{
|
||||
VXEFFECT_NONE = 0UL, // No Effect
|
||||
VXEFFECT_TEXGEN = 1UL, // Texture coordinate generation using current viewpoint as referential
|
||||
VXEFFECT_TEXGENREF = 2UL, // texture generation generation with an optionnal referential
|
||||
VXEFFECT_BUMPENV = 3UL, // Environment Bump Mapping
|
||||
VXEFFECT_DP3 = 4UL, // Dot Product 3 bump mapping
|
||||
VXEFFECT_2TEXTURES = 5UL, // Blend 2 Textures
|
||||
VXEFFECT_3TEXTURES = 6UL, // Blend 3 Textures
|
||||
VXEFFECT_MASK = 0xFUL // Mask for all possible values.
|
||||
} VX_EFFECT;
|
||||
|
||||
|
||||
/*****************************************************************
|
||||
{filename:VX_MOVEABLE_FLAGS}
|
||||
Summary: 3dEntity additionnal flags Options
|
||||
|
||||
Remarks:
|
||||
+ The VX_MOVEABLE_FLAGS is used by CK3dEntity::SetMoveableFlags to specify different hints to the render engine about the entity.
|
||||
+ The (Engine) flags are set by the render engine and should not be modified by user. They can be checked with the CK3dEntity::GetMoveableFlags method.
|
||||
+ The (User) flags are to be set by the user or can be set by a specific method of CK3dEntity.
|
||||
|
||||
See Also: CK3dEntity::SetMoveableFlags
|
||||
******************************************************************/
|
||||
typedef enum VX_MOVEABLE_FLAGS {
|
||||
VX_MOVEABLE_PICKABLE =0x00000001, // (User)If not set this entity cannot be returned by CKRenderContext::Pick() or CKRenderContext::RectPict() functions.
|
||||
VX_MOVEABLE_VISIBLE =0x00000002, // (Engine) See CKObject::Show,CK3dEntity::IsVisible
|
||||
VX_MOVEABLE_UPTODATE =0x00000004, // (Engine) Used to Notify change in the data of the entity.
|
||||
VX_MOVEABLE_RENDERCHANNELS =0x00000008, // (User) If not set, additional material channels on the mesh used by this entity won't be rendered (CK3dEntity::SetRenderChannels)
|
||||
VX_MOVEABLE_USERBOX =0x00000010, // (Engine) When CK3dEntity::SetBoundingBox is called with a user box, this flag is set.
|
||||
VX_MOVEABLE_EXTENTSUPTODATE =0x00000020, // (Engine) Indicate that object 2D extents are up to date
|
||||
VX_MOVEABLE_BOXVALID =0x00004000, // (Engine) If not set the moveable has no mesh associated so its bounding box is irrelevant (a point).
|
||||
VX_MOVEABLE_RENDERLAST =0x00010000, // (User) If set the moveable will be rendered with the transparent objects (i.e in last) (CK3dEntity::SetRenderAsTransparent)
|
||||
VX_MOVEABLE_HASMOVED =0x00020000, // (Engine) Set when its position or orientation has changed. (Reset every frame when rendering starts)
|
||||
VX_MOVEABLE_WORLDALIGNED =0x00040000, // (User) Hint for render engine : this object is aligned with world position and orientation.
|
||||
VX_MOVEABLE_NOZBUFFERWRITE =0x00080000, // (User) Set by the user to warn Render Engine that this object must not write information to Z buffer
|
||||
VX_MOVEABLE_RENDERFIRST =0x00100000, // (User) If set the moveable will be rendered within the firsts objects
|
||||
VX_MOVEABLE_NOZBUFFERTEST =0x00200000, // (User) Set by the user to warn Render Engine that this object must not test against Z buffer (This override settings of all materials used by this Entity)
|
||||
VX_MOVEABLE_INVERSEWORLDMATVALID =0x00400000, // (Engine) Inverse world matrix is not up to date and should be recomputed
|
||||
VX_MOVEABLE_DONTUPDATEFROMPARENT =0x00800000, // (User) This object will not be updated by parent (neither World nor Local matrix wil be updated) . This flags can be used by physic engine for example in which hierarchy is not relevant for physicalised objects
|
||||
VX_MOVEABLE_INDIRECTMATRIX =0x01000000, // (User/Engine) Set by the engine at load time : The object matrix is in left hand referential, culling needs to be inverted
|
||||
VX_MOVEABLE_ZBUFONLY =0x02000000, // (User) The object will only be rendered in depth buffer
|
||||
VX_MOVEABLE_STENCILONLY =0x04000000, // (User) The object will only be rendered in stencil buffer
|
||||
VX_MOVEABLE_HIERARCHICALHIDE =0x10000000, // (Engine) If Object has this flags and is hidden its children won't be rendered
|
||||
VX_MOVEABLE_CHARACTERRENDERED =0x20000000, // (Engine) Set if a character was rendered last frame...
|
||||
VX_MOVEABLE_RESERVED2 =0x40000000, // (Engine)
|
||||
} VX_MOVEABLE_FLAGS;
|
||||
|
||||
|
||||
/*****************************************************************
|
||||
{filename:VXMESH_FLAGS}
|
||||
Summary:Mesh Flags Options
|
||||
|
||||
Remarks:
|
||||
+ The VXMESH_FLAGS is used by CKMesh::SetFlags to specify different hints to the render engine about the mesh.
|
||||
+ Most of this flags can be set or asked using the appropriate method of CKMesh (given between () in the members documentation).
|
||||
See Also: CKMesh,CKMesh::SetFlags
|
||||
******************************************************************/
|
||||
typedef enum VXMESH_FLAGS
|
||||
{
|
||||
VXMESH_BOUNDINGUPTODATE = 0x00000001, // If set the bounding box is up to date (internal).
|
||||
VXMESH_VISIBLE = 0x00000002, // If not set the mesh will not be rendered (CKMesh::Show)
|
||||
VXMESH_OPTIMIZED = 0x00000004, // Set by the render engine if the mesh is optimized for rendering. Unset it to force to recreate optimized structures (when changing materials or face organization ) (CKMesh::VertexMove)
|
||||
VXMESH_RENDERCHANNELS = 0x00000008, // If not set Additional material channels won't be rendered.
|
||||
VXMESH_HASTRANSPARENCY = 0x00000010, // If set indicates that one or more of the faces of this mesh use a transparent material (internal)
|
||||
VXMESH_PRELITMODE = 0x00000080, // If set, no lightning should occur for this mesh, vertex color should be used instead (CKMesh::SetLitMode)
|
||||
VXMESH_WRAPU = 0x00000100, // Texture coordinates wrapping among u texture coordinates. (CKMesh::SetWrapMode)
|
||||
VXMESH_WRAPV = 0x00000200, // Texture coordinates wrapping among v texture coordinates. (CKMesh::SetWrapMode)
|
||||
VXMESH_FORCETRANSPARENCY = 0x00001000, // Forces this mesh to be considered as transparent even if no material is tranparent. (CKMesh::SetTransparent)
|
||||
VXMESH_TRANSPARENCYUPTODATE = 0x00002000, // If set, the flags VXMESH_HASTRANSPARENCY is up to date. (internal)
|
||||
VXMESH_UV_CHANGED = 0x00004000, // Must be set if texture coordinates changed to enable the render engine to reconstruct potential display lists or vertex buffers. (CKMesh::UVChanged)
|
||||
VXMESH_NORMAL_CHANGED = 0x00008000, // Must be set if normal coordinates changed to enable the render engine to reconstruct potential display lists or vertex buffers. (CKMesh::NormalChanged)
|
||||
VXMESH_COLOR_CHANGED = 0x00010000, // Must be set if colors changed to enable the render engine to reconstruct potential display lists or vertex buffers. (CKMesh::ColorChanged)
|
||||
VXMESH_POS_CHANGED = 0x00020000, // Must be set if vertex position changed to enable the render engine to reconstruct potential display lists or vertex buffers. (CKMesh::VertexMove)
|
||||
VXMESH_HINTDYNAMIC = 0x00040000, // Hint for render engine : Mesh geometry is updated frequently
|
||||
VXMESH_GENNORMALS = 0x00080000, // Hint : Normals were generated by BuildNormals : Do not save (internal)
|
||||
VXMESH_PROCEDURALUV = 0x00100000, // Hint : UVs are generated : Do not save (internal)
|
||||
VXMESH_PROCEDURALPOS = 0x00200000, // Hint : Vertices postions are generated : Do not save (internal)
|
||||
VXMESH_STRIPIFY = 0x00400000, // If set the mesh will be stripified.
|
||||
VXMESH_MONOMATERIAL = 0x00800000, // Set by the render engine if the mesh use only one material.
|
||||
VXMESH_PM_BUILDNORM = 0x01000000, // Build normals when performing progressive meshing : Do not save (internal)
|
||||
VXMESH_BWEIGHTS_CHANGED = 0x02000000, // Must be set if vertex blend weights have changed to enable the render engine to reconstruct potential display lists or vertex buffers. (CKMesh::VertexMove)
|
||||
VXMESH_ALLFLAGS = 0x007FF39F
|
||||
} VXMESH_FLAGS;
|
||||
|
||||
|
||||
/******************************************************************
|
||||
{filename:VXMESH_LITMODE}
|
||||
Summary: Mesh lighting options
|
||||
|
||||
Remarks:
|
||||
+ The VXMESH_LITMODE is used by CKMesh::SetLitMode to specify how lighting is done.
|
||||
See Also: CKMaterial,CKMesh
|
||||
******************************************************************/
|
||||
typedef enum VXMESH_LITMODE
|
||||
{
|
||||
VX_PRELITMESH = 0, // Lighting use color information store with vertices
|
||||
VX_LITMESH = 1, // Lighting is done by renderer using normals and face material information.
|
||||
} VXMESH_LITMODE;
|
||||
|
||||
/*****************************************************************
|
||||
{filename:VXCHANNEL_FLAGS}
|
||||
Summary:Mesh additionnal material channel options
|
||||
|
||||
Remarks:
|
||||
+ The VXCHANNEL_FLAGS is used by CKMesh::SetChannelFlags to give the behavior of
|
||||
an additional material channel.
|
||||
See Also: CKMesh,CKMesh::AddChannel,CKMesh::IsChannelLit,CKMesh::IsChannelActive
|
||||
******************************************************************/
|
||||
typedef enum VXCHANNEL_FLAGS {
|
||||
VXCHANNEL_ACTIVE = 0x00000001, // This channel is active
|
||||
VXCHANNEL_SAMEUV = 0x00800000, // This channel should use the texture coordinates of the base mesh.
|
||||
VXCHANNEL_NOTLIT = 0x01000000, // Additionnal Material Channel should not be lit (some channels may not be rendered in one pass with this option)
|
||||
VXCHANNEL_MONO = 0x02000000, // Set at runtime by render engine to indicate whether this channel was rendered using multiple pass or not.(Dot Not Modify)
|
||||
VXCHANNEL_RESERVED1 = 0x04000000, // Reserved for internal use
|
||||
VXCHANNEL_LAST = 0x08000000, // Set at runtime by render engine to indicate this channel isthe last to be rendered. Dot Not Modify
|
||||
} VXCHANNEL_FLAGS;
|
||||
|
||||
/****************************************************************
|
||||
{filename:VXTEXTURE_WRAPMODE}
|
||||
Summary: Wrapping Flags
|
||||
|
||||
Remarks:
|
||||
+ The VXTEXTURE_WRAPMODE is used by CKMesh::SetWrapMode() to specify how
|
||||
texture coordinates are interpolated.
|
||||
See Also: Using Materials,CKMaterial,CKMesh::SetWrapMode.
|
||||
****************************************************************/
|
||||
typedef enum VXTEXTURE_WRAPMODE
|
||||
{
|
||||
VXTEXTUREWRAP_NONE = 0x00000000, // Flat texture addressing
|
||||
VXTEXTUREWRAP_U = 0x00000001, // Vertical cylinder mapping
|
||||
VXTEXTUREWRAP_V = 0x00000002, // Horizontal cylinder mapping
|
||||
VXTEXTUREWRAP_UV = 0x00000003, // Spherical mapping
|
||||
} VXTEXTURE_WRAPMODE;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user