81 lines
3.3 KiB
C#
81 lines
3.3 KiB
C#
using UnityEngine;
|
|
|
|
// IMPORTANT! You should add RayFire namespace to use RayFire component's event.
|
|
using RayFire;
|
|
|
|
namespace RayFire
|
|
{
|
|
// Tutorial script. Allows to subscribe to Rigid component demolition.
|
|
public class DemolitionEventScript : MonoBehaviour
|
|
{
|
|
// Define if script should subscribe to global demolition event
|
|
public bool globalSubscription = false;
|
|
|
|
// Local Rigid component which will be checked for demolition.
|
|
// You can get RayfireRigid component which you want to check for demolition in any way you want.
|
|
// This is just a tutorial way to define it.
|
|
public bool localSubscription = false;
|
|
public RayfireRigid localRigidComponent;
|
|
|
|
// /////////////////////////////////////////////////////////
|
|
// Subscribe/Unsubscribe
|
|
// /////////////////////////////////////////////////////////
|
|
|
|
// Subscribe to event
|
|
void OnEnable()
|
|
{
|
|
// Subscribe to global demolition event. Every demolition will invoke subscribed methods.
|
|
if (globalSubscription == true)
|
|
RFDemolitionEvent.GlobalEvent += GlobalMethod;
|
|
|
|
// Subscribe to local demolition event. Demolition of specific Rigid component will invoke subscribed methods.
|
|
if (localSubscription == true && localRigidComponent != null)
|
|
localRigidComponent.demolitionEvent.LocalEvent += LocalMethod;
|
|
}
|
|
|
|
// Unsubscribe from event
|
|
void OnDisable()
|
|
{
|
|
// Unsubscribe from global demolition event.
|
|
if (globalSubscription == true)
|
|
RFDemolitionEvent.GlobalEvent -= GlobalMethod;
|
|
|
|
// Unsubscribe from local demolition event.
|
|
if (localSubscription == true && localRigidComponent != null)
|
|
localRigidComponent.demolitionEvent.LocalEvent -= LocalMethod;
|
|
}
|
|
|
|
// /////////////////////////////////////////////////////////
|
|
// Subscription Methods
|
|
// /////////////////////////////////////////////////////////
|
|
|
|
// IMPORTANT!. Subscribed method should has following signature.
|
|
// Void return type and one RayfireRigid input parameter.
|
|
// RayfireRigid input parameter is Rigid component which was demolished.
|
|
// In this way you can get demolition data.
|
|
|
|
// Method for local demolition subscription
|
|
void LocalMethod(RayfireRigid rigid)
|
|
{
|
|
// Show amount of fragments
|
|
Debug.Log ("Local demolition: " + rigid.name + " was just demolished and created " + rigid.fragments.Count.ToString() + " fragments");
|
|
|
|
// Show contact point
|
|
Debug.Log ("Contact point: " + rigid.limitations.contactVector3.ToString());
|
|
|
|
transform.position = rigid.limitations.contactVector3;
|
|
}
|
|
|
|
// Method for global demolition subscription
|
|
void GlobalMethod(RayfireRigid rigid)
|
|
{
|
|
// Show amount of fragments
|
|
Debug.Log ("Global demolition: " + rigid.name + " was just demolished and created " + rigid.fragments.Count.ToString() + " fragments");
|
|
|
|
// Show contact point
|
|
Debug.Log ("Contact point: " + rigid.limitations.contactVector3.ToString());
|
|
|
|
transform.position = rigid.limitations.contactVector3;
|
|
}
|
|
}
|
|
} |