18#ifndef BIFROST_GEOMETRY_PRIMITIVE_H
19#define BIFROST_GEOMETRY_PRIMITIVE_H
64template<
typename Prototypes>
69 return std::find_if(std::begin(prototypes), std::end(prototypes), isA);
82 auto index = std::distance(prototypes->begin(), it);
347 unsigned subdivisions,
A resizable container of contiguous elements.
Smart pointers used to allow custom user classes (opaque classes) to be used within Amino graphs....
Definition of macros for symbol visibility.
#define BIFROST_GEOMETRY_DECL
Geometry related types that flow in the graph that are defined in C++.
Geo Property key strings declaration. Used as keys in Geometry Objects.
Bifrost object interface declaration.
void BIFROST_GEOMETRY_DECL clearGeometryPrototypes()
clear internal geometry structures kept as prototypes
decltype(auto) findPrototype(Bifrost::Object const &obj, Prototypes const &prototypes)
Finds the first prototype in the given prototypes such that the given object satisfies this prototype...
Common::GeometryType resolveType(Bifrost::Object const &obj)
Determine the type of an object.
BIFROST_GEOMETRY_DECL Amino::Ptr< Amino::Array< Amino::Ptr< Bifrost::Object > > > getGeometryTypes()
Return a list of geometry prototypes, ordered from most to least specific. Can be used to find the ty...
Amino::Ptr< Bifrost::Object > BIFROST_GEOMETRY_DECL getFlipLiquidPrototype()
Returns the prototypical liquid set object.
Amino::Ptr< Bifrost::Object > BIFROST_GEOMETRY_DECL getLevelSetPrototype()
Returns the prototypical level set object.
void BIFROST_GEOMETRY_DECL populateFlipLiquid(Bifrost::Object &object)
Populate an object with the required properties to conform to the liquid geometry schema.
Amino::Ptr< Bifrost::Object > BIFROST_GEOMETRY_DECL getFogVolumePrototype()
Returns the prototypical fog volume object.
void BIFROST_GEOMETRY_DECL populateVolume(Bifrost::Object &object)
Populate an object with the required properties to conform to the volume geometry schema.
void BIFROST_GEOMETRY_DECL populateLevelSet(Bifrost::Object &object)
Populate an object with the required properties to conform to the level set geometry schema.
Amino::Ptr< Bifrost::Object > BIFROST_GEOMETRY_DECL getVolumePrototype()
Returns the prototypical volume object.
void BIFROST_GEOMETRY_DECL populateFogVolume(Bifrost::Object &object)
Populate an object with the required properties to conform to the fog volume geometry schema.
void BIFROST_GEOMETRY_DECL populatePointCloud(Bifrost::Object &object)
Populate an object with the required properties to conform to the point cloud geometry schema.
Amino::Ptr< Bifrost::Object > BIFROST_GEOMETRY_DECL getPointCloudPrototype()
Returns the prototypical point cloud object.
void BIFROST_GEOMETRY_DECL populateStrand(Bifrost::Object &object)
Populate an object with the required properties to conform to the strand geometry schema.
Amino::Ptr< Bifrost::Object > BIFROST_GEOMETRY_DECL getStrandPrototype()
Returns the prototypical strand object.
void BIFROST_GEOMETRY_DECL populateSphereMesh(float radius, Bifrost::Object &object)
Populate an object with the properties of a mesh sphere.
void BIFROST_GEOMETRY_DECL populateCubeMesh(float width, Bifrost::Object &object)
Populate an object with the properties and values required to define a six-sided cube mesh.
void BIFROST_GEOMETRY_DECL populateMesh(Bifrost::Object &object)
Populate an object with the required properties to conform to the Mesh geometry schema.
Amino::Ptr< Bifrost::Object > BIFROST_GEOMETRY_DECL getMeshPrototype()
Returns the prototypical mesh object.
void BIFROST_GEOMETRY_DECL populatePlaneMesh(float width, unsigned subdivisions, Bifrost::Object &object)
Populate an object with the properties and values required to define a unit plane with the requested ...
void BIFROST_GEOMETRY_DECL populateInstances(Bifrost::Object &object)
Populate an object with the required properties to conform to the Instances schema.
Amino::Ptr< Bifrost::Object > BIFROST_GEOMETRY_DECL getInstancesPrototype()
Returns the prototypical Instances object.
Define a Amino array of elements of type T.
Smart pointers allowing custom user classes (opaque classes) to be used within Amino graphs.
An interface for dictionary-like objects.
static bool isA(Object const &object, Object const &prototype)
Check if a given object contains all of the properties of the specified prototype.