first commit
This commit is contained in:
6
thirdparty/ode-0.16.5/GIMPACT/include/GIMPACT/Makefile.am
vendored
Normal file
6
thirdparty/ode-0.16.5/GIMPACT/include/GIMPACT/Makefile.am
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
noinst_HEADERS = \
|
||||
gim_boxpruning.h gim_contact.h gim_geometry.h \
|
||||
gim_math.h gim_memory.h gimpact.h \
|
||||
gim_radixsort.h gim_tri_capsule_collision.h gim_tri_collision.h \
|
||||
gim_trimesh.h gim_tri_sphere_collision.h
|
||||
|
||||
533
thirdparty/ode-0.16.5/GIMPACT/include/GIMPACT/Makefile.in
vendored
Normal file
533
thirdparty/ode-0.16.5/GIMPACT/include/GIMPACT/Makefile.in
vendored
Normal file
@@ -0,0 +1,533 @@
|
||||
# Makefile.in generated by automake 1.15 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = GIMPACT/include/GIMPACT
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
|
||||
$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
|
||||
$(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/ode/src/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
HEADERS = $(noinst_HEADERS)
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
# *not* preserved.
|
||||
am__uniquify_input = $(AWK) '\
|
||||
BEGIN { nonempty = 0; } \
|
||||
{ items[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in items) print i; }; } \
|
||||
'
|
||||
# Make sure the list of sources is unique. This is necessary because,
|
||||
# e.g., the same source file might be shared among _SOURCES variables
|
||||
# for different programs/libraries.
|
||||
am__define_uniq_tagged_files = \
|
||||
list='$(am__tagged_files)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
ALLOCA = @ALLOCA@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AS = @AS@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CCD_CFLAGS = @CCD_CFLAGS@
|
||||
CCD_LIBS = @CCD_LIBS@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DOXYGEN = @DOXYGEN@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
EXTRA_LIBTOOL_LDFLAGS = @EXTRA_LIBTOOL_LDFLAGS@
|
||||
FGREP = @FGREP@
|
||||
GL_LIBS = @GL_LIBS@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBSTDCXX = @LIBSTDCXX@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
ODE_PRECISION = @ODE_PRECISION@
|
||||
ODE_VERSION = @ODE_VERSION@
|
||||
ODE_VERSION_INFO = @ODE_VERSION_INFO@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
|
||||
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
WINDRES = @WINDRES@
|
||||
X11_CFLAGS = @X11_CFLAGS@
|
||||
X11_LIBS = @X11_LIBS@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
ac_ct_WINDRES = @ac_ct_WINDRES@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
runstatedir = @runstatedir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
subdirs = @subdirs@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
noinst_HEADERS = \
|
||||
gim_boxpruning.h gim_contact.h gim_geometry.h \
|
||||
gim_math.h gim_memory.h gimpact.h \
|
||||
gim_radixsort.h gim_tri_capsule_collision.h gim_tri_collision.h \
|
||||
gim_trimesh.h gim_tri_sphere_collision.h
|
||||
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign GIMPACT/include/GIMPACT/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign GIMPACT/include/GIMPACT/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
ID: $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
tags: tags-am
|
||||
TAGS: tags
|
||||
|
||||
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
$(am__define_uniq_tagged_files); \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
if test $$# -gt 0; then \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
"$$@" $$unique; \
|
||||
else \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: ctags-am
|
||||
|
||||
CTAGS: ctags
|
||||
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
cscopelist: cscopelist-am
|
||||
|
||||
cscopelist-am: $(am__tagged_files)
|
||||
list='$(am__tagged_files)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(HEADERS)
|
||||
installdirs:
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-tags
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
|
||||
clean-libtool cscopelist-am ctags ctags-am distclean \
|
||||
distclean-generic distclean-libtool distclean-tags distdir dvi \
|
||||
dvi-am html html-am info info-am install install-am \
|
||||
install-data install-data-am install-dvi install-dvi-am \
|
||||
install-exec install-exec-am install-html install-html-am \
|
||||
install-info install-info-am install-man install-pdf \
|
||||
install-pdf-am install-ps install-ps-am install-strip \
|
||||
installcheck installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-generic \
|
||||
mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
|
||||
uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
323
thirdparty/ode-0.16.5/GIMPACT/include/GIMPACT/gim_boxpruning.h
vendored
Normal file
323
thirdparty/ode-0.16.5/GIMPACT/include/GIMPACT/gim_boxpruning.h
vendored
Normal file
@@ -0,0 +1,323 @@
|
||||
#ifndef GIM_BOXPRUNING_H_INCLUDED
|
||||
#define GIM_BOXPRUNING_H_INCLUDED
|
||||
|
||||
/*! \file gim_boxpruning.h
|
||||
\author Francisco Le<4C>n
|
||||
*/
|
||||
/*
|
||||
-----------------------------------------------------------------------------
|
||||
This source file is part of GIMPACT Library.
|
||||
|
||||
For the latest info, see http://gimpact.sourceforge.net/
|
||||
|
||||
Copyright (c) 2006 Francisco Leon. C.C. 80087371.
|
||||
email: projectileman@yahoo.com
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of EITHER:
|
||||
(1) The GNU Lesser General Public License as published by the Free
|
||||
Software Foundation; either version 2.1 of the License, or (at
|
||||
your option) any later version. The text of the GNU Lesser
|
||||
General Public License is included with this library in the
|
||||
file GIMPACT-LICENSE-LGPL.TXT.
|
||||
(2) The BSD-style license that is included with this library in
|
||||
the file GIMPACT-LICENSE-BSD.TXT.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files
|
||||
GIMPACT-LICENSE-LGPL.TXT and GIMPACT-LICENSE-BSD.TXT for more details.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
|
||||
#include "GIMPACT/gim_radixsort.h"
|
||||
#include "GIMPACT/gim_geometry.h"
|
||||
|
||||
/*! \defgroup BOX_PRUNNING
|
||||
|
||||
\brief
|
||||
Tools for find overlapping objects on a scenary. These functions sort boxes for faster collisioin queries, using radix sort or quick sort as convenience. See \ref SORTING .
|
||||
<ul>
|
||||
<li> For using these collision routines, you must create a \ref GIM_AABB_SET by using this function : \ref gim_aabbset_alloc.
|
||||
<li> The GIM_AABB_SET objects must be updated on their boxes on each query, and they must be update by calling \ref gim_aabbset_update
|
||||
<li> Before calling collision functions, you must create a pair set with \ref GIM_CREATE_PAIR_SET
|
||||
<li> For finding collision pairs on a scene (common space for objects), call \ref gim_aabbset_self_intersections
|
||||
<li> For finding collision pairs between two box sets , call \ref gim_aabbset_box_collision
|
||||
<li> After using collision routines, you must destroy the pairset with \ref GIM_DESTROY_PAIR_SET
|
||||
<li> When the box set is no longer used, you must destroy it by calling \ref gim_aabbset_destroy
|
||||
</ul>
|
||||
*/
|
||||
//! @{
|
||||
//! Overlapping pair
|
||||
struct GIM_PAIR
|
||||
{
|
||||
GUINT32 m_index1;
|
||||
GUINT32 m_index2;
|
||||
};
|
||||
//typedef struct _GIM_PAIR GIM_PAIR;
|
||||
|
||||
//! Box container
|
||||
struct GIM_AABB_SET
|
||||
{
|
||||
GUINT32 m_count;
|
||||
aabb3f m_global_bound;//!< Global calculated bound of all boxes
|
||||
aabb3f * m_boxes;
|
||||
GUINT32 * m_maxcoords;//!<Upper corners of the boxes, in integer representation
|
||||
GIM_RSORT_TOKEN * m_sorted_mincoords;//!< sorted min coords (lower corners), with their coord value as the m_key and m_value as the box index
|
||||
char m_shared;//!< if m_shared == 0 then the memory is allocated and the set must be destroyed, else the pointers are shared and the set should't be destroyed
|
||||
};
|
||||
//typedef struct _GIM_AABB_SET GIM_AABB_SET;
|
||||
|
||||
//! Function for creating an overlapping pair set
|
||||
#define GIM_CREATE_PAIR_SET(dynarray) GIM_DYNARRAY_CREATE(GIM_PAIR,dynarray,G_ARRAY_GROW_SIZE)
|
||||
//! Function for destroying an overlapping pair set
|
||||
#define GIM_DESTROY_PAIR_SET(dynarray) GIM_DYNARRAY_DESTROY(dynarray)
|
||||
|
||||
//! Allocate memory for all aabb set.
|
||||
void gim_aabbset_alloc(GIM_AABB_SET * aabbset, GUINT32 count);
|
||||
|
||||
//! Destroys the aabb set.
|
||||
void gim_aabbset_destroy(GIM_AABB_SET * aabbset);
|
||||
|
||||
//! Calcs the global bound only
|
||||
/*!
|
||||
\pre aabbset must be allocated. And the boxes must be already set.
|
||||
*/
|
||||
void gim_aabbset_calc_global_bound(GIM_AABB_SET * aabbset);
|
||||
|
||||
//! Sorts the boxes for box prunning.
|
||||
/*!
|
||||
1) find the integer representation of the aabb coords
|
||||
2) Sorts the min coords
|
||||
3) Calcs the global bound
|
||||
\pre aabbset must be allocated. And the boxes must be already set.
|
||||
\param aabbset
|
||||
\param calc_global_bound If 1 , calcs the global bound
|
||||
\post If aabbset->m_sorted_mincoords == 0, then it allocs the sorted coordinates
|
||||
*/
|
||||
void gim_aabbset_sort(GIM_AABB_SET * aabbset, char calc_global_bound);
|
||||
|
||||
//! log(N) Complete box pruning. Returns a list of overlapping pairs of boxes, each box of the pair belongs to the same set.
|
||||
/*!
|
||||
\pre aabbset must be allocated and sorted, the boxes must be already set.
|
||||
\param aabbset Must be sorted. Global bound isn't required
|
||||
\param collision_pairs Array of GIM_PAIR elements. Must be initialized before (Reserve size ~ 100)
|
||||
*/
|
||||
void gim_aabbset_self_intersections_sorted(GIM_AABB_SET * aabbset, GDYNAMIC_ARRAY * collision_pairs);
|
||||
|
||||
//! NxN Complete box pruning. Returns a list of overlapping pairs of boxes, each box of the pair belongs to the same set.
|
||||
/*!
|
||||
\pre aabbset must be allocated, the boxes must be already set.
|
||||
\param aabbset Global bound isn't required. Doen't need to be sorted.
|
||||
\param collision_pairs Array of GIM_PAIR elements. Must be initialized before (Reserve size ~ 100)
|
||||
*/
|
||||
void gim_aabbset_self_intersections_brute_force(GIM_AABB_SET * aabbset, GDYNAMIC_ARRAY * collision_pairs);
|
||||
|
||||
//! log(N) Bipartite box pruning. Returns a list of overlapping pairs of boxes, each box of the pair belongs to a different set.
|
||||
/*!
|
||||
\pre aabbset1 and aabbset2 must be allocated and sorted, the boxes must be already set.
|
||||
\param aabbset1 Must be sorted, Global bound is required.
|
||||
\param aabbset2 Must be sorted, Global bound is required.
|
||||
\param collision_pairs Array of GIM_PAIR elements. Must be initialized before (Reserve size ~ 100)
|
||||
*/
|
||||
void gim_aabbset_bipartite_intersections_sorted(GIM_AABB_SET * aabbset1, GIM_AABB_SET * aabbset2, GDYNAMIC_ARRAY * collision_pairs);
|
||||
|
||||
//! NxM Bipartite box pruning. Returns a list of overlapping pairs of boxes, each box of the pair belongs to a different set.
|
||||
/*!
|
||||
\pre aabbset1 and aabbset2 must be allocated and sorted, the boxes must be already set.
|
||||
\param aabbset1 Must be sorted, Global bound is required.
|
||||
\param aabbset2 Must be sorted, Global bound is required.
|
||||
\param collision_pairs Array of GIM_PAIR elements. Must be initialized before (Reserve size ~ 100)
|
||||
*/
|
||||
void gim_aabbset_bipartite_intersections_brute_force(GIM_AABB_SET * aabbset1,GIM_AABB_SET * aabbset2, GDYNAMIC_ARRAY * collision_pairs);
|
||||
|
||||
|
||||
/*
|
||||
Brute-Force Vs Sorted pruning
|
||||
Different approaches must be applied when colliding sets with different number of
|
||||
elements. When sets have less of 100 boxes, it is often better to apply brute force
|
||||
approach instead of sorted methods, because at lowlevel bruteforce routines gives
|
||||
better performance and consumes less resources, due of their simplicity.
|
||||
But when sets are larger, the complexiity of bruteforce increases exponentially.
|
||||
In the case of large sets, sorted approach is applied. So GIMPACT has the following
|
||||
strategies:
|
||||
|
||||
On Sorting sets:
|
||||
!) When sets have more of 140 boxes, the boxes are sorted by its coded min coord
|
||||
and the global box is calculated. But when sets are smaller (less of 140 boxes),
|
||||
it is convenient to apply brute force approach.
|
||||
|
||||
*******************************************************************************/
|
||||
|
||||
//! Constant for apply approaches between brute force and sorted pruning on bipartite queries
|
||||
#define GIM_MIN_SORTED_BIPARTITE_PRUNING_BOXES 600
|
||||
//! Constant for apply approaches between brute force and sorted pruning for box collision
|
||||
#define GIM_MIN_SORTED_PRUNING_BOXES 140
|
||||
|
||||
|
||||
//Use these functions for general initialization
|
||||
|
||||
//! Initalizes the set. Sort boxes if needed.
|
||||
/*!
|
||||
\pre aabbset must be allocated. And the boxes must be already set.
|
||||
\post If the set has less of GIM_MIN_SORTED_BIPARTITE_PRUNING_BOXES boxes, only calcs the global box,
|
||||
else it Sorts the entire set( Only applicable for large sets)
|
||||
*/
|
||||
void gim_aabbset_update(GIM_AABB_SET * aabbset);
|
||||
|
||||
///Use these functions for general collision
|
||||
|
||||
//! Complete box pruning. Returns a list of overlapping pairs of boxes, each box of the pair belongs to the same set.
|
||||
/*!
|
||||
This function sorts the set and then it calls to gim_aabbset_self_intersections_brute_force or gim_aabbset_self_intersections_sorted. This is an example of how to use this function:
|
||||
\code
|
||||
//Create contact list
|
||||
GDYNAMIC_ARRAY collision_pairs;
|
||||
GIM_CREATE_PAIR_SET(collision_pairs);
|
||||
//Do collision
|
||||
gim_aabbset_self_intersections(&aabbset,&collision_pairs);
|
||||
if(collision_pairs.m_size==0)
|
||||
{
|
||||
GIM_DYNARRAY_DESTROY(collision_pairs);//
|
||||
return; //no collisioin
|
||||
}
|
||||
|
||||
//pair pointer
|
||||
GIM_PAIR *pairs = GIM_DYNARRAY_POINTER(GIM_PAIR,collision_pairs);
|
||||
GUINT i, ti1,ti2;
|
||||
for (i=0;i<collision_pairs.m_size; i++)
|
||||
{
|
||||
ti1 = pairs[i].m_index1;
|
||||
ti2 = pairs[i].m_index2;
|
||||
//Do something with the pairs
|
||||
....
|
||||
....
|
||||
...
|
||||
|
||||
}
|
||||
//Terminate
|
||||
GIM_DYNARRAY_DESTROY(dummycontacts);
|
||||
GIM_DYNARRAY_DESTROY(collision_pairs);
|
||||
\endcode
|
||||
\param aabbset Set of boxes. Sorting isn't required.
|
||||
\param collision_pairs Array of GIM_PAIR elements. Must be initialized before (Reserve size ~ 100)
|
||||
\pre aabbset must be allocated and initialized.
|
||||
\post If aabbset->m_count >= GIM_MIN_SORTED_PRUNING_BOXES, then it calls to gim_aabbset_sort and then to gim_aabbset_self_intersections_sorted. Global box won't be calculated.
|
||||
*/
|
||||
void gim_aabbset_self_intersections(GIM_AABB_SET * aabbset, GDYNAMIC_ARRAY * collision_pairs);
|
||||
|
||||
//! Collides two sets. Returns a list of overlapping pairs of boxes, each box of the pair belongs to a different set.
|
||||
/*!
|
||||
\pre aabbset1 and aabbset2 must be allocated and updated. See gim_aabbset_update.
|
||||
\param aabbset1 Must be updated.
|
||||
\param aabbset2 Must be updated.
|
||||
\param collision_pairs Array of GIM_PAIR elements. Must be initialized before (Reserve size ~ 100)
|
||||
*/
|
||||
void gim_aabbset_bipartite_intersections(GIM_AABB_SET * aabbset1, GIM_AABB_SET * aabbset2, GDYNAMIC_ARRAY * collision_pairs);
|
||||
|
||||
///Function for create Box collision result set
|
||||
|
||||
#define GIM_CREATE_BOXQUERY_LIST(dynarray) GIM_DYNARRAY_CREATE(GUINT32,dynarray,G_ARRAY_GROW_SIZE)
|
||||
|
||||
//! Finds intersections between a box and a set. Return the colliding boxes of the set
|
||||
/*!
|
||||
\pre aabbset must be allocated and initialized.
|
||||
\param test_aabb Box for collision query
|
||||
\param aabbset Set of boxes .Global bound is required.
|
||||
\param collided Array of GUINT elements, indices of boxes. Must be initialized before (Reserve size ~ 100)
|
||||
*/
|
||||
void gim_aabbset_box_collision(aabb3f *test_aabb, GIM_AABB_SET * aabbset, GDYNAMIC_ARRAY * collided);
|
||||
|
||||
//! Finds intersections between a box and a set. Return the colliding boxes of the set
|
||||
/*!
|
||||
\pre aabbset must be allocated and initialized.
|
||||
\param vorigin Origin point of ray.
|
||||
\param vdir Direction vector of ray.
|
||||
\param tmax Max distance param for ray.
|
||||
\param aabbset Set of boxes. Global bound is required.
|
||||
\param collided Array of GUINT elements, indices of boxes. Must be initialized before (Reserve size ~ 100)
|
||||
*/
|
||||
void gim_aabbset_ray_collision(vec3f vorigin,vec3f vdir, GREAL tmax, GIM_AABB_SET * aabbset, GDYNAMIC_ARRAY * collided);
|
||||
|
||||
|
||||
/*
|
||||
For sorting, each box corner must be discretized to a 32 bit integer.
|
||||
For this, we take the x and z coordinates from the box corner (a vector vec3f)
|
||||
Then convert the (x,z) pair to an integer. For convenience, we choose an error
|
||||
constant for converting the coordinates (0.05).
|
||||
*******************************************************************************/
|
||||
|
||||
/**
|
||||
For fitting the coordinate to an integer, we need to constraint the range of its values. So each coord component (x, z) must lie between 0 and 65536.
|
||||
20 give us a 0.05 floating point error
|
||||
*/
|
||||
#define ERROR_AABB 20.0f
|
||||
|
||||
/**
|
||||
An error of 0.05 allows to make coordinates up to 1638.0f and no less of -1638.0f.
|
||||
So the maximum size of a room should be about 3276x3276 . Its dimensions must lie between [-1638,1638.0f]
|
||||
*/
|
||||
#define MAX_AABB_SIZE 1638.0f
|
||||
|
||||
//! Converts a vector coordinate to an integer for box sorting
|
||||
/*!
|
||||
\param vx X component
|
||||
\param vz Z component
|
||||
\param uint_key a GUINT
|
||||
*/
|
||||
#define GIM_CONVERT_VEC3F_GUINT_XZ(vx,vz,uint_key)\
|
||||
{\
|
||||
GUINT32 _z = ((GUINT32)(vz*ERROR_AABB))+32768;\
|
||||
uint_key = ((GUINT32)(vx*ERROR_AABB))+32768;\
|
||||
uint_key = (uint_key<<16) + _z;\
|
||||
}\
|
||||
|
||||
//! Converts a vector coordinate to an integer for box sorting, rounding to the upper int
|
||||
/*!
|
||||
\param vx X component
|
||||
\param vz Z component
|
||||
\param uint_key a GUINT
|
||||
*/
|
||||
#define GIM_CONVERT_VEC3F_GUINT_XZ_UPPER(vx,vz,uint_key)\
|
||||
{\
|
||||
GUINT32 _z = ((GUINT32)ceilf(vz*ERROR_AABB))+32768;\
|
||||
uint_key = ((GUINT32)ceilf(vx*ERROR_AABB))+32768;\
|
||||
uint_key = (uint_key<<16) + _z;\
|
||||
}\
|
||||
|
||||
|
||||
//! Converts a vector coordinate to an integer for box sorting. Secure clamped
|
||||
/*!
|
||||
\param vx X component
|
||||
\param vz Z component
|
||||
\param uint_key a GUINT
|
||||
*/
|
||||
#define GIM_CONVERT_VEC3F_GUINT_XZ_CLAMPED(vx,vz,uint_key)\
|
||||
{\
|
||||
GREAL _cx = CLAMP(vx,-MAX_AABB_SIZE,MAX_AABB_SIZE);\
|
||||
GREAL _cz = CLAMP(vz,-MAX_AABB_SIZE,MAX_AABB_SIZE);\
|
||||
GUINT32 _z = ((GUINT32)(_cz*ERROR_AABB))+32768;\
|
||||
uint_key = ((GUINT32)(_cx*ERROR_AABB))+32768;\
|
||||
uint_key = (uint_key<<16) + _z;\
|
||||
}\
|
||||
|
||||
//! Converts a vector coordinate to an integer for box sorting. Secure clamped, rounded
|
||||
/*!
|
||||
\param vx X component
|
||||
\param vz Z component
|
||||
\param uint_key a GUINT
|
||||
*/
|
||||
#define GIM_CONVERT_VEC3F_GUINT_XZ_UPPER_CLAMPED(vx,vz,uint_key)\
|
||||
{\
|
||||
GREAL _cx = CLAMP(vx,-MAX_AABB_SIZE,MAX_AABB_SIZE);\
|
||||
GREAL _cz = CLAMP(vz,-MAX_AABB_SIZE,MAX_AABB_SIZE);\
|
||||
GUINT32 _z = ((GUINT32)ceilf(_cz*ERROR_AABB))+32768;\
|
||||
uint_key = ((GUINT32)ceilf(_cx*ERROR_AABB))+32768;\
|
||||
uint_key = (uint_key<<16) + _z;\
|
||||
}\
|
||||
|
||||
//! @}
|
||||
|
||||
#endif // GIM_BOXPRUNING_H_INCLUDED
|
||||
115
thirdparty/ode-0.16.5/GIMPACT/include/GIMPACT/gim_contact.h
vendored
Normal file
115
thirdparty/ode-0.16.5/GIMPACT/include/GIMPACT/gim_contact.h
vendored
Normal file
@@ -0,0 +1,115 @@
|
||||
#ifndef GIM_CONTACT_H_INCLUDED
|
||||
#define GIM_CONTACT_H_INCLUDED
|
||||
|
||||
/*! \file gim_contact.h
|
||||
\author Francisco Le<4C>n
|
||||
*/
|
||||
/*
|
||||
-----------------------------------------------------------------------------
|
||||
This source file is part of GIMPACT Library.
|
||||
|
||||
For the latest info, see http://gimpact.sourceforge.net/
|
||||
|
||||
Copyright (c) 2006 Francisco Leon. C.C. 80087371.
|
||||
email: projectileman@yahoo.com
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of EITHER:
|
||||
(1) The GNU Lesser General Public License as published by the Free
|
||||
Software Foundation; either version 2.1 of the License, or (at
|
||||
your option) any later version. The text of the GNU Lesser
|
||||
General Public License is included with this library in the
|
||||
file GIMPACT-LICENSE-LGPL.TXT.
|
||||
(2) The BSD-style license that is included with this library in
|
||||
the file GIMPACT-LICENSE-BSD.TXT.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files
|
||||
GIMPACT-LICENSE-LGPL.TXT and GIMPACT-LICENSE-BSD.TXT for more details.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
|
||||
#include "GIMPACT/gim_geometry.h"
|
||||
#include "GIMPACT/gim_radixsort.h"
|
||||
|
||||
/*! \defgroup CONTACTS
|
||||
\brief
|
||||
Functions for managing and sorting contacts resulting from a collision query.
|
||||
<ul>
|
||||
<li> Contact lists must be created by calling \ref GIM_CREATE_CONTACT_LIST
|
||||
<li> After querys, contact lists must be destroy by calling \ref GIM_DYNARRAY_DESTROY
|
||||
<li> Contacts can be merged to avoid duplicate results by calling \ref gim_merge_contacts
|
||||
</ul>
|
||||
|
||||
*/
|
||||
//! @{
|
||||
/// Structure for collision results
|
||||
struct GIM_CONTACT
|
||||
{
|
||||
vec3f m_point;
|
||||
vec3f m_normal;
|
||||
GREAL m_depth;//Positive value indicates interpenetration
|
||||
void * m_handle1;
|
||||
void * m_handle2;
|
||||
GUINT32 m_feature1;//Face number
|
||||
GUINT32 m_feature2;//Face number
|
||||
};
|
||||
//typedef struct _GIM_CONTACT GIM_CONTACT;
|
||||
|
||||
#define CONTACT_DIFF_EPSILON 0.00001f
|
||||
|
||||
#define GIM_CALC_KEY_CONTACT(pos,hash)\
|
||||
{\
|
||||
GINT32 _coords[] = {(GINT32)(pos[0]*1000.0f+1.0f),(GINT32)(pos[1]*1333.0f),(GINT32)(pos[2]*2133.0f+3.0f)};\
|
||||
GUINT32 _hash=0;\
|
||||
GUINT32 *_uitmp = (GUINT32 *)(&_coords[0]);\
|
||||
_hash = *_uitmp;\
|
||||
_uitmp++;\
|
||||
_hash += (*_uitmp)<<4;\
|
||||
_uitmp++;\
|
||||
_hash += (*_uitmp)<<8;\
|
||||
hash = _hash;\
|
||||
}\
|
||||
|
||||
///Creates a contact list for queries
|
||||
#define GIM_CREATE_CONTACT_LIST(contact_array) GIM_DYNARRAY_CREATE(GIM_CONTACT,contact_array,100)
|
||||
|
||||
#define GIM_PUSH_CONTACT(contact_array, point, normal, deep,handle1, handle2, feat1, feat2)\
|
||||
{\
|
||||
GIM_DYNARRAY_PUSH_EMPTY(GIM_CONTACT,contact_array);\
|
||||
GIM_CONTACT * _last = GIM_DYNARRAY_POINTER_LAST(GIM_CONTACT,contact_array);\
|
||||
VEC_COPY(_last->m_point,point);\
|
||||
VEC_COPY(_last->m_normal,normal);\
|
||||
_last->m_depth = deep;\
|
||||
_last->m_handle1 = handle1;\
|
||||
_last->m_handle2 = handle2;\
|
||||
_last->m_feature1 = feat1;\
|
||||
_last->m_feature2 = feat2;\
|
||||
}\
|
||||
|
||||
///Receive pointer to contacts
|
||||
#define GIM_COPY_CONTACTS(dest_contact, source_contact)\
|
||||
{\
|
||||
VEC_COPY(dest_contact->m_point,source_contact->m_point);\
|
||||
VEC_COPY(dest_contact->m_normal,source_contact->m_normal);\
|
||||
dest_contact->m_depth = source_contact->m_depth;\
|
||||
dest_contact->m_handle1 = source_contact->m_handle1;\
|
||||
dest_contact->m_handle2 = source_contact->m_handle2;\
|
||||
dest_contact->m_feature1 = source_contact->m_feature1;\
|
||||
dest_contact->m_feature2 = source_contact->m_feature2;\
|
||||
}\
|
||||
|
||||
//! Merges duplicate contacts with minimum depth criterion
|
||||
void gim_merge_contacts(GDYNAMIC_ARRAY * source_contacts,
|
||||
GDYNAMIC_ARRAY * dest_contacts);
|
||||
|
||||
|
||||
//! Merges to an unique contact
|
||||
void gim_merge_contacts_unique(GDYNAMIC_ARRAY * source_contacts,
|
||||
GDYNAMIC_ARRAY * dest_contacts);
|
||||
|
||||
//! @}
|
||||
#endif // GIM_CONTACT_H_INCLUDED
|
||||
1885
thirdparty/ode-0.16.5/GIMPACT/include/GIMPACT/gim_geometry.h
vendored
Normal file
1885
thirdparty/ode-0.16.5/GIMPACT/include/GIMPACT/gim_geometry.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
164
thirdparty/ode-0.16.5/GIMPACT/include/GIMPACT/gim_math.h
vendored
Normal file
164
thirdparty/ode-0.16.5/GIMPACT/include/GIMPACT/gim_math.h
vendored
Normal file
@@ -0,0 +1,164 @@
|
||||
#ifndef GIM_MATH_H_INCLUDED
|
||||
#define GIM_MATH_H_INCLUDED
|
||||
|
||||
/*! \file gim_math.h
|
||||
\author Francisco Le<4C>n
|
||||
*/
|
||||
/*
|
||||
-----------------------------------------------------------------------------
|
||||
This source file is part of GIMPACT Library.
|
||||
|
||||
For the latest info, see http://gimpact.sourceforge.net/
|
||||
|
||||
Copyright (c) 2006 Francisco Leon. C.C. 80087371.
|
||||
email: projectileman@yahoo.com
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of EITHER:
|
||||
(1) The GNU Lesser General Public License as published by the Free
|
||||
Software Foundation; either version 2.1 of the License, or (at
|
||||
your option) any later version. The text of the GNU Lesser
|
||||
General Public License is included with this library in the
|
||||
file GIMPACT-LICENSE-LGPL.TXT.
|
||||
(2) The BSD-style license that is included with this library in
|
||||
the file GIMPACT-LICENSE-BSD.TXT.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files
|
||||
GIMPACT-LICENSE-LGPL.TXT and GIMPACT-LICENSE-BSD.TXT for more details.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <math.h>
|
||||
#include <float.h>
|
||||
#if HAVE_SYS_TYPES_H
|
||||
#include <sys/types.h>
|
||||
#elif defined(_MSC_VER)
|
||||
typedef __int32 int32_t;
|
||||
typedef unsigned __int32 uint32_t;
|
||||
#elif defined(__GNUC__)
|
||||
#include <inttypes.h>
|
||||
#else
|
||||
#error "GIMPACT: Must define int32_t and uint32_t"
|
||||
#endif
|
||||
|
||||
|
||||
/*! \defgroup BASIC_TYPES
|
||||
Basic types and constants
|
||||
Conventions:
|
||||
Types starting with G
|
||||
Constants starting with G_
|
||||
*/
|
||||
//! @{
|
||||
/*! Types */
|
||||
#define GREAL float
|
||||
#define GINT32 int32_t
|
||||
#define GUINT32 uint32_t
|
||||
|
||||
#ifdef GPTR
|
||||
#undef GPTR
|
||||
#endif
|
||||
#define GPTR void*
|
||||
|
||||
/*! Constants for integers*/
|
||||
#define GUINT32_BIT_COUNT 32
|
||||
#define GUINT32_EXPONENT 5
|
||||
|
||||
#define G_FASTMATH 1
|
||||
#define G_PI 3.14159265358979f
|
||||
#define G_HALF_PI 1.5707963f
|
||||
//267948966
|
||||
#define G_TWO_PI 6.28318530f
|
||||
//71795864
|
||||
#define G_ROOT3 1.73205f
|
||||
#define G_ROOT2 1.41421f
|
||||
#define G_UINT_INFINITY 65534
|
||||
#define G_REAL_INFINITY FLT_MAX
|
||||
#define G_SIGN_BITMASK 0x80000000
|
||||
#define G_USE_EPSILON_TEST
|
||||
#define G_EPSILON 0.0000001f
|
||||
//! @}
|
||||
|
||||
/*! \defgroup MATH_FUNCTIONS
|
||||
mathematical functions
|
||||
*/
|
||||
//! @{
|
||||
#define G_DEGTORAD(X) ((X)*3.1415926f/180.0f)
|
||||
#define G_RADTODEG(X) ((X)*180.0f/3.1415926f)
|
||||
|
||||
//! Integer representation of a floating-point value.
|
||||
#define IR(x) ((GUINT32&)(x))
|
||||
|
||||
//! Signed integer representation of a floating-point value.
|
||||
#define SIR(x) ((GINT32&)(x))
|
||||
|
||||
//! Absolute integer representation of a floating-point value
|
||||
#define AIR(x) (IR(x)&0x7fffffff)
|
||||
|
||||
//! Floating-point representation of an integer value.
|
||||
#define FR(x) ((GREAL&)(x))
|
||||
|
||||
#define MAX(a,b) ((a)<(b)?(b):(a))
|
||||
#define MIN(a,b) ((a)>(b)?(b):(a))
|
||||
|
||||
#define MAX3(a,b,c) MAX(a,MAX(b,c))
|
||||
#define MIN3(a,b,c) MIN(a,MIN(b,c))
|
||||
|
||||
#define IS_ZERO(value) ((value) < G_EPSILON && (value) > -G_EPSILON)
|
||||
|
||||
#define IS_NEGATIVE(value) ((value) <= -G_EPSILON)
|
||||
|
||||
#define IS_POSISITVE(value) ((value) >= G_EPSILON)
|
||||
|
||||
///returns a clamped number
|
||||
#define CLAMP(number,minval,maxval) ((number)<(minval)?(minval):((number)>(maxval)?(maxval):(number)))
|
||||
|
||||
///Swap numbers
|
||||
#define SWAP_NUMBERS(a,b){ \
|
||||
(a) = (a)+(b); \
|
||||
(b) = (a)-(b); \
|
||||
(a) = (a)-(b); \
|
||||
}\
|
||||
|
||||
#define GIM_INV_SQRT(va,isva)\
|
||||
{\
|
||||
if((va)<=0.0000001f)\
|
||||
{\
|
||||
(isva) = G_REAL_INFINITY;\
|
||||
}\
|
||||
else\
|
||||
{\
|
||||
GREAL _x = (va) * 0.5f;\
|
||||
GUINT32 _y = 0x5f3759df - ( IR(va) >> 1);\
|
||||
(isva) = FR(_y);\
|
||||
(isva) = (isva) * ( 1.5f - ( _x * (isva) * (isva) ) );\
|
||||
}\
|
||||
}\
|
||||
|
||||
#define GIM_SQRT(va,sva)\
|
||||
{\
|
||||
GIM_INV_SQRT(va,sva);\
|
||||
(sva) = 1.0f/(sva);\
|
||||
}\
|
||||
|
||||
//! Computes 1.0f / sqrtf(x). Comes from Quake3. See http://www.magic-software.com/3DGEDInvSqrt.html
|
||||
GREAL gim_inv_sqrt(GREAL f);
|
||||
|
||||
//! Computes sqrtf(x) faster.
|
||||
/*!
|
||||
\sa gim_inv_sqrt
|
||||
*/
|
||||
GREAL gim_sqrt(GREAL f);
|
||||
|
||||
//!Initializes mathematical functions
|
||||
void gim_init_math();
|
||||
|
||||
//! Generates an unit random
|
||||
GREAL gim_unit_random();
|
||||
//! @}
|
||||
|
||||
#endif // GIM_MATH_H_INCLUDED
|
||||
1056
thirdparty/ode-0.16.5/GIMPACT/include/GIMPACT/gim_memory.h
vendored
Normal file
1056
thirdparty/ode-0.16.5/GIMPACT/include/GIMPACT/gim_memory.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
258
thirdparty/ode-0.16.5/GIMPACT/include/GIMPACT/gim_radixsort.h
vendored
Normal file
258
thirdparty/ode-0.16.5/GIMPACT/include/GIMPACT/gim_radixsort.h
vendored
Normal file
@@ -0,0 +1,258 @@
|
||||
#ifndef GIM_RADIXSORT_H_INCLUDED
|
||||
#define GIM_RADIXSORT_H_INCLUDED
|
||||
/*! \file gim_radixsort.h
|
||||
\author Francisco Le<4C>n.
|
||||
Based on the work of Michael Herf : "fast floating-point radix sort"
|
||||
Avaliable on http://www.stereopsis.com/radix.html
|
||||
*/
|
||||
/*
|
||||
-----------------------------------------------------------------------------
|
||||
This source file is part of GIMPACT Library.
|
||||
|
||||
For the latest info, see http://gimpact.sourceforge.net/
|
||||
|
||||
Copyright (c) 2006 Francisco Leon. C.C. 80087371.
|
||||
email: projectileman@yahoo.com
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of EITHER:
|
||||
(1) The GNU Lesser General Public License as published by the Free
|
||||
Software Foundation; either version 2.1 of the License, or (at
|
||||
your option) any later version. The text of the GNU Lesser
|
||||
General Public License is included with this library in the
|
||||
file GIMPACT-LICENSE-LGPL.TXT.
|
||||
(2) The BSD-style license that is included with this library in
|
||||
the file GIMPACT-LICENSE-BSD.TXT.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files
|
||||
GIMPACT-LICENSE-LGPL.TXT and GIMPACT-LICENSE-BSD.TXT for more details.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#include "GIMPACT/gim_memory.h"
|
||||
|
||||
/*! \defgroup SORTING
|
||||
\brief
|
||||
Macros for sorting.
|
||||
*/
|
||||
//! @{
|
||||
struct GIM_RSORT_TOKEN
|
||||
{
|
||||
GUINT32 m_key;
|
||||
GUINT32 m_value;
|
||||
};
|
||||
//typedef struct _GIM_RSORT_TOKEN GIM_RSORT_TOKEN;
|
||||
|
||||
//comparator for sorting
|
||||
#define RSORT_TOKEN_COMPARATOR(x, y) ((int)((x.m_key) - (y.m_key)))
|
||||
|
||||
// ---- utils for accessing 11-bit quantities
|
||||
#define D11_0(x) (x & 0x7FF)
|
||||
#define D11_1(x) (x >> 11 & 0x7FF)
|
||||
#define D11_2(x) (x >> 22 )
|
||||
|
||||
|
||||
//COMMON FUNCTIONS FOR ACCESSING THE KEY OF AN ELEMENT
|
||||
|
||||
|
||||
//For the type of your array, you need to declare a macro for obtaining the key, like these:
|
||||
#define SIMPLE_GET_FLOAT32KEY(e,key) {key =(GREAL)(e);}
|
||||
|
||||
#define SIMPLE_GET_INTKEY(e,key) {key =(GINT32)(e);}
|
||||
|
||||
#define SIMPLE_GET_UINTKEY(e,key) {key =(GUINT32)(e);}
|
||||
|
||||
//For the type of your array, you need to declare a macro for copy elements, like this:
|
||||
|
||||
#define SIMPLE_COPY_ELEMENTS(dest,src) {dest = src;}
|
||||
|
||||
#define kHist 2048
|
||||
|
||||
///Radix sort for unsigned integer keys
|
||||
|
||||
#define GIM_RADIX_SORT_RTOKENS(array,sorted,element_count)\
|
||||
{\
|
||||
GUINT32 i;\
|
||||
GUINT32 b0[kHist * 3];\
|
||||
GUINT32 *b1 = b0 + kHist;\
|
||||
GUINT32 *b2 = b1 + kHist;\
|
||||
for (i = 0; i < kHist * 3; i++)\
|
||||
{\
|
||||
b0[i] = 0;\
|
||||
}\
|
||||
GUINT32 fi;\
|
||||
GUINT32 pos;\
|
||||
for (i = 0; i < element_count; i++)\
|
||||
{\
|
||||
fi = array[i].m_key;\
|
||||
b0[D11_0(fi)] ++;\
|
||||
b1[D11_1(fi)] ++;\
|
||||
b2[D11_2(fi)] ++;\
|
||||
}\
|
||||
{\
|
||||
GUINT32 sum0 = 0, sum1 = 0, sum2 = 0;\
|
||||
GUINT32 tsum;\
|
||||
for (i = 0; i < kHist; i++)\
|
||||
{\
|
||||
tsum = b0[i] + sum0;\
|
||||
b0[i] = sum0 - 1;\
|
||||
sum0 = tsum;\
|
||||
tsum = b1[i] + sum1;\
|
||||
b1[i] = sum1 - 1;\
|
||||
sum1 = tsum;\
|
||||
tsum = b2[i] + sum2;\
|
||||
b2[i] = sum2 - 1;\
|
||||
sum2 = tsum;\
|
||||
}\
|
||||
}\
|
||||
for (i = 0; i < element_count; i++)\
|
||||
{\
|
||||
fi = array[i].m_key;\
|
||||
pos = D11_0(fi);\
|
||||
pos = ++b0[pos];\
|
||||
sorted[pos].m_key = array[i].m_key;\
|
||||
sorted[pos].m_value = array[i].m_value;\
|
||||
}\
|
||||
for (i = 0; i < element_count; i++)\
|
||||
{\
|
||||
fi = sorted[i].m_key;\
|
||||
pos = D11_1(fi);\
|
||||
pos = ++b1[pos];\
|
||||
array[pos].m_key = sorted[i].m_key;\
|
||||
array[pos].m_value = sorted[i].m_value;\
|
||||
}\
|
||||
for (i = 0; i < element_count; i++)\
|
||||
{\
|
||||
fi = array[i].m_key;\
|
||||
pos = D11_2(fi);\
|
||||
pos = ++b2[pos];\
|
||||
sorted[pos].m_key = array[i].m_key;\
|
||||
sorted[pos].m_value = array[i].m_value;\
|
||||
}\
|
||||
}\
|
||||
|
||||
/// Get the sorted tokens from an array. For generic use. Tokens are GIM_RSORT_TOKEN
|
||||
#define GIM_RADIX_SORT_ARRAY_TOKENS(array, sorted_tokens, element_count, get_uintkey_macro)\
|
||||
{\
|
||||
GIM_RSORT_TOKEN * _unsorted = (GIM_RSORT_TOKEN *) gim_alloc(sizeof(GIM_RSORT_TOKEN )*element_count);\
|
||||
GUINT32 _i;\
|
||||
for (_i=0;_i<element_count;_i++)\
|
||||
{\
|
||||
get_uintkey_macro(array[_i],_unsorted[_i].m_key);\
|
||||
_unsorted[_i].m_value = _i;\
|
||||
}\
|
||||
GIM_RADIX_SORT_RTOKENS(_unsorted,sorted_tokens,element_count);\
|
||||
gim_free(_unsorted,sizeof(GIM_RSORT_TOKEN )*element_count);\
|
||||
}\
|
||||
|
||||
/// Sorts array in place. For generic use
|
||||
#define GIM_RADIX_SORT(type,array,element_count,get_uintkey_macro,copy_elements_macro)\
|
||||
{\
|
||||
GIM_RSORT_TOKEN * _sorted = (GIM_RSORT_TOKEN *) gim_alloc(sizeof(GIM_RSORT_TOKEN )*element_count);\
|
||||
GIM_RADIX_SORT_ARRAY_TOKENS(array,_sorted,element_count,get_uintkey_macro);\
|
||||
type * _original_array = (type *) gim_alloc(sizeof(type)*element_count); \
|
||||
memcpy(_original_array,array,sizeof(type)*element_count);\
|
||||
GUINT32 _i;\
|
||||
for (_i=0;_i<element_count;_i++)\
|
||||
{\
|
||||
copy_elements_macro(array[_i],_original_array[_sorted[_i].m_value]);\
|
||||
}\
|
||||
gim_free(_original_array,sizeof(type)*element_count);\
|
||||
gim_free(_sorted,sizeof(GIM_RSORT_TOKEN )*element_count);\
|
||||
}\
|
||||
|
||||
/// Sorts array in place using quick sort
|
||||
#define GIM_QUICK_SORT_ARRAY(type, array, array_count, comp_macro, exchange_macro) \
|
||||
{\
|
||||
GINT32 _i_, _j_, _p_, _stack_index_, _start_, _end_;\
|
||||
GINT32 _start_stack_[64]; \
|
||||
GINT32 _end_stack_[64];\
|
||||
_start_stack_[0] = 0;\
|
||||
_end_stack_[0] = (array_count);\
|
||||
_stack_index_ = 1;\
|
||||
while (_stack_index_ > 0)\
|
||||
{\
|
||||
_stack_index_ --;\
|
||||
_start_ = _start_stack_[_stack_index_];\
|
||||
_end_ = _end_stack_[_stack_index_];\
|
||||
while (_end_ - _start_ > 2)\
|
||||
{\
|
||||
_p_ = _start_;\
|
||||
_i_ = _start_ + 1;\
|
||||
_j_ = _end_ - 1;\
|
||||
while (_i_<_j_) \
|
||||
{\
|
||||
for(; _i_<=_j_ && comp_macro(((array)[_i_]),((array)[_p_]))<=0; _i_++) ;\
|
||||
if (_i_ > _j_) \
|
||||
{\
|
||||
exchange_macro(type, array, _j_, _p_);\
|
||||
_i_ = _j_;\
|
||||
}\
|
||||
else\
|
||||
{\
|
||||
for(; _i_<=_j_ && comp_macro(((array)[_j_]),((array)[_p_]))>=0; _j_--) ;\
|
||||
if (_i_ > _j_) \
|
||||
{\
|
||||
exchange_macro(type, array, _j_, _p_);\
|
||||
_i_ = _j_;\
|
||||
}\
|
||||
else if (_i_ < _j_)\
|
||||
{\
|
||||
exchange_macro(type, array, _i_, _j_);\
|
||||
if (_i_+2 < _j_) {_i_++; _j_--;}\
|
||||
else if (_i_+1 < _j_) _i_++;\
|
||||
}\
|
||||
}\
|
||||
}\
|
||||
if (_i_-_start_ > 1 && _end_-_j_ > 1) \
|
||||
{\
|
||||
if (_i_-_start_ < _end_-_j_-1) \
|
||||
{\
|
||||
_start_stack_[_stack_index_] = _j_+1;\
|
||||
_end_stack_[_stack_index_] = _end_;\
|
||||
_stack_index_ ++;\
|
||||
_end_ = _i_;\
|
||||
}\
|
||||
else\
|
||||
{\
|
||||
_start_stack_[_stack_index_] = _start_;\
|
||||
_end_stack_[_stack_index_] = _i_;\
|
||||
_stack_index_ ++;\
|
||||
_start_ = _j_+1;\
|
||||
}\
|
||||
}\
|
||||
else\
|
||||
{\
|
||||
if (_i_-_start_ > 1)\
|
||||
{\
|
||||
_end_ = _i_;\
|
||||
}\
|
||||
else \
|
||||
{\
|
||||
_start_ = _j_+1;\
|
||||
}\
|
||||
}\
|
||||
}\
|
||||
if (_end_ - _start_ == 2) \
|
||||
{\
|
||||
if (comp_macro(((array)[_start_]),((array)[_end_-1])) > 0) \
|
||||
{\
|
||||
exchange_macro(type, array, _start_, _end_-1);\
|
||||
}\
|
||||
}\
|
||||
}\
|
||||
}\
|
||||
|
||||
#define GIM_DEF_EXCHANGE_MACRO(type, _array, _i, _j)\
|
||||
{\
|
||||
type _e_tmp_ =(_array)[(_i)];\
|
||||
(_array)[(_i)]=(_array)[(_j)];\
|
||||
(_array)[(_j)]= _e_tmp_;\
|
||||
}\
|
||||
|
||||
#define GIM_COMP_MACRO(x, y) ((GINT32)((x) - (y)))
|
||||
//! @}
|
||||
#endif // GIM_RADIXSORT_H_INCLUDED
|
||||
111
thirdparty/ode-0.16.5/GIMPACT/include/GIMPACT/gim_tri_capsule_collision.h
vendored
Normal file
111
thirdparty/ode-0.16.5/GIMPACT/include/GIMPACT/gim_tri_capsule_collision.h
vendored
Normal file
@@ -0,0 +1,111 @@
|
||||
#ifndef GIM_TRI_CAPSULE_COLLISION_H_INCLUDED
|
||||
#define GIM_TRI_CAPSULE_COLLISION_H_INCLUDED
|
||||
|
||||
/*! \file gim_tri_capsule_collision.h
|
||||
\author Francisco Le<4C>n
|
||||
*/
|
||||
/*
|
||||
-----------------------------------------------------------------------------
|
||||
This source file is part of GIMPACT Library.
|
||||
|
||||
For the latest info, see http://gimpact.sourceforge.net/
|
||||
|
||||
Copyright (c) 2006 Francisco Leon. C.C. 80087371.
|
||||
email: projectileman@yahoo.com
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of EITHER:
|
||||
(1) The GNU Lesser General Public License as published by the Free
|
||||
Software Foundation; either version 2.1 of the License, or (at
|
||||
your option) any later version. The text of the GNU Lesser
|
||||
General Public License is included with this library in the
|
||||
file GIMPACT-LICENSE-LGPL.TXT.
|
||||
(2) The BSD-style license that is included with this library in
|
||||
the file GIMPACT-LICENSE-BSD.TXT.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files
|
||||
GIMPACT-LICENSE-LGPL.TXT and GIMPACT-LICENSE-BSD.TXT for more details.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#include "GIMPACT/gim_memory.h"
|
||||
|
||||
/*! \addtogroup GEOMETRIC_OPERATIONS
|
||||
*/
|
||||
//! @{
|
||||
|
||||
//! Capsule struct
|
||||
struct GIM_CAPSULE_DATA
|
||||
{
|
||||
GREAL m_radius;
|
||||
vec3f m_point1;
|
||||
vec3f m_point2;
|
||||
};
|
||||
//typedef struct _GIM_CAPSULE_DATA GIM_CAPSULE_DATA;
|
||||
|
||||
#define CALC_CAPSULE_AABB(capsule,aabb)\
|
||||
{\
|
||||
if(capsule.m_point1[0]<capsule.m_point2[0])\
|
||||
{\
|
||||
aabb.minX = capsule.m_point1[0] - capsule.m_radius;\
|
||||
aabb.maxX = capsule.m_point2[0] + capsule.m_radius;\
|
||||
}\
|
||||
else\
|
||||
{\
|
||||
aabb.minX = capsule.m_point2[0] - capsule.m_radius;\
|
||||
aabb.maxX = capsule.m_point1[0] + capsule.m_radius;\
|
||||
}\
|
||||
if(capsule.m_point1[1]<capsule.m_point2[1])\
|
||||
{\
|
||||
aabb.minY = capsule.m_point1[1] - capsule.m_radius;\
|
||||
aabb.maxY = capsule.m_point2[1] + capsule.m_radius;\
|
||||
}\
|
||||
else\
|
||||
{\
|
||||
aabb.minY = capsule.m_point2[1] - capsule.m_radius;\
|
||||
aabb.maxY = capsule.m_point1[1] + capsule.m_radius;\
|
||||
}\
|
||||
if(capsule.m_point1[2]<capsule.m_point2[2])\
|
||||
{\
|
||||
aabb.minZ = capsule.m_point1[2] - capsule.m_radius;\
|
||||
aabb.maxZ = capsule.m_point2[2] + capsule.m_radius;\
|
||||
}\
|
||||
else\
|
||||
{\
|
||||
aabb.minZ = capsule.m_point2[2] - capsule.m_radius;\
|
||||
aabb.maxZ = capsule.m_point1[2] + capsule.m_radius;\
|
||||
}\
|
||||
}\
|
||||
|
||||
//! Utility function to find the closest point between a segment and a triangle
|
||||
/*!
|
||||
|
||||
\param triangle
|
||||
\param s1
|
||||
\param s2
|
||||
\param contacts Contains the closest points on the segment (1,2), and the normal points to segment, and m_depth contains the distance
|
||||
|
||||
\post The contacts array is not set to 0. It adds additional contacts
|
||||
*/
|
||||
void gim_closest_point_triangle_segment(GIM_TRIANGLE_DATA * triangle, vec3f s1,vec3f s2, GDYNAMIC_ARRAY * contacts);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//! Utility function to find the closest point between a capsule and a triangle
|
||||
/*!
|
||||
|
||||
\param triangle
|
||||
\param capsule
|
||||
\param contacts Contains the closest points on the capsule, and the normal points to triangle
|
||||
\return 1 if the triangle collides the capsule
|
||||
\post The contacts array is not set to 0. It adds additional contacts
|
||||
*/
|
||||
int gim_triangle_capsule_collision(GIM_TRIANGLE_DATA * triangle, GIM_CAPSULE_DATA * capsule, GDYNAMIC_ARRAY * contacts);
|
||||
//! @}
|
||||
|
||||
#endif // GIM_TRI_CAPSULE_COLLISION_H_INCLUDED
|
||||
253
thirdparty/ode-0.16.5/GIMPACT/include/GIMPACT/gim_tri_collision.h
vendored
Normal file
253
thirdparty/ode-0.16.5/GIMPACT/include/GIMPACT/gim_tri_collision.h
vendored
Normal file
@@ -0,0 +1,253 @@
|
||||
#ifndef GIM_TRI_COLLISION_H_INCLUDED
|
||||
#define GIM_TRI_COLLISION_H_INCLUDED
|
||||
|
||||
/*! \file gim_tri_collision.h
|
||||
\author Francisco Le<4C>n N<>jera
|
||||
*/
|
||||
/*
|
||||
-----------------------------------------------------------------------------
|
||||
This source file is part of GIMPACT Library.
|
||||
|
||||
For the latest info, see http://gimpact.sourceforge.net/
|
||||
|
||||
Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371.
|
||||
email: projectileman@yahoo.com
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of EITHER:
|
||||
(1) The GNU Lesser General Public License as published by the Free
|
||||
Software Foundation; either version 2.1 of the License, or (at
|
||||
your option) any later version. The text of the GNU Lesser
|
||||
General Public License is included with this library in the
|
||||
file GIMPACT-LICENSE-LGPL.TXT.
|
||||
(2) The BSD-style license that is included with this library in
|
||||
the file GIMPACT-LICENSE-BSD.TXT.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files
|
||||
GIMPACT-LICENSE-LGPL.TXT and GIMPACT-LICENSE-BSD.TXT for more details.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/*! \addtogroup GEOMETRIC_OPERATIONS
|
||||
*/
|
||||
//! @{
|
||||
|
||||
|
||||
#define MAX_TRI_CLIPPING 8
|
||||
|
||||
//! Clips a polygon by a plane
|
||||
#define PLANE_CLIP_POLYGON(plane,polygon_points,polygon_point_count,clipped,clipped_count,max_clipped) \
|
||||
{ \
|
||||
clipped_count = 0; \
|
||||
GUINT32 _i, _vi, _prevclassif=32000, _classif; \
|
||||
GREAL _d; \
|
||||
for(_i=0;_i<=polygon_point_count;_i++) \
|
||||
{ \
|
||||
_vi = _i%polygon_point_count; \
|
||||
_d = DISTANCE_PLANE_POINT(plane,polygon_points[_vi]); \
|
||||
_classif = _d>G_EPSILON ?1:0; \
|
||||
if(_classif == 0) \
|
||||
{ \
|
||||
if(_prevclassif==1) \
|
||||
{\
|
||||
if(clipped_count<max_clipped) \
|
||||
{\
|
||||
PLANE_CLIP_SEGMENT(polygon_points[_i-1],polygon_points[_vi],plane,clipped[clipped_count]); \
|
||||
clipped_count++; \
|
||||
} \
|
||||
} \
|
||||
if(clipped_count<max_clipped&&_i<polygon_point_count) \
|
||||
{ \
|
||||
VEC_COPY(clipped[clipped_count],polygon_points[_vi]); \
|
||||
clipped_count++; \
|
||||
} \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
if(_prevclassif==0) \
|
||||
{ \
|
||||
if(clipped_count<max_clipped) \
|
||||
{ \
|
||||
PLANE_CLIP_SEGMENT(polygon_points[_i-1],polygon_points[_vi],plane,clipped[clipped_count]); \
|
||||
clipped_count++; \
|
||||
} \
|
||||
} \
|
||||
} \
|
||||
_prevclassif = _classif; \
|
||||
} \
|
||||
}\
|
||||
|
||||
|
||||
struct GIM_TRIPLANES_CACHE
|
||||
{
|
||||
/*!
|
||||
Planes are:
|
||||
0 : Face normal plane (0,3)
|
||||
1 : Edge 1 plane (4,7)
|
||||
2 : Edge 2 plane (8,11)
|
||||
3 : Edge 3 plane (12,15)
|
||||
*/
|
||||
vec4f m_planes[4];
|
||||
};
|
||||
//typedef struct _GIM_TRIPLANES_CACHE GIM_TRIPLANES_CACHE;
|
||||
|
||||
|
||||
struct GIM_TRIANGLE_DATA
|
||||
{
|
||||
vec3f m_vertices[3];
|
||||
GIM_TRIPLANES_CACHE m_planes;
|
||||
};
|
||||
//typedef struct _GIM_TRIANGLE_DATA GIM_TRIANGLE_DATA;
|
||||
|
||||
//! tri_data is a GIM_TRIANGLE_DATA
|
||||
#define GIM_CALC_TRIANGLE_DATA_PLANES(tri_data)\
|
||||
{\
|
||||
TRIANGLE_PLANE((tri_data).m_vertices[0],(tri_data).m_vertices[1],(tri_data).m_vertices[2],(tri_data).m_planes.m_planes[0]);\
|
||||
EDGE_PLANE((tri_data).m_vertices[0],(tri_data).m_vertices[1],((tri_data).m_planes.m_planes[0]),((tri_data).m_planes.m_planes[1]));\
|
||||
EDGE_PLANE((tri_data).m_vertices[1],(tri_data).m_vertices[2],((tri_data).m_planes.m_planes[0]),((tri_data).m_planes.m_planes[2]));\
|
||||
EDGE_PLANE((tri_data).m_vertices[2],(tri_data).m_vertices[0],((tri_data).m_planes.m_planes[0]), ((tri_data).m_planes.m_planes[3]));\
|
||||
}\
|
||||
|
||||
//Structure for collision
|
||||
|
||||
struct GIM_TRIANGLE_CONTACT_DATA
|
||||
{
|
||||
GREAL m_penetration_depth;
|
||||
GUINT32 m_point_count;
|
||||
vec3f m_separating_normal;
|
||||
vec3f m_points[MAX_TRI_CLIPPING];
|
||||
};
|
||||
//typedef struct _GIM_TRIANGLE_CONTACT_DATA GIM_TRIANGLE_CONTACT_DATA;
|
||||
|
||||
struct GIM_TRIANGLE_RAY_CONTACT_DATA
|
||||
{
|
||||
GREAL u;
|
||||
GREAL v;
|
||||
GREAL tparam;
|
||||
GUINT32 m_face_id;
|
||||
vec3f m_point;
|
||||
vec3f m_normal;
|
||||
};
|
||||
//typedef struct _GIM_TRIANGLE_RAY_CONTACT_DATA GIM_TRIANGLE_RAY_CONTACT_DATA;
|
||||
|
||||
//! Fast Triangle Triangle overlapping test
|
||||
int gim_triangle_triangle_overlap(
|
||||
GIM_TRIANGLE_DATA *tri1,
|
||||
GIM_TRIANGLE_DATA *tri2);
|
||||
|
||||
|
||||
//! Fast but inacurate conservative Triangle Triangle overlapping test
|
||||
int gim_triangle_triangle_overlap_fast(
|
||||
GIM_TRIANGLE_DATA *tri1,
|
||||
GIM_TRIANGLE_DATA *tri2);
|
||||
|
||||
|
||||
//! Finds the contact points from a collision of two triangles
|
||||
/*!
|
||||
Returns the contact points, the penetration depth and the separating normal of the collision
|
||||
between two triangles. The normal is pointing towards triangle 1 from triangle 2
|
||||
*/
|
||||
int gim_triangle_triangle_collision(
|
||||
GIM_TRIANGLE_DATA *tri1,
|
||||
GIM_TRIANGLE_DATA *tri2,
|
||||
GIM_TRIANGLE_CONTACT_DATA * contact_data);
|
||||
|
||||
//Ray triangle
|
||||
|
||||
|
||||
/*!
|
||||
Solve the System for u,v parameters:
|
||||
|
||||
u*axe1[i1] + v*axe2[i1] = vecproj[i1]
|
||||
u*axe1[i2] + v*axe2[i2] = vecproj[i2]
|
||||
|
||||
sustitute:
|
||||
v = (vecproj[i2] - u*axe1[i2])/axe2[i2]
|
||||
|
||||
then the first equation in terms of 'u':
|
||||
|
||||
--> u*axe1[i1] + ((vecproj[i2] - u*axe1[i2])/axe2[i2])*axe2[i1] = vecproj[i1]
|
||||
|
||||
--> u*axe1[i1] + vecproj[i2]*axe2[i1]/axe2[i2] - u*axe1[i2]*axe2[i1]/axe2[i2] = vecproj[i1]
|
||||
|
||||
--> u*(axe1[i1] - axe1[i2]*axe2[i1]/axe2[i2]) = vecproj[i1] - vecproj[i2]*axe2[i1]/axe2[i2]
|
||||
|
||||
--> u*((axe1[i1]*axe2[i2] - axe1[i2]*axe2[i1])/axe2[i2]) = (vecproj[i1]*axe2[i2] - vecproj[i2]*axe2[i1])/axe2[i2]
|
||||
|
||||
--> u*(axe1[i1]*axe2[i2] - axe1[i2]*axe2[i1]) = vecproj[i1]*axe2[i2] - vecproj[i2]*axe2[i1]
|
||||
|
||||
--> u = (vecproj[i1]*axe2[i2] - vecproj[i2]*axe2[i1]) /(axe1[i1]*axe2[i2] - axe1[i2]*axe2[i1])
|
||||
|
||||
if 0.0<= u+v <=1.0 then they are inside of triangle
|
||||
|
||||
*/
|
||||
#define TRIANGLE_GET_UVPARAMETERS(point,vec1,vec2,vec3,tri_plane,u,v,outside)\
|
||||
{\
|
||||
vec3f _axe1, _axe2, _vecproj;\
|
||||
VEC_DIFF(_axe1,vec2,vec1);\
|
||||
VEC_DIFF(_axe2,vec3,vec1);\
|
||||
VEC_DIFF(_vecproj,point,vec1);\
|
||||
GUINT32 _i1,_i2;\
|
||||
PLANE_MINOR_AXES(tri_plane, _i1, _i2);\
|
||||
if(fabsf(_axe2[_i2])<G_EPSILON)\
|
||||
{\
|
||||
u = (_vecproj[_i2]*_axe2[_i1] - _vecproj[_i1]*_axe2[_i2]) /(_axe1[_i2]*_axe2[_i1] - _axe1[_i1]*_axe2[_i2]);\
|
||||
v = (_vecproj[_i1] - u*_axe1[_i1])/_axe2[_i1];\
|
||||
}\
|
||||
else\
|
||||
{\
|
||||
u = (_vecproj[_i1]*_axe2[_i2] - _vecproj[_i2]*_axe2[_i1]) /(_axe1[_i1]*_axe2[_i2] - _axe1[_i2]*_axe2[_i1]);\
|
||||
v = (_vecproj[_i2] - u*_axe1[_i2])/_axe2[_i2];\
|
||||
}\
|
||||
if(u<-G_EPSILON)\
|
||||
{\
|
||||
outside = 1;\
|
||||
}\
|
||||
else if(v<-G_EPSILON)\
|
||||
{\
|
||||
outside = 1;\
|
||||
}\
|
||||
else\
|
||||
{\
|
||||
float sumuv;\
|
||||
sumuv = u+v;\
|
||||
if(sumuv<-G_EPSILON)\
|
||||
{\
|
||||
outside = 1;\
|
||||
}\
|
||||
else if(sumuv-1.0f>G_EPSILON)\
|
||||
{\
|
||||
outside = 1;\
|
||||
}\
|
||||
else\
|
||||
{\
|
||||
outside = 0;\
|
||||
}\
|
||||
}\
|
||||
}\
|
||||
|
||||
//! Finds the collision of a ray and a triangle.
|
||||
#define RAY_TRIANGLE_INTERSECTION(vOrigin,vDir,vec1,vec2,vec3,tri_plane,pout,u,v,tparam,tmax,does_intersect)\
|
||||
{\
|
||||
RAY_PLANE_COLLISION(tri_plane,vDir,vOrigin,pout,tparam,does_intersect);\
|
||||
if(does_intersect != 0)\
|
||||
{\
|
||||
if(tparam<-G_EPSILON||tparam>tmax+G_EPSILON)\
|
||||
{\
|
||||
does_intersect = 0;\
|
||||
}\
|
||||
else\
|
||||
{\
|
||||
TRIANGLE_GET_UVPARAMETERS(pout,vec1,vec2,vec3,tri_plane,u,v,does_intersect);\
|
||||
does_intersect = !does_intersect;\
|
||||
}\
|
||||
}\
|
||||
}\
|
||||
|
||||
|
||||
//! @}
|
||||
|
||||
#endif // GIM_TRI_COLLISION_H_INCLUDED
|
||||
51
thirdparty/ode-0.16.5/GIMPACT/include/GIMPACT/gim_tri_sphere_collision.h
vendored
Normal file
51
thirdparty/ode-0.16.5/GIMPACT/include/GIMPACT/gim_tri_sphere_collision.h
vendored
Normal file
@@ -0,0 +1,51 @@
|
||||
#ifndef GIM_TRI_SPHERE_COLLISION_H_INCLUDED
|
||||
#define GIM_TRI_SPHERE_COLLISION_H_INCLUDED
|
||||
|
||||
/*! \file gim_tri_sphere_collision.h
|
||||
\author Francisco Le<4C>n
|
||||
*/
|
||||
/*
|
||||
-----------------------------------------------------------------------------
|
||||
This source file is part of GIMPACT Library.
|
||||
|
||||
For the latest info, see http://gimpact.sourceforge.net/
|
||||
|
||||
Copyright (c) 2006 Francisco Leon. C.C. 80087371.
|
||||
email: projectileman@yahoo.com
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of EITHER:
|
||||
(1) The GNU Lesser General Public License as published by the Free
|
||||
Software Foundation; either version 2.1 of the License, or (at
|
||||
your option) any later version. The text of the GNU Lesser
|
||||
General Public License is included with this library in the
|
||||
file GIMPACT-LICENSE-LGPL.TXT.
|
||||
(2) The BSD-style license that is included with this library in
|
||||
the file GIMPACT-LICENSE-BSD.TXT.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files
|
||||
GIMPACT-LICENSE-LGPL.TXT and GIMPACT-LICENSE-BSD.TXT for more details.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/*! \addtogroup GEOMETRIC_OPERATIONS
|
||||
*/
|
||||
//! @{
|
||||
|
||||
//! Finds the contact points from a collision of a triangle and a sphere
|
||||
/*!
|
||||
\param tri
|
||||
\param center
|
||||
\param radius
|
||||
\param contact_data Contains the closest points on the Sphere, and the normal is pointing to triangle
|
||||
*/
|
||||
int gim_triangle_sphere_collision(
|
||||
GIM_TRIANGLE_DATA *tri,
|
||||
vec3f center, GREAL radius,
|
||||
GIM_TRIANGLE_CONTACT_DATA * contact_data);
|
||||
|
||||
//! @}
|
||||
#endif // GIM_TRI_SPHERE_COLLISION_H_INCLUDED
|
||||
544
thirdparty/ode-0.16.5/GIMPACT/include/GIMPACT/gim_trimesh.h
vendored
Normal file
544
thirdparty/ode-0.16.5/GIMPACT/include/GIMPACT/gim_trimesh.h
vendored
Normal file
@@ -0,0 +1,544 @@
|
||||
#ifndef GIM_TRIMESH_H_INCLUDED
|
||||
#define GIM_TRIMESH_H_INCLUDED
|
||||
/*! \file gim_trimesh.h
|
||||
\author Francisco Le<4C>n
|
||||
*/
|
||||
/*
|
||||
-----------------------------------------------------------------------------
|
||||
This source file is part of GIMPACT Library.
|
||||
|
||||
For the latest info, see http://gimpact.sourceforge.net/
|
||||
|
||||
Copyright (c) 2006 Francisco Leon. C.C. 80087371.
|
||||
email: projectileman@yahoo.com
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of EITHER:
|
||||
(1) The GNU Lesser General Public License as published by the Free
|
||||
Software Foundation; either version 2.1 of the License, or (at
|
||||
your option) any later version. The text of the GNU Lesser
|
||||
General Public License is included with this library in the
|
||||
file GIMPACT-LICENSE-LGPL.TXT.
|
||||
(2) The BSD-style license that is included with this library in
|
||||
the file GIMPACT-LICENSE-BSD.TXT.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files
|
||||
GIMPACT-LICENSE-LGPL.TXT and GIMPACT-LICENSE-BSD.TXT for more details.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#include "GIMPACT/gim_boxpruning.h"
|
||||
#include "GIMPACT/gim_contact.h"
|
||||
|
||||
|
||||
///MAsk defines
|
||||
#define GIM_TRIMESH_TRANSFORMED_REPLY 1
|
||||
#define GIM_TRIMESH_NEED_UPDATE 2
|
||||
|
||||
/*! \addtogroup TRIMESH
|
||||
\brief
|
||||
A Trimesh is the basic geometric structure for representing solid objects.
|
||||
<p><strong>CREATING TRIMESHES</strong></p>
|
||||
<ul>
|
||||
<li> For creating trimeshes, you must initialize Buffer managers by calling \ref gimpact_init
|
||||
<li> Then you must define the vertex and index sources by creating them with \ref BUFFER_ARRAYS routines, and then call \ref gim_trimesh_create_from_arrays.
|
||||
<li> An alternative way for creating trimesh objects is calling \ref gim_trimesh_create_from_data.
|
||||
<li> For access to the trimesh data (vertices, triangle indices), you must call \ref gim_trimesh_locks_work_data , and \ref gim_trimesh_unlocks_work_data to finish the access.
|
||||
<li> Each time when the trimesh data is modified, you must call \ref gim_trimesh_update after.
|
||||
<li> When a trimesh is no longer needed, you must call \ref gim_trimesh_destroy.
|
||||
</ul>
|
||||
|
||||
<p>This is an example of how to create a deformable trimesh that shares vertices with the user application:</p>
|
||||
\code
|
||||
//Declaration of vertices
|
||||
vec3f trimeshvertices[200];
|
||||
//Declaration of indices
|
||||
GUINT trimeshindices[100];
|
||||
|
||||
... Initializing vertices and triangle indices at beginning
|
||||
|
||||
//Then create trimesh
|
||||
GIM_TRIMESH mytrimesh;
|
||||
|
||||
//Calling trimesh create function
|
||||
|
||||
gim_trimesh_create_from_data(
|
||||
&mytrimesh,
|
||||
trimeshvertices,200,
|
||||
0 ,//copy_vertices is 0
|
||||
trimeshindices,
|
||||
100,
|
||||
0, //copy_indices is 0
|
||||
0 //transformed_reply is 0
|
||||
);
|
||||
\endcode
|
||||
<p>Note that parameter transformed_reply is 0, that means that m_transformed_vertex_buffer is a reference to m_source_vertex on the trimesh, and transformations are not avaliable. Use that configuration if you have to simulate a deformable trimesh like cloth or elastic bodies.</p>
|
||||
<p>When the trimesh is no longer needed, destroy it safely with gim_trimesh_destroy()</p>
|
||||
<p><strong>UPDATING TRIMESHES</strong></p>
|
||||
<p>On simulation loops, is needed to update trimeshes every time to update vertices althought updating triangle boxes and planes cache. There is two ways to update trimeshes: </p>
|
||||
<ul>
|
||||
<li> Updating vertices directly. You need to access to the \ref GIM_TRIMESH.m_source_vertex_buffer member; a vertex buffer which has access to the source vertices.
|
||||
\code
|
||||
// Access to the source vertices
|
||||
gim_buffer_array_lock(&mytrimesh.m_source_vertex_buffer, G_MA_READ_WRITE);
|
||||
|
||||
//Get a pointer to the vertex buffer
|
||||
vec3f * vertexpointer = GIM_BUFFER_ARRAY_POINTER(vec3f,mytrimesh.m_source_vertex_buffer,0);
|
||||
|
||||
//Get the amount of vertices
|
||||
int veccount = mytrimesh.m_source_vertex_buffer.m_element_count;
|
||||
|
||||
//Modify vertices
|
||||
for (int i=0;i<veccount ;i++ )
|
||||
{
|
||||
.....
|
||||
.....
|
||||
processing vertices
|
||||
.....
|
||||
.....
|
||||
}
|
||||
|
||||
// Don't forget to unlock the source vertex array
|
||||
gim_buffer_array_unlock(&mytrimesh.m_source_vertex_buffer);
|
||||
|
||||
// Notify that the state of the trimesh is changed
|
||||
gim_trimesh_post_update(&mytrimesh.m_source_vertex_buffer);
|
||||
|
||||
\endcode
|
||||
For making trimeshes that allow to update their vertices, use \ref gim_trimesh_create_from_data with parameter <strong>transformed_reply</strong> = 0.
|
||||
</ul>
|
||||
<ul>
|
||||
<li> Aplying a transformation. Simply use \ref gim_trimesh_set_tranform . Remember that with this method trimeshes must be created with \ref gim_trimesh_create_from_data with parameter <strong>transformed_reply</strong> = 1.
|
||||
</ul>
|
||||
<p> After updating vertices, you must call \ref gim_trimesh_update()</p>
|
||||
<p><strong>TRIMESHES COLLISION</strong></p>
|
||||
<p>Before collide trimeshes, you need to update them first.</p>
|
||||
<p>Then you must use \ref gim_trimesh_trimesh_collision().</p>
|
||||
|
||||
*/
|
||||
//! @{
|
||||
|
||||
//! Prototype for updating vertices
|
||||
typedef void * gim_update_trimesh_function(struct _GIM_TRIMESH *);
|
||||
|
||||
//! Trimesh
|
||||
struct GIM_TRIMESH
|
||||
{
|
||||
///Original
|
||||
//@{
|
||||
GBUFFER_ARRAY m_source_vertex_buffer;//!< Buffer of vec3f coordinates
|
||||
|
||||
//! (GUINT) Indices of triangles, groups of three elements.
|
||||
/*!
|
||||
Array of GUINT. Triangle indices. Each triple contains indices of the vertices for each triangle.
|
||||
\invariant must be aligned
|
||||
*/
|
||||
GBUFFER_ARRAY m_tri_index_buffer;
|
||||
//@}
|
||||
///Allocated
|
||||
//@{
|
||||
char m_mask;//!< Don't use directly
|
||||
|
||||
//! Allocated transformed vertices vec3f
|
||||
/*!
|
||||
Array of vec3f.If gim_trimesh_has_tranformed_reply(this) == 1 then it refers to the m_source_vertex_buffer
|
||||
\invariant must be aligned
|
||||
*/
|
||||
GBUFFER_ARRAY m_transformed_vertex_buffer;
|
||||
//@}
|
||||
///Auxiliary data
|
||||
//@{
|
||||
GIM_AABB_SET m_aabbset;
|
||||
GDYNAMIC_ARRAY m_planes_cache_buffer;//! Allocated GIM_TRIPLANES_CACHE
|
||||
GDYNAMIC_ARRAY m_planes_cache_bitset;
|
||||
gim_update_trimesh_function * m_update_callback;//! If null, then m_transform is applied.
|
||||
mat4f m_transform;
|
||||
//@}
|
||||
};
|
||||
//typedef struct _GIM_TRIMESH GIM_TRIMESH;
|
||||
|
||||
/// Info about mesh
|
||||
//! Return the trimesh triangle count
|
||||
GUINT32 gim_trimesh_get_triangle_count(GIM_TRIMESH * trimesh);
|
||||
|
||||
//! Returns 1 if the m_transformed_vertex_buffer is a reply of m_source_vertex_buffer
|
||||
char gim_trimesh_has_tranformed_reply(GIM_TRIMESH * trimesh);
|
||||
|
||||
//! Returns 1 if the trimesh needs to update their aabbset and the planes cache.
|
||||
char gim_trimesh_needs_update(GIM_TRIMESH * trimesh);
|
||||
|
||||
//! Change the state of the trimesh to force it to update
|
||||
/*!
|
||||
Call it after having made changes to the trimesh.
|
||||
\post gim_trimesh_need_update(trimesh) will return 1
|
||||
\sa gim_trimesh_needs_update,gim_trimesh_has_tranformed_reply
|
||||
*/
|
||||
void gim_trimesh_post_update(GIM_TRIMESH * trimesh);
|
||||
|
||||
//! Creates the aabb set and the triangles cache
|
||||
/*!
|
||||
|
||||
\param trimesh
|
||||
\param vertex_array
|
||||
\param triindex_array
|
||||
\param transformed_reply If 1, then the m_transformed_vertices is a reply of the source vertices. Else it just is a reference to the original array.
|
||||
\post it copies the arrays by reference, and creates the auxiliary data (m_aabbset,m_planes_cache_buffer)
|
||||
*/
|
||||
void gim_trimesh_create_from_arrays(GBUFFER_MANAGER_DATA buffer_managers[],
|
||||
GIM_TRIMESH * trimesh, GBUFFER_ARRAY * vertex_array, GBUFFER_ARRAY * triindex_array,char transformed_reply);
|
||||
|
||||
|
||||
|
||||
//! Create a trimesh from vertex array and an index array
|
||||
/*!
|
||||
\param trimesh An uninitialized GIM_TRIMESH structure
|
||||
\param vertex_array A buffer to a vec3f array
|
||||
\param vertex_count
|
||||
\param triindex_array
|
||||
\param index_count
|
||||
\param copy_vertices If 1, it copies the source vertices in another buffer. Else (0) it constructs a reference to the data.
|
||||
\param copy_indices If 1, it copies the source vertices in another buffer. Else (0) it constructs a reference to the data.
|
||||
\param transformed_reply If 1, then the m_transformed_vertices is a reply of the source vertices. Else it just be a reference to the original array. Use 1 if you will apply transformations to the trimesh. See \ref gim_trimesh_set_tranform().
|
||||
*/
|
||||
void gim_trimesh_create_from_data(GBUFFER_MANAGER_DATA buffer_managers[],
|
||||
GIM_TRIMESH * trimesh, vec3f * vertex_array, GUINT32 vertex_count,char copy_vertices,
|
||||
GUINT32 * triindex_array, GUINT32 index_count,char copy_indices,char transformed_reply);
|
||||
|
||||
//! Clears auxiliary data and releases buffer arrays
|
||||
void gim_trimesh_destroy(GIM_TRIMESH * trimesh);
|
||||
|
||||
//! Copies two meshes
|
||||
/*!
|
||||
\param source_trimesh
|
||||
\param dest_trimesh
|
||||
\param copy_by_reference If 1, it attaches a reference to the source vertices, else it copies the vertices
|
||||
\param transformed_reply If 1, transformed vertices are reply of source vertives. 1 Is recommended
|
||||
*/
|
||||
void gim_trimesh_copy(GIM_TRIMESH * source_trimesh,
|
||||
GBUFFER_MANAGER_DATA dest_buffer_managers[], GIM_TRIMESH * dest_trimesh,
|
||||
char copy_by_reference, char transformed_reply);
|
||||
|
||||
|
||||
//! Locks the trimesh for working with it
|
||||
/*!
|
||||
\post locks m_tri_index_buffer and m_transformed_vertex_buffer.
|
||||
\param trimesh
|
||||
*/
|
||||
void gim_trimesh_locks_work_data(GIM_TRIMESH * trimesh);
|
||||
|
||||
|
||||
//! unlocks the trimesh
|
||||
/*!
|
||||
\post unlocks m_tri_index_buffer and m_transformed_vertex_buffer.
|
||||
\param trimesh
|
||||
*/
|
||||
void gim_trimesh_unlocks_work_data(GIM_TRIMESH * trimesh);
|
||||
|
||||
//! Updates m_transformed_vertex_buffer
|
||||
/*!
|
||||
\pre m_transformed_vertex_buffer must be unlocked
|
||||
*/
|
||||
void gim_trimesh_update_vertices(GIM_TRIMESH * trimesh);
|
||||
|
||||
//! Updates m_aabbset and m_planes_cache_bitset
|
||||
/*!
|
||||
\pre gim_trimesh_locks_work_data must be called before
|
||||
*/
|
||||
void gim_trimesh_update_aabbset(GIM_TRIMESH * trimesh);
|
||||
|
||||
//! Calls before perfom collisions. Updates the trimesh if needed
|
||||
/*!
|
||||
\post If gim_trimesh_needs_update returns 1, then it calls gim_trimesh_update_vertices and gim_trimesh_update_aabbset
|
||||
*/
|
||||
void gim_trimesh_update(GIM_TRIMESH * trimesh);
|
||||
|
||||
//! Set the transform of a trimesh
|
||||
/*!
|
||||
\post This function calls to gim_trimesh_post_update
|
||||
*/
|
||||
void gim_trimesh_set_tranform(GIM_TRIMESH * trimesh, mat4f transform);
|
||||
|
||||
//! Fetch triangle data
|
||||
/*!
|
||||
\pre gim_trimesh_locks_work_data must be called before
|
||||
*/
|
||||
void gim_trimesh_get_triangle_data(GIM_TRIMESH * trimesh, GUINT32 triangle_index, GIM_TRIANGLE_DATA * tri_data);
|
||||
|
||||
//! Fetch triangle vertices
|
||||
/*!
|
||||
\pre gim_trimesh_locks_work_data must be called before
|
||||
*/
|
||||
void gim_trimesh_get_triangle_vertices(GIM_TRIMESH * trimesh, GUINT32 triangle_index, vec3f v1,vec3f v2,vec3f v3);
|
||||
|
||||
//! Trimesh Trimesh Collisions
|
||||
/*!
|
||||
Before use of this function you must update each trimesh:
|
||||
\code
|
||||
gim_trimesh_update(TriMesh1);
|
||||
gim_trimesh_update(TriMesh2);
|
||||
\endcode
|
||||
Then you must use the trimesh collision in this way:
|
||||
\code
|
||||
int collide_trimeshes(GIM_TRIMESH * TriMesh1, GIM_TRIMESH * TriMesh2)
|
||||
{
|
||||
//Create contact list
|
||||
GDYNAMIC_ARRAY trimeshcontacts;
|
||||
GIM_CREATE_CONTACT_LIST(trimeshcontacts);
|
||||
|
||||
//Collide trimeshes
|
||||
gim_trimesh_trimesh_collision(TriMesh1,TriMesh2,&trimeshcontacts);
|
||||
|
||||
if(trimeshcontacts.m_size == 0) //do nothing
|
||||
{
|
||||
GIM_DYNARRAY_DESTROY(trimeshcontacts);//clean contact array
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Getting a pointer to the contact array
|
||||
GIM_CONTACT * ptrimeshcontacts = GIM_DYNARRAY_POINTER(GIM_CONTACT,trimeshcontacts);
|
||||
|
||||
int contactcount = trimeshcontacts.m_size;
|
||||
int i;
|
||||
//Process contacts
|
||||
for (i=0;i<contactcount ;i++)
|
||||
{
|
||||
//Do something with the contact (ptrimeshcontacts)
|
||||
......
|
||||
......
|
||||
// Like creating joints or anything else
|
||||
......
|
||||
......
|
||||
ptrimeshcontacts++;
|
||||
}
|
||||
GIM_DYNARRAY_DESTROY(trimeshcontacts);
|
||||
return contactcount;
|
||||
}
|
||||
\endcode
|
||||
In each contact
|
||||
<ul>
|
||||
<li> m_handle1 points to trimesh1.
|
||||
<li> m_handle2 points to trimesh2.
|
||||
<li> m_feature1 Is a triangle index of trimesh1.
|
||||
<li> m_feature2 Is a triangle index of trimesh2.
|
||||
</ul>
|
||||
|
||||
\param trimesh1 Collider
|
||||
\param trimesh2 Collidee
|
||||
\param contacts A GIM_CONTACT array. Must be initialized
|
||||
*/
|
||||
void gim_trimesh_trimesh_collision(GIM_TRIMESH * trimesh1, GIM_TRIMESH * trimesh2, GDYNAMIC_ARRAY * contacts);
|
||||
|
||||
|
||||
//! Trimesh Sphere Collisions
|
||||
/*!
|
||||
Before use of this function you must update the trimesh:
|
||||
\code
|
||||
gim_trimesh_update(trimesh);
|
||||
\endcode
|
||||
Then you must use this function in this way:
|
||||
\code
|
||||
int collide_trimesh_sphere(GIM_TRIMESH * trimesh, vec3f center,GREAL radius)
|
||||
{
|
||||
//Create contact list
|
||||
GDYNAMIC_ARRAY trimeshcontacts;
|
||||
GIM_CREATE_CONTACT_LIST(trimeshcontacts);
|
||||
|
||||
//Collide trimeshes
|
||||
gim_trimesh_sphere_collision(trimesh,center,radius,&trimeshcontacts);
|
||||
|
||||
if(trimeshcontacts.m_size == 0) //do nothing
|
||||
{
|
||||
GIM_DYNARRAY_DESTROY(trimeshcontacts);//clean contact array
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Getting a pointer to the contact array
|
||||
GIM_CONTACT * ptrimeshcontacts = GIM_DYNARRAY_POINTER(GIM_CONTACT,trimeshcontacts);
|
||||
|
||||
int contactcount = trimeshcontacts.m_size;
|
||||
int i;
|
||||
//Process contacts
|
||||
for (i=0;i<contactcount ;i++)
|
||||
{
|
||||
//Do something with the contact (ptrimeshcontacts)
|
||||
......
|
||||
......
|
||||
// Like creating joints or anything else
|
||||
......
|
||||
......
|
||||
ptrimeshcontacts++;
|
||||
}
|
||||
GIM_DYNARRAY_DESTROY(trimeshcontacts);
|
||||
return contactcount;
|
||||
}
|
||||
\endcode
|
||||
|
||||
In each contact
|
||||
<ul>
|
||||
<li> m_handle1 points to trimesh.
|
||||
<li> m_handle2 points to NULL.
|
||||
<li> m_feature1 Is a triangle index of trimesh.
|
||||
</ul>
|
||||
|
||||
\param trimesh
|
||||
\param center
|
||||
\param radius
|
||||
\param contacts A GIM_CONTACT array. Must be initialized
|
||||
*/
|
||||
void gim_trimesh_sphere_collision(GIM_TRIMESH * trimesh,vec3f center,GREAL radius, GDYNAMIC_ARRAY * contacts);
|
||||
|
||||
|
||||
//! Trimesh Capsule collision
|
||||
/*!
|
||||
Finds the closest primitive collided with the ray.
|
||||
|
||||
Before use of this function you must update the trimesh:
|
||||
\code
|
||||
gim_trimesh_update(trimesh);
|
||||
\endcode
|
||||
Then you must use this function in this way:
|
||||
\code
|
||||
int collide_trimesh_capsule(GIM_TRIMESH * trimesh, GIM_CAPSULE_DATA * capsule)
|
||||
{
|
||||
//Create contact list
|
||||
GDYNAMIC_ARRAY trimeshcontacts;
|
||||
GIM_CREATE_CONTACT_LIST(trimeshcontacts);
|
||||
|
||||
//Collide trimeshes
|
||||
gim_trimesh_capsule_collision(trimesh,capsule,&trimeshcontacts);
|
||||
|
||||
if(trimeshcontacts.m_size == 0) //do nothing
|
||||
{
|
||||
GIM_DYNARRAY_DESTROY(trimeshcontacts);//clean contact array
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Getting a pointer to the contact array
|
||||
GIM_CONTACT * ptrimeshcontacts = GIM_DYNARRAY_POINTER(GIM_CONTACT,trimeshcontacts);
|
||||
|
||||
int contactcount = trimeshcontacts.m_size;
|
||||
int i;
|
||||
//Process contacts
|
||||
for (i=0;i<contactcount ;i++)
|
||||
{
|
||||
//Do something with the contact (ptrimeshcontacts)
|
||||
......
|
||||
......
|
||||
// Like creating joints or anything else
|
||||
......
|
||||
......
|
||||
ptrimeshcontacts++;
|
||||
}
|
||||
GIM_DYNARRAY_DESTROY(trimeshcontacts);
|
||||
return contactcount;
|
||||
}
|
||||
\endcode
|
||||
|
||||
In each contact
|
||||
<ul>
|
||||
<li> m_handle1 points to trimesh.
|
||||
<li> m_handle2 points to NULL.
|
||||
<li> m_feature1 Is a triangle index of trimesh.
|
||||
</ul>
|
||||
|
||||
\param trimesh
|
||||
\param capsule
|
||||
\param contacts A GIM_CONTACT array. Must be initialized
|
||||
*/
|
||||
void gim_trimesh_capsule_collision(GIM_TRIMESH * trimesh, GIM_CAPSULE_DATA * capsule, GDYNAMIC_ARRAY * contacts);
|
||||
|
||||
|
||||
///Function for create Trimesh Plane collision result
|
||||
#define GIM_CREATE_TRIMESHPLANE_CONTACTS(dynarray) GIM_DYNARRAY_CREATE(vec4f,dynarray,G_ARRAY_GROW_SIZE)
|
||||
|
||||
//! Trimesh Plane Collisions
|
||||
/*!
|
||||
|
||||
Before use of this function you must update the trimesh:
|
||||
\code
|
||||
gim_trimesh_update(trimesh);
|
||||
\endcode
|
||||
Then you must use this function in this way:
|
||||
\code
|
||||
int collide_trimesh_plane(GIM_TRIMESH * trimesh, vec4f plane)
|
||||
{
|
||||
//Create contact list
|
||||
GDYNAMIC_ARRAY tri_plane_contacts;
|
||||
GIM_CREATE_TRIMESHPLANE_CONTACTS(tri_plane_contacts);
|
||||
|
||||
//Collide trimeshes
|
||||
gim_trimesh_plane_collision(trimesh,plane,&tri_plane_contacts);
|
||||
|
||||
if(tri_plane_contacts.m_size == 0) //do nothing
|
||||
{
|
||||
GIM_DYNARRAY_DESTROY(tri_plane_contacts);//clean contact array
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Getting a pointer to the contact array
|
||||
vec4f * planecontacts = GIM_DYNARRAY_POINTER(vec4f,tri_plane_contacts);
|
||||
|
||||
int contactcount = tri_plane_contacts.m_size;
|
||||
int i;
|
||||
//Process contacts
|
||||
for (i=0;i<contactcount ;i++)
|
||||
{
|
||||
vec3f contactpoint;
|
||||
GREAL contactdis;
|
||||
|
||||
VEC_COPY(contactpoint,planecontacts[i]); //Get contact point
|
||||
contactdis = planecontacts[i][3]; // Get distance depth
|
||||
|
||||
//Do something with the contact
|
||||
......
|
||||
......
|
||||
// Like creating joints or anything else
|
||||
......
|
||||
......
|
||||
}
|
||||
GIM_DYNARRAY_DESTROY(tri_plane_contacts);
|
||||
return contactcount;
|
||||
}
|
||||
\endcode
|
||||
|
||||
In each contact the 3 first coordinates refer to the contact point, the fourth refers to the distance depth and the normal is the normal of the plane.
|
||||
|
||||
\param trimesh
|
||||
\param plane vec4f plane
|
||||
\param contacts A vec4f array. Must be initialized (~100). Each element have the coordinate point in the first 3 elements, and vec4f[3] has the penetration depth.
|
||||
*/
|
||||
void gim_trimesh_plane_collision(GIM_TRIMESH * trimesh,vec4f plane, GDYNAMIC_ARRAY * contacts);
|
||||
|
||||
|
||||
//! Trimesh Ray Collisions
|
||||
/*!
|
||||
\param trimesh
|
||||
\param origin
|
||||
\param dir
|
||||
\param tmax
|
||||
\param contact
|
||||
\return 1 if the ray collides, else 0
|
||||
*/
|
||||
int gim_trimesh_ray_collision(GIM_TRIMESH * trimesh,vec3f origin,vec3f dir, GREAL tmax, GIM_TRIANGLE_RAY_CONTACT_DATA * contact);
|
||||
|
||||
|
||||
//! Trimesh Ray Collisions closest
|
||||
/*!
|
||||
Finds the closest primitive collided by the ray
|
||||
\param trimesh
|
||||
\param origin
|
||||
\param dir
|
||||
\param tmax
|
||||
\param contact
|
||||
\return 1 if the ray collides, else 0
|
||||
*/
|
||||
int gim_trimesh_ray_closest_collision(GIM_TRIMESH * trimesh,vec3f origin,vec3f dir, GREAL tmax, GIM_TRIANGLE_RAY_CONTACT_DATA * contact);
|
||||
|
||||
//! @}
|
||||
|
||||
|
||||
|
||||
#endif // GIM_TRIMESH_H_INCLUDED
|
||||
45
thirdparty/ode-0.16.5/GIMPACT/include/GIMPACT/gimpact.h
vendored
Normal file
45
thirdparty/ode-0.16.5/GIMPACT/include/GIMPACT/gimpact.h
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
#ifndef GIMPACT_H_INCLUDED
|
||||
#define GIMPACT_H_INCLUDED
|
||||
|
||||
/*! \file gimpact.h
|
||||
\author Francisco Le<4C>n
|
||||
*/
|
||||
/*
|
||||
-----------------------------------------------------------------------------
|
||||
This source file is part of GIMPACT Library.
|
||||
|
||||
For the latest info, see http://gimpact.sourceforge.net/
|
||||
|
||||
Copyright (c) 2006 Francisco Leon. C.C. 80087371.
|
||||
email: projectileman@yahoo.com
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of EITHER:
|
||||
(1) The GNU Lesser General Public License as published by the Free
|
||||
Software Foundation; either version 2.1 of the License, or (at
|
||||
your option) any later version. The text of the GNU Lesser
|
||||
General Public License is included with this library in the
|
||||
file GIMPACT-LICENSE-LGPL.TXT.
|
||||
(2) The BSD-style license that is included with this library in
|
||||
the file GIMPACT-LICENSE-BSD.TXT.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files
|
||||
GIMPACT-LICENSE-LGPL.TXT and GIMPACT-LICENSE-BSD.TXT for more details.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
|
||||
#include "GIMPACT/gim_trimesh.h"
|
||||
|
||||
/*! \defgroup GIMPACT_INIT
|
||||
*/
|
||||
//! @{
|
||||
//! Call this to initialize GIMPACT system structures.
|
||||
void gimpact_init();
|
||||
//! Call this to clean GIMPACT system structures.
|
||||
void gimpact_terminate();
|
||||
//! @}
|
||||
#endif // GIMPACT_H_INCLUDED
|
||||
1
thirdparty/ode-0.16.5/GIMPACT/include/Makefile.am
vendored
Normal file
1
thirdparty/ode-0.16.5/GIMPACT/include/Makefile.am
vendored
Normal file
@@ -0,0 +1 @@
|
||||
SUBDIRS = GIMPACT
|
||||
640
thirdparty/ode-0.16.5/GIMPACT/include/Makefile.in
vendored
Normal file
640
thirdparty/ode-0.16.5/GIMPACT/include/Makefile.in
vendored
Normal file
@@ -0,0 +1,640 @@
|
||||
# Makefile.in generated by automake 1.15 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = GIMPACT/include
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
|
||||
$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/ode/src/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
|
||||
ctags-recursive dvi-recursive html-recursive info-recursive \
|
||||
install-data-recursive install-dvi-recursive \
|
||||
install-exec-recursive install-html-recursive \
|
||||
install-info-recursive install-pdf-recursive \
|
||||
install-ps-recursive install-recursive installcheck-recursive \
|
||||
installdirs-recursive pdf-recursive ps-recursive \
|
||||
tags-recursive uninstall-recursive
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||
distclean-recursive maintainer-clean-recursive
|
||||
am__recursive_targets = \
|
||||
$(RECURSIVE_TARGETS) \
|
||||
$(RECURSIVE_CLEAN_TARGETS) \
|
||||
$(am__extra_recursive_targets)
|
||||
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
|
||||
distdir
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
# *not* preserved.
|
||||
am__uniquify_input = $(AWK) '\
|
||||
BEGIN { nonempty = 0; } \
|
||||
{ items[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in items) print i; }; } \
|
||||
'
|
||||
# Make sure the list of sources is unique. This is necessary because,
|
||||
# e.g., the same source file might be shared among _SOURCES variables
|
||||
# for different programs/libraries.
|
||||
am__define_uniq_tagged_files = \
|
||||
list='$(am__tagged_files)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
am__relativize = \
|
||||
dir0=`pwd`; \
|
||||
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
|
||||
sed_rest='s,^[^/]*/*,,'; \
|
||||
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
|
||||
sed_butlast='s,/*[^/]*$$,,'; \
|
||||
while test -n "$$dir1"; do \
|
||||
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
|
||||
if test "$$first" != "."; then \
|
||||
if test "$$first" = ".."; then \
|
||||
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
|
||||
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
|
||||
else \
|
||||
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
|
||||
if test "$$first2" = "$$first"; then \
|
||||
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
|
||||
else \
|
||||
dir2="../$$dir2"; \
|
||||
fi; \
|
||||
dir0="$$dir0"/"$$first"; \
|
||||
fi; \
|
||||
fi; \
|
||||
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
|
||||
done; \
|
||||
reldir="$$dir2"
|
||||
ACLOCAL = @ACLOCAL@
|
||||
ALLOCA = @ALLOCA@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AS = @AS@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CCD_CFLAGS = @CCD_CFLAGS@
|
||||
CCD_LIBS = @CCD_LIBS@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DOXYGEN = @DOXYGEN@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
EXTRA_LIBTOOL_LDFLAGS = @EXTRA_LIBTOOL_LDFLAGS@
|
||||
FGREP = @FGREP@
|
||||
GL_LIBS = @GL_LIBS@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBSTDCXX = @LIBSTDCXX@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
ODE_PRECISION = @ODE_PRECISION@
|
||||
ODE_VERSION = @ODE_VERSION@
|
||||
ODE_VERSION_INFO = @ODE_VERSION_INFO@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
|
||||
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
WINDRES = @WINDRES@
|
||||
X11_CFLAGS = @X11_CFLAGS@
|
||||
X11_LIBS = @X11_LIBS@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
ac_ct_WINDRES = @ac_ct_WINDRES@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
runstatedir = @runstatedir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
subdirs = @subdirs@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
SUBDIRS = GIMPACT
|
||||
all: all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign GIMPACT/include/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign GIMPACT/include/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run 'make' without going through this Makefile.
|
||||
# To change the values of 'make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in 'config.status', edit 'config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run 'make');
|
||||
# (2) otherwise, pass the desired values on the 'make' command line.
|
||||
$(am__recursive_targets):
|
||||
@fail=; \
|
||||
if $(am__make_keepgoing); then \
|
||||
failcom='fail=yes'; \
|
||||
else \
|
||||
failcom='exit 1'; \
|
||||
fi; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
ID: $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
tags: tags-recursive
|
||||
TAGS: tags
|
||||
|
||||
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
include_option=--etags-include; \
|
||||
empty_fix=.; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
empty_fix=; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test ! -f $$subdir/TAGS || \
|
||||
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
$(am__define_uniq_tagged_files); \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
if test $$# -gt 0; then \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
"$$@" $$unique; \
|
||||
else \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: ctags-recursive
|
||||
|
||||
CTAGS: ctags
|
||||
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
cscopelist: cscopelist-recursive
|
||||
|
||||
cscopelist-am: $(am__tagged_files)
|
||||
list='$(am__tagged_files)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
$(am__make_dryrun) \
|
||||
|| test -d "$(distdir)/$$subdir" \
|
||||
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
|
||||
$(am__relativize); \
|
||||
new_distdir=$$reldir; \
|
||||
dir1=$$subdir; dir2="$(top_distdir)"; \
|
||||
$(am__relativize); \
|
||||
new_top_distdir=$$reldir; \
|
||||
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
|
||||
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
|
||||
($(am__cd) $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$$new_top_distdir" \
|
||||
distdir="$$new_distdir" \
|
||||
am__remove_distdir=: \
|
||||
am__skip_length_check=: \
|
||||
am__skip_mode_fix=: \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-recursive
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-recursive
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-recursive
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-recursive
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-recursive
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: $(am__recursive_targets) install-am install-strip
|
||||
|
||||
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
|
||||
check-am clean clean-generic clean-libtool cscopelist-am ctags \
|
||||
ctags-am distclean distclean-generic distclean-libtool \
|
||||
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
installdirs-am maintainer-clean maintainer-clean-generic \
|
||||
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
|
||||
ps ps-am tags tags-am uninstall uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
Reference in New Issue
Block a user