Ecere Software
/
sdk
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Various fixes for Android
[sdk]
/
ecere
/
src
/
gfx
/
3D
/
models
/
Object3DSFormat.ec
diff --git
a/ecere/src/gfx/3D/models/Object3DSFormat.ec
b/ecere/src/gfx/3D/models/Object3DSFormat.ec
index
afac62c
..
0dbdeda
100644
(file)
--- a/
ecere/src/gfx/3D/models/Object3DSFormat.ec
+++ b/
ecere/src/gfx/3D/models/Object3DSFormat.ec
@@
-2,6
+2,16
@@
namespace gfx3D::models;
import "Object"
import "Object"
+#if !defined(__ANDROID__)
+#define USE_32_BIT_INDICES true
+#define indicesMember indices32
+#define uintindex uint32
+#else
+#define USE_32_BIT_INDICES false
+#define indicesMember indices
+#define uintindex uint16
+#endif
+
#define MAXNAMELEN 64
// RGB Chunks
#define MAXNAMELEN 64
// RGB Chunks
@@
-774,17
+784,17
@@
static bool ReadTriMesh(FileInfo * info, Object object)
PrimitiveSingle * triangle;
triangle = &mesh.primitives[mesh.nPrimitives++];
PrimitiveSingle * triangle;
triangle = &mesh.primitives[mesh.nPrimitives++];
- if(mesh.AllocatePrimitive(triangle, { triangles, indices32bit =
true
}, 3))
+ if(mesh.AllocatePrimitive(triangle, { triangles, indices32bit =
USE_32_BIT_INDICES
}, 3))
{
{
- triangle->indices
32[0] =
face->indices[0];
- triangle->indices
32[1] =
face->indices[1];
- triangle->indices
32[2] =
face->indices[2];
- triangle->middle.Add(mesh.vertices[triangle->indices
32[0]], mesh.vertices[triangle->indices32
[1]]);
- triangle->middle.Add(triangle->middle, mesh.vertices[triangle->indices
32
[2]]);
+ triangle->indices
Member[0] = (uintindex)
face->indices[0];
+ triangle->indices
Member[1] = (uintindex)
face->indices[1];
+ triangle->indices
Member[2] = (uintindex)
face->indices[2];
+ triangle->middle.Add(mesh.vertices[triangle->indices
Member[0]], mesh.vertices[triangle->indicesMember
[1]]);
+ triangle->middle.Add(triangle->middle, mesh.vertices[triangle->indices
Member
[2]]);
triangle->plane.FromPointsf(
triangle->plane.FromPointsf(
- mesh.vertices[triangle->indices
32
[2]],
- mesh.vertices[triangle->indices
32
[1]],
- mesh.vertices[triangle->indices
32
[0]]);
+ mesh.vertices[triangle->indices
Member
[2]],
+ mesh.vertices[triangle->indices
Member
[1]],
+ mesh.vertices[triangle->indices
Member
[0]]);
mesh.UnlockPrimitive(triangle);
}
mesh.UnlockPrimitive(triangle);
}
@@
-800,7
+810,7
@@
static bool ReadTriMesh(FileInfo * info, Object object)
}
else
{
}
else
{
- PrimitiveGroup group = mesh.AddPrimitiveGroup({ triangles, indices32bit =
true
}, faces.count * 3);
+ PrimitiveGroup group = mesh.AddPrimitiveGroup({ triangles, indices32bit =
USE_32_BIT_INDICES
}, faces.count * 3);
if(group)
{
c = 0;
if(group)
{
c = 0;
@@
-811,15
+821,15
@@
static bool ReadTriMesh(FileInfo * info, Object object)
if(object.flags.flipWindings)
{
if(object.flags.flipWindings)
{
- group.indices
32[c*3] =
face->indices[2];
- group.indices
32[c*3+1] =
face->indices[1];
- group.indices
32[c*3+2] =
face->indices[0];
+ group.indices
Member[c*3] = (uintindex)
face->indices[2];
+ group.indices
Member[c*3+1] = (uintindex)
face->indices[1];
+ group.indices
Member[c*3+2] = (uintindex)
face->indices[0];
}
else
{
}
else
{
- group.indices
32[c*3] =
face->indices[0];
- group.indices
32[c*3+1] =
face->indices[1];
- group.indices
32[c*3+2] =
face->indices[2];
+ group.indices
Member[c*3] = (uintindex)
face->indices[0];
+ group.indices
Member[c*3+1] = (uintindex)
face->indices[1];
+ group.indices
Member[c*3+2] = (uintindex)
face->indices[2];
}
face->done = true;
c++;
}
face->done = true;
c++;
@@
-836,7
+846,7
@@
static bool ReadTriMesh(FileInfo * info, Object object)
count++;
if(count)
{
count++;
if(count)
{
- PrimitiveGroup group = mesh.AddPrimitiveGroup({ triangles, indices32bit =
true
}, count * 3);
+ PrimitiveGroup group = mesh.AddPrimitiveGroup({ triangles, indices32bit =
USE_32_BIT_INDICES
}, count * 3);
if(group)
{
for(c = 0; c<nFaces; c++)
if(group)
{
for(c = 0; c<nFaces; c++)
@@
-844,9
+854,9
@@
static bool ReadTriMesh(FileInfo * info, Object object)
Face * face = &info->faces[c];
if(!face->done)
{
Face * face = &info->faces[c];
if(!face->done)
{
- group.indices
32[c*3] =
face->indices[0];
- group.indices
32[c*3+1] =
face->indices[1];
- group.indices
32[c*3+2] =
face->indices[2];
+ group.indices
Member[c*3] = (uintindex)
face->indices[0];
+ group.indices
Member[c*3+1] = (uintindex)
face->indices[1];
+ group.indices
Member[c*3+2] = (uintindex)
face->indices[2];
}
}
mesh.UnlockPrimitiveGroup(group);
}
}
mesh.UnlockPrimitiveGroup(group);