ele*_*ect 5 c c++ java enums assimp
我正在这里将 Assimp 移植到 Java
我现在正在处理材料。 恕我直言,Assimp 的结构非常复杂(他们自己也这么说:由于历史原因,这是一个丑陋的宏,不要问)
这些是相关的 C 类:
在文档中,您可以大致了解可能的不同属性。
属性范围,例如,从不同AiColor3D Colors到几种int ShadingModels或几种AiString Texture类型..等等
所以基本上这个AiMaterialProperty名字我们指的是非常不同的材料属性范围。
像这样还不够,每个属性可能是一个由const unsigned int pNumValues参数控制的值数组。
我已经写了一些东西,但它很垃圾,我真的不喜欢它。我刚刚写下了我真正的第一个想法,它本质上是拥有一个 MaterialProperty 来保存所有不同的类型(String、int、float 等),并且只有相关的类型才会真正存储给定属性的值。
现在我想改进它,我想有一个基类AiMaterialProperty,然后根据属性类型(AiString, AiColor3D, int, boolean, float, AiVector3D)扩展它,例如AiMaterialPropertyString,等等。
然后我计划有一个 enum 变量来保存materialKey, (基本上AI_MATKEY从material.h开始的所有内容..
问题是,某些属性,例如SHADING_MODEL,轮到枚举......而且由于在 Java 中枚举不能扩展其他枚举,我有点卡住了..
所以,我想探讨一下是否有人对哪种结构最适合 Java 有更好的想法