GQ_Communicate/GQ_TongXin/Assets/Obi/Plugins/iOS/OniHelpers.h

73 lines
2.4 KiB
C++

/*
* OniHelpers.h
* Oni
*
* Created by José María Méndez González on 21/9/15.
* Copyright (c) 2015 ArK. All rights reserved.
*
*/
#ifndef OniHelpers_
#define OniHelpers_
#include "Dense"
#include "HalfEdgeMesh.h"
#if defined(__APPLE__) || defined(ANDROID)
#define EXPORT __attribute__((visibility("default")))
#else
#define EXPORT __declspec(dllexport)
#endif
namespace Oni
{
extern "C"
{
EXPORT int MakePhase(int group, int flags);
EXPORT int GetGroupFromPhase(int phase);
/**
* Calculates the rest bend factor for a bending constraint between 3 particles.
* @param coordinates an array of 9 floats: x,y,z of the first particle, x,y,z of the second particle, x,y,z of the third (central) particle.
*/
EXPORT float BendingConstraintRest(float* coordinates);
EXPORT HalfEdgeMesh* CreateHalfEdgeMesh();
EXPORT void DestroyHalfEdgeMesh(HalfEdgeMesh* mesh);
EXPORT void GetHalfEdgeMeshInfo(HalfEdgeMesh* mesh, HalfEdgeMesh::MeshInformation* mesh_info);
EXPORT void CalculatePrimitiveCounts(HalfEdgeMesh* mesh,
Eigen::Vector3f* vertices,
int* triangles,
int vertex_count,
int triangle_count);
EXPORT void Generate(HalfEdgeMesh* mesh,
Eigen::Vector3f* vertices,
int* triangles,
int vertex_count,
int triangle_count,
float* scale);
EXPORT void SetHalfEdges(HalfEdgeMesh* mesh,HalfEdgeMesh::HalfEdge* half_edges, int count);
EXPORT void SetVertices(HalfEdgeMesh* mesh,HalfEdgeMesh::Vertex* vertices, int count);
EXPORT void SetFaces(HalfEdgeMesh* mesh,HalfEdgeMesh::Face* faces, int count);
EXPORT void SetNormals(HalfEdgeMesh* mesh,Eigen::Vector3f* normals);
EXPORT void SetTangents(HalfEdgeMesh* mesh,Vector4fUnaligned* tangents);
EXPORT void SetInverseOrientations(HalfEdgeMesh* mesh,QuaternionfUnaligned* orientations);
EXPORT void SetVisualMap(HalfEdgeMesh* mesh,int* map);
EXPORT int GetHalfEdgeCount(HalfEdgeMesh* mesh);
EXPORT int GetVertexCount(HalfEdgeMesh* mesh);
EXPORT int GetFaceCount(HalfEdgeMesh* mesh);
}
}
#endif