Adding ViroKit. Needs AWSCore :(
This commit is contained in:
96
mobile/ios/ViroKit.framework/Headers/VROFrustum.h
Normal file
96
mobile/ios/ViroKit.framework/Headers/VROFrustum.h
Normal file
@@ -0,0 +1,96 @@
|
||||
//
|
||||
// VROFrustum.h
|
||||
// ViroRenderer
|
||||
//
|
||||
// Created by Raj Advani on 10/15/15.
|
||||
// Copyright © 2015 Viro Media. All rights reserved.
|
||||
//
|
||||
|
||||
#ifndef VROFRUSTUM_H_
|
||||
#define VROFRUSTUM_H_
|
||||
|
||||
#include "VROFrustumPlane.h"
|
||||
#include "VROVector3f.h"
|
||||
#include "VROFrustumBoxIntersectionMetadata.h"
|
||||
|
||||
/*
|
||||
Plane identifiers.
|
||||
*/
|
||||
enum class VROFrustumSide : int {
|
||||
Left = 0,
|
||||
Right = 1,
|
||||
Bottom = 2,
|
||||
Top = 3,
|
||||
Near = 4,
|
||||
Far = 5
|
||||
};
|
||||
|
||||
/*
|
||||
Enum for intersection testing results.
|
||||
*/
|
||||
enum class VROFrustumResult {
|
||||
Inside,
|
||||
Intersects,
|
||||
Outside
|
||||
};
|
||||
|
||||
class VROFrustum {
|
||||
public:
|
||||
|
||||
/*
|
||||
Create a new frustum.
|
||||
*/
|
||||
explicit VROFrustum();
|
||||
virtual ~VROFrustum();
|
||||
|
||||
/*
|
||||
Generic initialization.
|
||||
*/
|
||||
void fitToModelView(const float *view, const float *projection,
|
||||
const float bufferSides, const float bufferNear, const float bufferFar);
|
||||
|
||||
/*
|
||||
Intersection testing (automatically chooses best method).
|
||||
*/
|
||||
VROFrustumResult intersect(const VROBoundingBox &box, VROFrustumBoxIntersectionMetadata *metadata) const;
|
||||
|
||||
/*
|
||||
Intersect this frustum with a bounding box, utilizing the far points optimization and
|
||||
temporal coherency optimizations.
|
||||
*/
|
||||
VROFrustumResult intersectAllOpt(const VROBoundingBox &box, VROFrustumBoxIntersectionMetadata *metadata) const;
|
||||
|
||||
/*
|
||||
Frustum intersection using the "far point" optimization. The far point optimization enables us
|
||||
to determine if there's an intersection between a frustum and an AABB using only two plane->point
|
||||
distance calculations per frustum plane.
|
||||
*/
|
||||
VROFrustumResult intersectWithFarPointsOpt(const VROBoundingBox &box) const;
|
||||
|
||||
/*
|
||||
Robust frustum intersection, using no optimizations.
|
||||
*/
|
||||
VROFrustumResult intersectNoOpt(const VROBoundingBox &box) const;
|
||||
|
||||
/*
|
||||
Check if the given point is contained by this frustum.
|
||||
*/
|
||||
bool containsPoint(const VROVector3f &point) const;
|
||||
|
||||
/*
|
||||
Get the distance of the given point from the near or far clipping plane of this
|
||||
frustum.
|
||||
*/
|
||||
float distanceFromFCP(VROVector3f pt) const;
|
||||
float distanceFromNCP(VROVector3f pt) const;
|
||||
|
||||
private:
|
||||
|
||||
/*
|
||||
The planes composing this frustum: left, right, bottom, top, near, far.
|
||||
*/
|
||||
VROFrustumPlane _planes[6];
|
||||
|
||||
};
|
||||
|
||||
#endif /* VROFRUSTUM_H_ */
|
||||
Reference in New Issue
Block a user