summaryrefslogtreecommitdiff
path: root/Runtime/Graphics/ParticleSystem/ParticleCollisionEvents.h
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-08-14 22:50:43 +0800
committerchai <chaifix@163.com>2019-08-14 22:50:43 +0800
commit15740faf9fe9fe4be08965098bbf2947e096aeeb (patch)
treea730ec236656cc8cab5b13f088adfaed6bb218fb /Runtime/Graphics/ParticleSystem/ParticleCollisionEvents.h
+Unity Runtime codeHEADmaster
Diffstat (limited to 'Runtime/Graphics/ParticleSystem/ParticleCollisionEvents.h')
-rw-r--r--Runtime/Graphics/ParticleSystem/ParticleCollisionEvents.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/Runtime/Graphics/ParticleSystem/ParticleCollisionEvents.h b/Runtime/Graphics/ParticleSystem/ParticleCollisionEvents.h
new file mode 100644
index 0000000..98260ee
--- /dev/null
+++ b/Runtime/Graphics/ParticleSystem/ParticleCollisionEvents.h
@@ -0,0 +1,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;
+};