GroundEmitterActor.h
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 Fri Dec 15 2017 13:58:35 Copyright © 2012-2017 NVIDIA Corporation, 2701 San Tomas Expressway, Santa Clara, CA 95050 U.S.A. All rights reserved.