From 15740faf9fe9fe4be08965098bbf2947e096aeeb Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 14 Aug 2019 22:50:43 +0800 Subject: +Unity Runtime code --- .../ParticleSystem/ParticleCollisionEvents.h | 42 ++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 Runtime/Graphics/ParticleSystem/ParticleCollisionEvents.h (limited to 'Runtime/Graphics/ParticleSystem/ParticleCollisionEvents.h') 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 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& GetCollisionEventThreadArray (); + const dynamic_array& GetCollisionEventScriptArray () const; +}; -- cgit v1.1-26-g67d0