56 lines
1.3 KiB
C#
56 lines
1.3 KiB
C#
using UnityEngine;
|
|
using Unity.Profiling;
|
|
using System;
|
|
using System.Collections;
|
|
|
|
namespace Obi{
|
|
|
|
/**
|
|
* Small helper class that lets you specify Obi-only properties for rigidbodies.
|
|
*/
|
|
|
|
[ExecuteInEditMode]
|
|
public abstract class ObiRigidbodyBase : MonoBehaviour
|
|
{
|
|
|
|
public bool kinematicForParticles = false;
|
|
|
|
protected ObiRigidbodyHandle rigidbodyHandle;
|
|
public ObiRigidbodyHandle handle
|
|
{
|
|
get
|
|
{
|
|
if (rigidbodyHandle == null || !rigidbodyHandle.isValid)
|
|
{
|
|
var world = ObiColliderWorld.GetInstance();
|
|
|
|
// create the material:
|
|
rigidbodyHandle = world.CreateRigidbody();
|
|
rigidbodyHandle.owner = this;
|
|
}
|
|
return rigidbodyHandle;
|
|
}
|
|
}
|
|
|
|
protected virtual void OnEnable()
|
|
{
|
|
//handle = ObiColliderWorld.GetInstance().CreateRigidbody();
|
|
//handle.owner = this;
|
|
}
|
|
|
|
public void OnDisable()
|
|
{
|
|
ObiColliderWorld.GetInstance().DestroyRigidbody(handle);
|
|
}
|
|
|
|
public abstract void UpdateIfNeeded(float stepTime);
|
|
|
|
/**
|
|
* Reads velocities back from the solver.
|
|
*/
|
|
public abstract void UpdateVelocities(Vector3 linearDelta, Vector3 angularDelta);
|
|
|
|
}
|
|
}
|
|
|