Main Page Class List Class Members

# sdk/toolkit/include/NvBlastTkEvent.h

Go to the documentation of this file.

    00001 // This code contains NVIDIA Confidential Information and is disclosed to you
    00002 // under a form of NVIDIA software license agreement provided separately to you.
    00003 //
    00004 // Notice
    00005 // NVIDIA Corporation and its licensors retain all intellectual property and
    00006 // proprietary rights in and to this software and related documentation and
    00007 // any modifications thereto. Any use, reproduction, disclosure, or
    00008 // distribution of this software and related documentation without an express
    00009 // license agreement from NVIDIA Corporation is strictly prohibited.
    00010 //
    00011 // ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
    00012 // NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
    00013 // THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
    00014 // MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
    00015 //
    00016 // Information and code furnished is believed to be accurate and reliable.
    00017 // However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
    00018 // information or for any infringement of patents or other rights of third parties that may
    00019 // result from its use. No license is granted by implication or otherwise under any patent
    00020 // or patent rights of NVIDIA Corporation. Details are subject to change without notice.
    00021 // This code supersedes and replaces all information previously supplied.
    00022 // NVIDIA Corporation products are not authorized for use as critical
    00023 // components in life support devices or systems without express written approval of
    00024 // NVIDIA Corporation.
    00025 //
    00026 // Copyright (c) 2016-2020 NVIDIA Corporation. All rights reserved.
    00027
    00028
    00029 #ifndef NVBLASTTKEVENT_H
    00030 #define NVBLASTTKEVENT_H
    00031
    00032 #include <vector>
    00033
    00034 #include "NvBlastTypes.h"
    00035
    00036
    00037 namespace Nv
    00038 {
    00039 namespace Blast
    00040 {
    00041
    00042 // Forward declarations
    00043 class TkObject;
    00044 class TkActor;
    00045 class TkFamily;
    00046 class TkJoint;
    00047
    00048
    00053 struct TkActorData
    00054 {
    00055     TkFamily*   family;
    00056     void*       userData;
    00057     uint32_t    index;
    00058 };
    00059
    00060
    00065 struct TkEvent
    00066 {
    00067     // Enums
    00068     enum Type
    00069     {
    00070         Split,
    00071         FractureCommand,
    00072         FractureEvent,
    00073         JointUpdate,
    00074
    00075         TypeCount
    00076     };
    00077
    00078     // Data
    00079     const void* payload;
    00080     Type        type;
    00081
    00087     template<typename T>
    00088     const T* getPayload() const { return reinterpret_cast<const T*>(payload); }
    00089 };
    00090
    00091
    00099 struct TkSplitEvent
    00100 {
    00101     enum { EVENT_TYPE = TkEvent::Split };
    00102
    00103     TkActorData parentData;
    00104     uint32_t    numChildren;
    00105     TkActor**   children;
    00106 };
    00107
    00108
    00114 struct TkFractureCommands
    00115 {
    00116     enum { EVENT_TYPE = TkEvent::FractureCommand };
    00117
    00118     TkActorData             tkActorData;
    00119     NvBlastFractureBuffers  buffers;
    00120 };
    00121
    00122
    00128 struct TkFractureEvents
    00129 {
    00130     enum { EVENT_TYPE = TkEvent::FractureEvent };
    00131
    00132     TkActorData             tkActorData;
    00133     NvBlastFractureBuffers  buffers;
    00134     uint32_t                bondsDamaged;
    00135     uint32_t                bondsBroken;
    00136     uint32_t                chunksDamaged;
    00137     uint32_t                chunksBroken;
    00138 };
    00139
    00140
    00148 struct TkJointUpdateEvent
    00149 {
    00150     enum { EVENT_TYPE = TkEvent::JointUpdate };
    00151
    00152     enum Subtype
    00153     {
    00154         External,
    00155         Changed,
    00156         Unreferenced
    00157     };
    00158
    00159     TkJoint*    joint;
    00160     Subtype     subtype;
    00161 };
    00162
    00163
    00168 class TkEventListener
    00169 {
    00170 public:
    00177     virtual void    receive(const TkEvent* events, uint32_t eventCount) = 0;
    00178 };
    00179
    00180 } // namespace Blast
    00181 } // namespace Nv
    00182
    00183
    00184 #endif // ifndef NVBLASTTKEVENT_H