70 lines
2.6 KiB
C#
70 lines
2.6 KiB
C#
/*=========================================================================
|
|
|
|
Library: iMSTK-Unity
|
|
|
|
Copyright (c) Kitware, Inc.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
|
|
=========================================================================*/
|
|
|
|
using UnityEngine;
|
|
|
|
namespace ImstkUnity
|
|
{
|
|
[RequireComponent(typeof(Transform))]
|
|
public abstract class DynamicalModel : ImstkBehaviour
|
|
{
|
|
// HS 20221220 Need to figure out what we need at this level
|
|
// - What is common setup, what can just move into Deformable/Rigid
|
|
// - What distinguishes an object that can collied to one that doesn't (this is
|
|
// needed for setting up the collision handling object)
|
|
|
|
// Components
|
|
protected MeshFilter meshFilter = null;
|
|
|
|
protected Imstk.CollidingObject imstkObject;
|
|
|
|
// Indicates that geometry changes may happen as opposed to just
|
|
// position changes
|
|
// If true update needs to refresh vertex and triangle indices rather
|
|
// than just copying positions
|
|
public bool dynamicGeometry = false;
|
|
|
|
// Tells the object to ignore the global gravity parameter
|
|
public bool ignoreGravity = false;
|
|
|
|
/// <summary>
|
|
/// Get the pointer to the object in c (not available until after initialize)
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public Imstk.CollidingObject GetDynamicObject() { return imstkObject; }
|
|
|
|
// NOTE HS 20221220 Refactor readonly properties, initialize in each object
|
|
public abstract Imstk.Geometry GetVisualGeometry();
|
|
public abstract Imstk.Geometry GetPhysicsGeometry();
|
|
public abstract Imstk.Geometry GetCollidingGeometry();
|
|
|
|
protected abstract Imstk.CollidingObject InitObject();
|
|
|
|
protected abstract void Configure();
|
|
|
|
/// <summary>
|
|
/// Each subclassed model may *apply* boundary conditions differently
|
|
/// </summary>
|
|
/// <param name="conditions">All the conditions to be processed</param>
|
|
protected virtual void ProcessBoundaryConditions(BoundaryCondition[] conditions) { }
|
|
|
|
protected abstract void InitGeometry();
|
|
};
|
|
} |