GroundEmitterActor.h
Go to the documentation of this file.
00001 /*
00002  * Copyright (c) 2008-2017, NVIDIA CORPORATION.  All rights reserved.
00003  *
00004  * NVIDIA CORPORATION and its licensors retain all intellectual property
00005  * and proprietary rights in and to this software, related documentation
00006  * and any modifications thereto.  Any use, reproduction, disclosure or
00007  * distribution of this software and related documentation without an express
00008  * license agreement from NVIDIA CORPORATION is strictly prohibited.
00009  */
00010 
00011 
00012 #ifndef GROUND_EMITTER_ACTOR_H
00013 #define GROUND_EMITTER_ACTOR_H
00014 
00015 #include "Apex.h"
00016 
00017 namespace nvidia
00018 {
00019 namespace apex
00020 {
00021 
00022 
00023 PX_PUSH_PACK_DEFAULT
00024 
00025 class GroundEmitterAsset;
00026 class RenderVolume;
00027 
00034 class MaterialLookupCallback
00035 {
00036 public:
00038     struct MaterialRequest
00039     {
00040         PxVec3      samplePosition; 
00041         uint32_t    outMaterialID; 
00042     };
00043 
00049     virtual void requestMaterialLookups(uint32_t requestCount, MaterialRequest* reqList) = 0;
00050 
00051     virtual ~MaterialLookupCallback() {}
00052 };
00053 
00055 class GroundEmitterActor : public Actor
00056 {
00057 protected:
00058     virtual ~GroundEmitterActor() {}
00059 
00060 public:
00064     virtual GroundEmitterAsset*     getEmitterAsset() const = 0;
00065 
00069     virtual const PxMat44           getPose() const = 0;
00073     virtual void                    setPose(const PxMat44& pos) = 0;
00074 
00076     virtual void                    setMaterialLookupCallback(MaterialLookupCallback*) = 0;
00077     
00079     virtual MaterialLookupCallback* getMaterialLookupCallback() const = 0;
00080 
00085     virtual void                    setAttachActor(PxActor*) = 0;
00086 
00090     virtual void                    setAttachRelativePosition(const PxVec3& pos) = 0;
00091 
00093     virtual const PxActor*          getAttachActor() const = 0;
00094 
00096     virtual const PxVec3&           getAttachRelativePosition() const = 0;
00097 
00098     /* Override some asset settings at run time */
00099 
00101     virtual void                    setDensity(const float&) = 0;
00102     
00104     virtual void                    setRadius(float) = 0;
00105     
00107     virtual void                    setMaxRaycastsPerFrame(uint32_t) = 0;
00108     
00110     virtual void                    setRaycastHeight(float) = 0;
00111     
00118     virtual void                    setSpawnHeight(float) = 0;
00119 
00121     virtual const float &           getDensity() const = 0;
00122     
00124     virtual float                   getRadius() const = 0;
00125     
00127     virtual uint32_t                getMaxRaycastsPerFrame() const = 0;
00128     
00130     virtual float                   getRaycastHeight() const = 0;
00131     
00137     virtual float                   getSpawnHeight() const = 0;
00138 
00140     virtual void                    setRaycastCollisionGroups(uint32_t) = 0;
00141 
00143     virtual void                    setRaycastCollisionGroupsMask(physx::PxFilterData*) = 0;
00144 
00145 
00147     virtual uint32_t                getRaycastCollisionGroups() const = 0;
00148 
00151     virtual void                    setPreferredRenderVolume(RenderVolume* volume) = 0;
00152 };
00153 
00154 
00155 PX_POP_PACK
00156 
00157 }
00158 } // end namespace nvidia
00159 
00160 #endif // GROUND_EMITTER_ACTOR_H

Generated on Tue Aug 1 2017 22:43:59

Copyright © 2012-2017 NVIDIA Corporation, 2701 San Tomas Expressway, Santa Clara, CA 95050 U.S.A. All rights reserved.