mirror of
https://github.com/opensim/opensim.git
synced 2026-08-08 02:05:34 +08:00
Major renaming of Physics dlls / folders. No functional changes, just renames.
This commit is contained in:
@@ -0,0 +1,171 @@
|
||||
/* The MIT License
|
||||
*
|
||||
* Copyright (c) 2010 Intel Corporation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Based on the convexdecomposition library from
|
||||
* <http://codesuppository.googlecode.com> by John W. Ratcliff and Stan Melax.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace OpenSim.Region.Physics.ConvexDecompositionDotNet
|
||||
{
|
||||
public class HullResult
|
||||
{
|
||||
public bool Polygons = true; // true if indices represents polygons, false indices are triangles
|
||||
public List<float3> OutputVertices = new List<float3>();
|
||||
public List<int> Indices;
|
||||
|
||||
// If triangles, then indices are array indexes into the vertex list.
|
||||
// If polygons, indices are in the form (number of points in face) (p1, p2, p3, ..) etc..
|
||||
}
|
||||
|
||||
public class PHullResult
|
||||
{
|
||||
public List<float3> Vertices = new List<float3>();
|
||||
public List<int> Indices = new List<int>();
|
||||
}
|
||||
|
||||
[Flags]
|
||||
public enum HullFlag : int
|
||||
{
|
||||
QF_DEFAULT = 0,
|
||||
QF_TRIANGLES = (1 << 0), // report results as triangles, not polygons.
|
||||
QF_SKIN_WIDTH = (1 << 2) // extrude hull based on this skin width
|
||||
}
|
||||
|
||||
public enum HullError : int
|
||||
{
|
||||
QE_OK, // success!
|
||||
QE_FAIL // failed.
|
||||
}
|
||||
|
||||
public class HullDesc
|
||||
{
|
||||
public HullFlag Flags; // flags to use when generating the convex hull.
|
||||
public List<float3> Vertices;
|
||||
public float NormalEpsilon; // the epsilon for removing duplicates. This is a normalized value, if normalized bit is on.
|
||||
public float SkinWidth;
|
||||
public uint MaxVertices; // maximum number of vertices to be considered for the hull!
|
||||
public uint MaxFaces;
|
||||
|
||||
public HullDesc()
|
||||
{
|
||||
Flags = HullFlag.QF_DEFAULT;
|
||||
Vertices = new List<float3>();
|
||||
NormalEpsilon = 0.001f;
|
||||
MaxVertices = 4096;
|
||||
MaxFaces = 4096;
|
||||
SkinWidth = 0.01f;
|
||||
}
|
||||
|
||||
public HullDesc(HullFlag flags, List<float3> vertices)
|
||||
{
|
||||
Flags = flags;
|
||||
Vertices = new List<float3>(vertices);
|
||||
NormalEpsilon = 0.001f;
|
||||
MaxVertices = 4096;
|
||||
MaxFaces = 4096;
|
||||
SkinWidth = 0.01f;
|
||||
}
|
||||
|
||||
public bool HasHullFlag(HullFlag flag)
|
||||
{
|
||||
return (Flags & flag) != 0;
|
||||
}
|
||||
|
||||
public void SetHullFlag(HullFlag flag)
|
||||
{
|
||||
Flags |= flag;
|
||||
}
|
||||
|
||||
public void ClearHullFlag(HullFlag flag)
|
||||
{
|
||||
Flags &= ~flag;
|
||||
}
|
||||
}
|
||||
|
||||
public class ConvexH
|
||||
{
|
||||
public struct HalfEdge
|
||||
{
|
||||
public short ea; // the other half of the edge (index into edges list)
|
||||
public byte v; // the vertex at the start of this edge (index into vertices list)
|
||||
public byte p; // the facet on which this edge lies (index into facets list)
|
||||
|
||||
public HalfEdge(short _ea, byte _v, byte _p)
|
||||
{
|
||||
ea = _ea;
|
||||
v = _v;
|
||||
p = _p;
|
||||
}
|
||||
|
||||
public HalfEdge(HalfEdge e)
|
||||
{
|
||||
ea = e.ea;
|
||||
v = e.v;
|
||||
p = e.p;
|
||||
}
|
||||
}
|
||||
|
||||
public List<float3> vertices = new List<float3>();
|
||||
public List<HalfEdge> edges = new List<HalfEdge>();
|
||||
public List<Plane> facets = new List<Plane>();
|
||||
|
||||
public ConvexH(int vertices_size, int edges_size, int facets_size)
|
||||
{
|
||||
vertices = new List<float3>(vertices_size);
|
||||
edges = new List<HalfEdge>(edges_size);
|
||||
facets = new List<Plane>(facets_size);
|
||||
}
|
||||
}
|
||||
|
||||
public class VertFlag
|
||||
{
|
||||
public byte planetest;
|
||||
public byte junk;
|
||||
public byte undermap;
|
||||
public byte overmap;
|
||||
}
|
||||
|
||||
public class EdgeFlag
|
||||
{
|
||||
public byte planetest;
|
||||
public byte fixes;
|
||||
public short undermap;
|
||||
public short overmap;
|
||||
}
|
||||
|
||||
public class PlaneFlag
|
||||
{
|
||||
public byte undermap;
|
||||
public byte overmap;
|
||||
}
|
||||
|
||||
public class Coplanar
|
||||
{
|
||||
public ushort ea;
|
||||
public byte v0;
|
||||
public byte v1;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user