aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/OptionalModules/Scripting/Minimodule/Object/IObjectPhysics.cs
blob: 3682e9b83dbc1a8a909563617581341ae4f7cced (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
using System;
using System.Collections.Generic;
using System.Text;
using OpenMetaverse;

namespace OpenSim.Region.OptionalModules.Scripting.Minimodule.Object
{
    /// <summary>
    /// This implements an interface similar to that provided by physics engines to OpenSim internally.
    /// Eg, PhysicsActor. It is capable of setting and getting properties related to the current
    /// physics scene representation of this object.
    /// </summary>
    public interface IObjectPhysics
    {
        bool Enabled { get; set; }

        bool Phantom { get; set; }
        bool PhantomCollisions { get; set; }

        double Density { get; set; }
        double Mass { get; set; }
        double Buoyancy { get; set; }

        Vector3 GeometricCenter { get; }
        Vector3 CenterOfMass { get; }

        Vector3 RotationalVelocity { get; set; }
        Vector3 Velocity { get; set; }
        Vector3 Torque { get; set; }
        Vector3 Acceleration { get; }
        Vector3 Force { get; set; }

        bool FloatOnWater { set; }

        void AddForce(Vector3 force, bool pushforce);
        void AddAngularForce(Vector3 force, bool pushforce);
        void SetMomentum(Vector3 momentum);
    }
}