blob: 98260ee0211188572b12cdb2453ae1432f119e7b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
#pragma once
#include "Runtime/BaseClasses/GameObject.h"
#include "Runtime/Math/Vector3.h"
#include "Runtime/Mono/MonoScript.h"
#include "Runtime/Utilities/dynamic_array.h"
struct ParticleCollisionEvent
{
ParticleCollisionEvent (const Vector3f& intersection, const Vector3f& normal, const Vector3f& velocity, int colliderInstanceID, int rigidBodyOrColliderInstanceID);
Vector3f m_Intersection;
Vector3f m_Normal;
Vector3f m_Velocity;
int m_ColliderInstanceID;
int m_RigidBodyOrColliderInstanceID; // This can be a Collider or a RigidBody component
};
struct MonoParticleCollisionEvent
{
Vector3f m_Intersection;
Vector3f m_Normal;
Vector3f m_Velocity;
int m_ColliderInstanceID;
};
struct CollisionEvents
{
CollisionEvents ();
dynamic_array<ParticleCollisionEvent> collisionEvents[2];
int currentCollisionEventThreadArray;
void Clear ();
bool AddEvent (const ParticleCollisionEvent& event);
int GetCollisionEventCount () const;
void SwapCollisionEventArrays ();
void SortCollisionEventThreadArray ();
void SendCollisionEvents (Unity::Component& particleSystem) const;
int GetCollisionEvents (int instanceId, MonoParticleCollisionEvent* collisionEvents, int size) const;
dynamic_array<ParticleCollisionEvent>& GetCollisionEventThreadArray ();
const dynamic_array<ParticleCollisionEvent>& GetCollisionEventScriptArray () const;
};
|