goat3d

changeset 41:da3f335e0069

revamped the visual studio project files
author John Tsiombikas <nuclear@member.fsf.org>
date Sun, 01 Dec 2013 01:31:53 +0200
parents a5c5cec3cb88
children 6c8a6ee24448
files goat3d-static.vcproj goat3d-vs2012.sln goat3d.sln goat3d.vcproj install.bat src/chunk.h src/goat3d.cc src/goat3d.h
diffstat 8 files changed, 1296 insertions(+), 228 deletions(-) [+]
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/goat3d-static.vcproj	Sun Dec 01 01:31:53 2013 +0200
     1.3 @@ -0,0 +1,514 @@
     1.4 +<?xml version="1.0" encoding="Windows-1252"?>
     1.5 +<VisualStudioProject
     1.6 +	ProjectType="Visual C++"
     1.7 +	Version="9.00"
     1.8 +	Name="goat3d-static"
     1.9 +	ProjectGUID="{F4EB866F-D33F-4121-BEC9-CB811A98D057}"
    1.10 +	RootNamespace="goat3d-static"
    1.11 +	Keyword="Win32Proj"
    1.12 +	TargetFrameworkVersion="196613"
    1.13 +	>
    1.14 +	<Platforms>
    1.15 +		<Platform
    1.16 +			Name="Win32"
    1.17 +		/>
    1.18 +	</Platforms>
    1.19 +	<ToolFiles>
    1.20 +	</ToolFiles>
    1.21 +	<Configurations>
    1.22 +		<Configuration
    1.23 +			Name="Debug|Win32"
    1.24 +			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
    1.25 +			IntermediateDirectory="$(ConfigurationName)-static"
    1.26 +			ConfigurationType="4"
    1.27 +			CharacterSet="1"
    1.28 +			>
    1.29 +			<Tool
    1.30 +				Name="VCPreBuildEventTool"
    1.31 +			/>
    1.32 +			<Tool
    1.33 +				Name="VCCustomBuildTool"
    1.34 +			/>
    1.35 +			<Tool
    1.36 +				Name="VCXMLDataGeneratorTool"
    1.37 +			/>
    1.38 +			<Tool
    1.39 +				Name="VCWebServiceProxyGeneratorTool"
    1.40 +			/>
    1.41 +			<Tool
    1.42 +				Name="VCMIDLTool"
    1.43 +			/>
    1.44 +			<Tool
    1.45 +				Name="VCCLCompilerTool"
    1.46 +				Optimization="0"
    1.47 +				AdditionalIncludeDirectories="&quot;$(SolutionDir)\libs\vmath&quot;;&quot;$(SolutionDir)\libs\anim&quot;;&quot;$(SolutionDir)\libs\openctm&quot;;&quot;$(SolutionDir)\libs\tinyxml2&quot;;&quot;$(SolutionDir)\libs\openctm\liblzma&quot;"
    1.48 +				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;GOAT3D_EXPORTS;OPENCTM_STATIC"
    1.49 +				MinimalRebuild="true"
    1.50 +				BasicRuntimeChecks="3"
    1.51 +				RuntimeLibrary="3"
    1.52 +				UsePrecompiledHeader="0"
    1.53 +				WarningLevel="3"
    1.54 +				DebugInformationFormat="4"
    1.55 +				DisableSpecificWarnings="4244;4996;4305"
    1.56 +			/>
    1.57 +			<Tool
    1.58 +				Name="VCManagedResourceCompilerTool"
    1.59 +			/>
    1.60 +			<Tool
    1.61 +				Name="VCResourceCompilerTool"
    1.62 +			/>
    1.63 +			<Tool
    1.64 +				Name="VCPreLinkEventTool"
    1.65 +			/>
    1.66 +			<Tool
    1.67 +				Name="VCLibrarianTool"
    1.68 +			/>
    1.69 +			<Tool
    1.70 +				Name="VCALinkTool"
    1.71 +			/>
    1.72 +			<Tool
    1.73 +				Name="VCXDCMakeTool"
    1.74 +			/>
    1.75 +			<Tool
    1.76 +				Name="VCBscMakeTool"
    1.77 +			/>
    1.78 +			<Tool
    1.79 +				Name="VCFxCopTool"
    1.80 +			/>
    1.81 +			<Tool
    1.82 +				Name="VCPostBuildEventTool"
    1.83 +			/>
    1.84 +		</Configuration>
    1.85 +		<Configuration
    1.86 +			Name="Release|Win32"
    1.87 +			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
    1.88 +			IntermediateDirectory="$(ConfigurationName)-static"
    1.89 +			ConfigurationType="4"
    1.90 +			CharacterSet="1"
    1.91 +			WholeProgramOptimization="1"
    1.92 +			>
    1.93 +			<Tool
    1.94 +				Name="VCPreBuildEventTool"
    1.95 +			/>
    1.96 +			<Tool
    1.97 +				Name="VCCustomBuildTool"
    1.98 +			/>
    1.99 +			<Tool
   1.100 +				Name="VCXMLDataGeneratorTool"
   1.101 +			/>
   1.102 +			<Tool
   1.103 +				Name="VCWebServiceProxyGeneratorTool"
   1.104 +			/>
   1.105 +			<Tool
   1.106 +				Name="VCMIDLTool"
   1.107 +			/>
   1.108 +			<Tool
   1.109 +				Name="VCCLCompilerTool"
   1.110 +				Optimization="2"
   1.111 +				EnableIntrinsicFunctions="true"
   1.112 +				AdditionalIncludeDirectories="&quot;$(SolutionDir)\libs\vmath&quot;;&quot;$(SolutionDir)\libs\anim&quot;;&quot;$(SolutionDir)\libs\openctm&quot;;&quot;$(SolutionDir)\libs\tinyxml2&quot;;&quot;$(SolutionDir)\libs\openctm\liblzma&quot;"
   1.113 +				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;GOAT3D_EXPORTS;OPENCTM_STATIC"
   1.114 +				RuntimeLibrary="2"
   1.115 +				EnableFunctionLevelLinking="true"
   1.116 +				UsePrecompiledHeader="0"
   1.117 +				WarningLevel="3"
   1.118 +				DebugInformationFormat="3"
   1.119 +				DisableSpecificWarnings="4244;4996;4305"
   1.120 +			/>
   1.121 +			<Tool
   1.122 +				Name="VCManagedResourceCompilerTool"
   1.123 +			/>
   1.124 +			<Tool
   1.125 +				Name="VCResourceCompilerTool"
   1.126 +			/>
   1.127 +			<Tool
   1.128 +				Name="VCPreLinkEventTool"
   1.129 +			/>
   1.130 +			<Tool
   1.131 +				Name="VCLibrarianTool"
   1.132 +			/>
   1.133 +			<Tool
   1.134 +				Name="VCALinkTool"
   1.135 +			/>
   1.136 +			<Tool
   1.137 +				Name="VCXDCMakeTool"
   1.138 +			/>
   1.139 +			<Tool
   1.140 +				Name="VCBscMakeTool"
   1.141 +			/>
   1.142 +			<Tool
   1.143 +				Name="VCFxCopTool"
   1.144 +			/>
   1.145 +			<Tool
   1.146 +				Name="VCPostBuildEventTool"
   1.147 +				CommandLine="mkdir usr\include&#x0D;&#x0A;mkdir usr\lib&#x0D;&#x0A;copy /Y src\goat3d.h usr\include\goat3d.h&#x0D;&#x0A;copy /Y $(TargetPath) usr\lib\"
   1.148 +			/>
   1.149 +		</Configuration>
   1.150 +	</Configurations>
   1.151 +	<References>
   1.152 +	</References>
   1.153 +	<Files>
   1.154 +		<Filter
   1.155 +			Name="src"
   1.156 +			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
   1.157 +			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
   1.158 +			>
   1.159 +			<File
   1.160 +				RelativePath=".\src\camera.cc"
   1.161 +				>
   1.162 +			</File>
   1.163 +			<File
   1.164 +				RelativePath=".\src\camera.h"
   1.165 +				>
   1.166 +			</File>
   1.167 +			<File
   1.168 +				RelativePath=".\src\chunk.cc"
   1.169 +				>
   1.170 +			</File>
   1.171 +			<File
   1.172 +				RelativePath=".\src\chunk.h"
   1.173 +				>
   1.174 +			</File>
   1.175 +			<File
   1.176 +				RelativePath=".\src\goat3d.cc"
   1.177 +				>
   1.178 +			</File>
   1.179 +			<File
   1.180 +				RelativePath=".\src\goat3d_impl.h"
   1.181 +				>
   1.182 +			</File>
   1.183 +			<File
   1.184 +				RelativePath=".\src\goat3d_readxml.cc"
   1.185 +				>
   1.186 +			</File>
   1.187 +			<File
   1.188 +				RelativePath=".\src\goat3d_write.cc"
   1.189 +				>
   1.190 +			</File>
   1.191 +			<File
   1.192 +				RelativePath=".\src\goat3d_writexml.cc"
   1.193 +				>
   1.194 +			</File>
   1.195 +			<File
   1.196 +				RelativePath=".\src\light.cc"
   1.197 +				>
   1.198 +			</File>
   1.199 +			<File
   1.200 +				RelativePath=".\src\light.h"
   1.201 +				>
   1.202 +			</File>
   1.203 +			<File
   1.204 +				RelativePath=".\src\log.cc"
   1.205 +				>
   1.206 +			</File>
   1.207 +			<File
   1.208 +				RelativePath=".\src\log.h"
   1.209 +				>
   1.210 +			</File>
   1.211 +			<File
   1.212 +				RelativePath=".\src\material.cc"
   1.213 +				>
   1.214 +			</File>
   1.215 +			<File
   1.216 +				RelativePath=".\src\material.h"
   1.217 +				>
   1.218 +			</File>
   1.219 +			<File
   1.220 +				RelativePath=".\src\mesh.cc"
   1.221 +				>
   1.222 +			</File>
   1.223 +			<File
   1.224 +				RelativePath=".\src\mesh.h"
   1.225 +				>
   1.226 +			</File>
   1.227 +			<File
   1.228 +				RelativePath=".\src\node.cc"
   1.229 +				>
   1.230 +			</File>
   1.231 +			<File
   1.232 +				RelativePath=".\src\node.h"
   1.233 +				>
   1.234 +			</File>
   1.235 +			<File
   1.236 +				RelativePath=".\src\object.h"
   1.237 +				>
   1.238 +			</File>
   1.239 +			<File
   1.240 +				RelativePath=".\src\scene.cc"
   1.241 +				>
   1.242 +			</File>
   1.243 +			<File
   1.244 +				RelativePath=".\src\xform_node.cc"
   1.245 +				>
   1.246 +			</File>
   1.247 +			<File
   1.248 +				RelativePath=".\src\xform_node.h"
   1.249 +				>
   1.250 +			</File>
   1.251 +		</Filter>
   1.252 +		<Filter
   1.253 +			Name="include"
   1.254 +			Filter="h;hpp;hxx;hm;inl;inc;xsd"
   1.255 +			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
   1.256 +			>
   1.257 +			<File
   1.258 +				RelativePath=".\src\goat3d.h"
   1.259 +				>
   1.260 +			</File>
   1.261 +		</Filter>
   1.262 +		<Filter
   1.263 +			Name="libs"
   1.264 +			>
   1.265 +			<Filter
   1.266 +				Name="tinyxml2"
   1.267 +				>
   1.268 +				<File
   1.269 +					RelativePath=".\libs\tinyxml2\tinyxml2.cpp"
   1.270 +					>
   1.271 +				</File>
   1.272 +				<File
   1.273 +					RelativePath=".\libs\tinyxml2\tinyxml2.h"
   1.274 +					>
   1.275 +				</File>
   1.276 +			</Filter>
   1.277 +			<Filter
   1.278 +				Name="openctm"
   1.279 +				>
   1.280 +				<File
   1.281 +					RelativePath=".\libs\openctm\compressMG1.c"
   1.282 +					>
   1.283 +				</File>
   1.284 +				<File
   1.285 +					RelativePath=".\libs\openctm\compressMG2.c"
   1.286 +					>
   1.287 +				</File>
   1.288 +				<File
   1.289 +					RelativePath=".\libs\openctm\compressRAW.c"
   1.290 +					>
   1.291 +				</File>
   1.292 +				<File
   1.293 +					RelativePath=".\libs\openctm\internal.h"
   1.294 +					>
   1.295 +				</File>
   1.296 +				<File
   1.297 +					RelativePath=".\libs\openctm\openctm.c"
   1.298 +					>
   1.299 +				</File>
   1.300 +				<File
   1.301 +					RelativePath=".\libs\openctm\openctm.h"
   1.302 +					>
   1.303 +				</File>
   1.304 +				<File
   1.305 +					RelativePath=".\libs\openctm\openctmpp.h"
   1.306 +					>
   1.307 +				</File>
   1.308 +				<File
   1.309 +					RelativePath=".\libs\openctm\stream.c"
   1.310 +					>
   1.311 +				</File>
   1.312 +				<Filter
   1.313 +					Name="liblzma"
   1.314 +					>
   1.315 +					<File
   1.316 +						RelativePath=".\libs\openctm\liblzma\Alloc.c"
   1.317 +						>
   1.318 +					</File>
   1.319 +					<File
   1.320 +						RelativePath=".\libs\openctm\liblzma\Alloc.h"
   1.321 +						>
   1.322 +					</File>
   1.323 +					<File
   1.324 +						RelativePath=".\libs\openctm\liblzma\LzFind.c"
   1.325 +						>
   1.326 +					</File>
   1.327 +					<File
   1.328 +						RelativePath=".\libs\openctm\liblzma\LzFind.h"
   1.329 +						>
   1.330 +					</File>
   1.331 +					<File
   1.332 +						RelativePath=".\libs\openctm\liblzma\LzHash.h"
   1.333 +						>
   1.334 +					</File>
   1.335 +					<File
   1.336 +						RelativePath=".\libs\openctm\liblzma\LzmaDec.c"
   1.337 +						>
   1.338 +					</File>
   1.339 +					<File
   1.340 +						RelativePath=".\libs\openctm\liblzma\LzmaDec.h"
   1.341 +						>
   1.342 +					</File>
   1.343 +					<File
   1.344 +						RelativePath=".\libs\openctm\liblzma\LzmaEnc.c"
   1.345 +						>
   1.346 +					</File>
   1.347 +					<File
   1.348 +						RelativePath=".\libs\openctm\liblzma\LzmaEnc.h"
   1.349 +						>
   1.350 +					</File>
   1.351 +					<File
   1.352 +						RelativePath=".\libs\openctm\liblzma\LzmaLib.c"
   1.353 +						>
   1.354 +					</File>
   1.355 +					<File
   1.356 +						RelativePath=".\libs\openctm\liblzma\LzmaLib.h"
   1.357 +						>
   1.358 +					</File>
   1.359 +					<File
   1.360 +						RelativePath=".\libs\openctm\liblzma\NameMangle.h"
   1.361 +						>
   1.362 +					</File>
   1.363 +					<File
   1.364 +						RelativePath=".\libs\openctm\liblzma\Types.h"
   1.365 +						>
   1.366 +					</File>
   1.367 +				</Filter>
   1.368 +			</Filter>
   1.369 +			<Filter
   1.370 +				Name="vmath"
   1.371 +				>
   1.372 +				<File
   1.373 +					RelativePath=".\libs\vmath\basis.cc"
   1.374 +					>
   1.375 +				</File>
   1.376 +				<File
   1.377 +					RelativePath=".\libs\vmath\basis.h"
   1.378 +					>
   1.379 +				</File>
   1.380 +				<File
   1.381 +					RelativePath=".\libs\vmath\basis_c.c"
   1.382 +					>
   1.383 +				</File>
   1.384 +				<File
   1.385 +					RelativePath=".\libs\vmath\geom.c"
   1.386 +					>
   1.387 +				</File>
   1.388 +				<File
   1.389 +					RelativePath=".\libs\vmath\geom.h"
   1.390 +					>
   1.391 +				</File>
   1.392 +				<File
   1.393 +					RelativePath=".\libs\vmath\matrix.cc"
   1.394 +					>
   1.395 +				</File>
   1.396 +				<File
   1.397 +					RelativePath=".\libs\vmath\matrix.h"
   1.398 +					>
   1.399 +				</File>
   1.400 +				<File
   1.401 +					RelativePath=".\libs\vmath\matrix.inl"
   1.402 +					>
   1.403 +				</File>
   1.404 +				<File
   1.405 +					RelativePath=".\libs\vmath\matrix_c.c"
   1.406 +					>
   1.407 +				</File>
   1.408 +				<File
   1.409 +					RelativePath=".\libs\vmath\quat.cc"
   1.410 +					>
   1.411 +				</File>
   1.412 +				<File
   1.413 +					RelativePath=".\libs\vmath\quat.h"
   1.414 +					>
   1.415 +				</File>
   1.416 +				<File
   1.417 +					RelativePath=".\libs\vmath\quat.inl"
   1.418 +					>
   1.419 +				</File>
   1.420 +				<File
   1.421 +					RelativePath=".\libs\vmath\quat_c.c"
   1.422 +					>
   1.423 +				</File>
   1.424 +				<File
   1.425 +					RelativePath=".\libs\vmath\ray.cc"
   1.426 +					>
   1.427 +				</File>
   1.428 +				<File
   1.429 +					RelativePath=".\libs\vmath\ray.h"
   1.430 +					>
   1.431 +				</File>
   1.432 +				<File
   1.433 +					RelativePath=".\libs\vmath\ray.inl"
   1.434 +					>
   1.435 +				</File>
   1.436 +				<File
   1.437 +					RelativePath=".\libs\vmath\ray_c.c"
   1.438 +					>
   1.439 +				</File>
   1.440 +				<File
   1.441 +					RelativePath=".\libs\vmath\sphvec.cc"
   1.442 +					>
   1.443 +				</File>
   1.444 +				<File
   1.445 +					RelativePath=".\libs\vmath\sphvec.h"
   1.446 +					>
   1.447 +				</File>
   1.448 +				<File
   1.449 +					RelativePath=".\libs\vmath\vector.cc"
   1.450 +					>
   1.451 +				</File>
   1.452 +				<File
   1.453 +					RelativePath=".\libs\vmath\vector.h"
   1.454 +					>
   1.455 +				</File>
   1.456 +				<File
   1.457 +					RelativePath=".\libs\vmath\vector.inl"
   1.458 +					>
   1.459 +				</File>
   1.460 +				<File
   1.461 +					RelativePath=".\libs\vmath\vmath.c"
   1.462 +					>
   1.463 +				</File>
   1.464 +				<File
   1.465 +					RelativePath=".\libs\vmath\vmath.h"
   1.466 +					>
   1.467 +				</File>
   1.468 +				<File
   1.469 +					RelativePath=".\libs\vmath\vmath.inl"
   1.470 +					>
   1.471 +				</File>
   1.472 +				<File
   1.473 +					RelativePath=".\libs\vmath\vmath_config.h"
   1.474 +					>
   1.475 +				</File>
   1.476 +				<File
   1.477 +					RelativePath=".\libs\vmath\vmath_types.h"
   1.478 +					>
   1.479 +				</File>
   1.480 +			</Filter>
   1.481 +			<Filter
   1.482 +				Name="anim"
   1.483 +				>
   1.484 +				<File
   1.485 +					RelativePath=".\libs\anim\anim.c"
   1.486 +					>
   1.487 +				</File>
   1.488 +				<File
   1.489 +					RelativePath=".\libs\anim\anim.h"
   1.490 +					>
   1.491 +				</File>
   1.492 +				<File
   1.493 +					RelativePath=".\libs\anim\config.h"
   1.494 +					>
   1.495 +				</File>
   1.496 +				<File
   1.497 +					RelativePath=".\libs\anim\dynarr.c"
   1.498 +					>
   1.499 +				</File>
   1.500 +				<File
   1.501 +					RelativePath=".\libs\anim\dynarr.h"
   1.502 +					>
   1.503 +				</File>
   1.504 +				<File
   1.505 +					RelativePath=".\libs\anim\track.c"
   1.506 +					>
   1.507 +				</File>
   1.508 +				<File
   1.509 +					RelativePath=".\libs\anim\track.h"
   1.510 +					>
   1.511 +				</File>
   1.512 +			</Filter>
   1.513 +		</Filter>
   1.514 +	</Files>
   1.515 +	<Globals>
   1.516 +	</Globals>
   1.517 +</VisualStudioProject>
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/goat3d-vs2012.sln	Sun Dec 01 01:31:53 2013 +0200
     2.3 @@ -0,0 +1,39 @@
     2.4 +
     2.5 +Microsoft Visual Studio Solution File, Format Version 12.00
     2.6 +# Visual Studio 2012
     2.7 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "goat3d", "goat3d.vcxproj", "{86BF319B-9222-4805-918D-DC1B9F77BCEF}"
     2.8 +EndProject
     2.9 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "maxgoat", "exporters\maxgoat\maxgoat.vcxproj", "{5BDDFFC1-7900-45D2-92F5-525361057554}"
    2.10 +	ProjectSection(ProjectDependencies) = postProject
    2.11 +		{86BF319B-9222-4805-918D-DC1B9F77BCEF} = {86BF319B-9222-4805-918D-DC1B9F77BCEF}
    2.12 +	EndProjectSection
    2.13 +EndProject
    2.14 +Global
    2.15 +	GlobalSection(SolutionConfigurationPlatforms) = preSolution
    2.16 +		Debug|Win32 = Debug|Win32
    2.17 +		Debug|x64 = Debug|x64
    2.18 +		Release|Win32 = Release|Win32
    2.19 +		Release|x64 = Release|x64
    2.20 +	EndGlobalSection
    2.21 +	GlobalSection(ProjectConfigurationPlatforms) = postSolution
    2.22 +		{86BF319B-9222-4805-918D-DC1B9F77BCEF}.Debug|Win32.ActiveCfg = Debug|Win32
    2.23 +		{86BF319B-9222-4805-918D-DC1B9F77BCEF}.Debug|Win32.Build.0 = Debug|Win32
    2.24 +		{86BF319B-9222-4805-918D-DC1B9F77BCEF}.Debug|x64.ActiveCfg = Debug|x64
    2.25 +		{86BF319B-9222-4805-918D-DC1B9F77BCEF}.Debug|x64.Build.0 = Debug|x64
    2.26 +		{86BF319B-9222-4805-918D-DC1B9F77BCEF}.Release|Win32.ActiveCfg = Release|Win32
    2.27 +		{86BF319B-9222-4805-918D-DC1B9F77BCEF}.Release|Win32.Build.0 = Release|Win32
    2.28 +		{86BF319B-9222-4805-918D-DC1B9F77BCEF}.Release|x64.ActiveCfg = Release|x64
    2.29 +		{86BF319B-9222-4805-918D-DC1B9F77BCEF}.Release|x64.Build.0 = Release|x64
    2.30 +		{5BDDFFC1-7900-45D2-92F5-525361057554}.Debug|Win32.ActiveCfg = Debug|Win32
    2.31 +		{5BDDFFC1-7900-45D2-92F5-525361057554}.Debug|Win32.Build.0 = Debug|Win32
    2.32 +		{5BDDFFC1-7900-45D2-92F5-525361057554}.Debug|x64.ActiveCfg = Debug|x64
    2.33 +		{5BDDFFC1-7900-45D2-92F5-525361057554}.Debug|x64.Build.0 = Debug|x64
    2.34 +		{5BDDFFC1-7900-45D2-92F5-525361057554}.Release|Win32.ActiveCfg = Release|Win32
    2.35 +		{5BDDFFC1-7900-45D2-92F5-525361057554}.Release|Win32.Build.0 = Release|Win32
    2.36 +		{5BDDFFC1-7900-45D2-92F5-525361057554}.Release|x64.ActiveCfg = Release|x64
    2.37 +		{5BDDFFC1-7900-45D2-92F5-525361057554}.Release|x64.Build.0 = Release|x64
    2.38 +	EndGlobalSection
    2.39 +	GlobalSection(SolutionProperties) = preSolution
    2.40 +		HideSolutionNode = FALSE
    2.41 +	EndGlobalSection
    2.42 +EndGlobal
     3.1 --- a/goat3d.sln	Sun Oct 13 10:14:19 2013 +0300
     3.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.3 @@ -1,39 +0,0 @@
     3.4 -
     3.5 -Microsoft Visual Studio Solution File, Format Version 12.00
     3.6 -# Visual Studio 2012
     3.7 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "goat3d", "goat3d.vcxproj", "{86BF319B-9222-4805-918D-DC1B9F77BCEF}"
     3.8 -EndProject
     3.9 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "maxgoat", "exporters\maxgoat\maxgoat.vcxproj", "{5BDDFFC1-7900-45D2-92F5-525361057554}"
    3.10 -	ProjectSection(ProjectDependencies) = postProject
    3.11 -		{86BF319B-9222-4805-918D-DC1B9F77BCEF} = {86BF319B-9222-4805-918D-DC1B9F77BCEF}
    3.12 -	EndProjectSection
    3.13 -EndProject
    3.14 -Global
    3.15 -	GlobalSection(SolutionConfigurationPlatforms) = preSolution
    3.16 -		Debug|Win32 = Debug|Win32
    3.17 -		Debug|x64 = Debug|x64
    3.18 -		Release|Win32 = Release|Win32
    3.19 -		Release|x64 = Release|x64
    3.20 -	EndGlobalSection
    3.21 -	GlobalSection(ProjectConfigurationPlatforms) = postSolution
    3.22 -		{86BF319B-9222-4805-918D-DC1B9F77BCEF}.Debug|Win32.ActiveCfg = Debug|Win32
    3.23 -		{86BF319B-9222-4805-918D-DC1B9F77BCEF}.Debug|Win32.Build.0 = Debug|Win32
    3.24 -		{86BF319B-9222-4805-918D-DC1B9F77BCEF}.Debug|x64.ActiveCfg = Debug|x64
    3.25 -		{86BF319B-9222-4805-918D-DC1B9F77BCEF}.Debug|x64.Build.0 = Debug|x64
    3.26 -		{86BF319B-9222-4805-918D-DC1B9F77BCEF}.Release|Win32.ActiveCfg = Release|Win32
    3.27 -		{86BF319B-9222-4805-918D-DC1B9F77BCEF}.Release|Win32.Build.0 = Release|Win32
    3.28 -		{86BF319B-9222-4805-918D-DC1B9F77BCEF}.Release|x64.ActiveCfg = Release|x64
    3.29 -		{86BF319B-9222-4805-918D-DC1B9F77BCEF}.Release|x64.Build.0 = Release|x64
    3.30 -		{5BDDFFC1-7900-45D2-92F5-525361057554}.Debug|Win32.ActiveCfg = Debug|Win32
    3.31 -		{5BDDFFC1-7900-45D2-92F5-525361057554}.Debug|Win32.Build.0 = Debug|Win32
    3.32 -		{5BDDFFC1-7900-45D2-92F5-525361057554}.Debug|x64.ActiveCfg = Debug|x64
    3.33 -		{5BDDFFC1-7900-45D2-92F5-525361057554}.Debug|x64.Build.0 = Debug|x64
    3.34 -		{5BDDFFC1-7900-45D2-92F5-525361057554}.Release|Win32.ActiveCfg = Release|Win32
    3.35 -		{5BDDFFC1-7900-45D2-92F5-525361057554}.Release|Win32.Build.0 = Release|Win32
    3.36 -		{5BDDFFC1-7900-45D2-92F5-525361057554}.Release|x64.ActiveCfg = Release|x64
    3.37 -		{5BDDFFC1-7900-45D2-92F5-525361057554}.Release|x64.Build.0 = Release|x64
    3.38 -	EndGlobalSection
    3.39 -	GlobalSection(SolutionProperties) = preSolution
    3.40 -		HideSolutionNode = FALSE
    3.41 -	EndGlobalSection
    3.42 -EndGlobal
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/goat3d.vcproj	Sun Dec 01 01:31:53 2013 +0200
     4.3 @@ -0,0 +1,537 @@
     4.4 +<?xml version="1.0" encoding="Windows-1252"?>
     4.5 +<VisualStudioProject
     4.6 +	ProjectType="Visual C++"
     4.7 +	Version="9.00"
     4.8 +	Name="goat3d"
     4.9 +	ProjectGUID="{C1EEE224-5155-4B8D-91B6-138D4B27F1F5}"
    4.10 +	RootNamespace="goat3d"
    4.11 +	Keyword="Win32Proj"
    4.12 +	TargetFrameworkVersion="196613"
    4.13 +	>
    4.14 +	<Platforms>
    4.15 +		<Platform
    4.16 +			Name="Win32"
    4.17 +		/>
    4.18 +	</Platforms>
    4.19 +	<ToolFiles>
    4.20 +	</ToolFiles>
    4.21 +	<Configurations>
    4.22 +		<Configuration
    4.23 +			Name="Debug|Win32"
    4.24 +			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
    4.25 +			IntermediateDirectory="$(ConfigurationName)"
    4.26 +			ConfigurationType="2"
    4.27 +			CharacterSet="1"
    4.28 +			>
    4.29 +			<Tool
    4.30 +				Name="VCPreBuildEventTool"
    4.31 +			/>
    4.32 +			<Tool
    4.33 +				Name="VCCustomBuildTool"
    4.34 +			/>
    4.35 +			<Tool
    4.36 +				Name="VCXMLDataGeneratorTool"
    4.37 +			/>
    4.38 +			<Tool
    4.39 +				Name="VCWebServiceProxyGeneratorTool"
    4.40 +			/>
    4.41 +			<Tool
    4.42 +				Name="VCMIDLTool"
    4.43 +			/>
    4.44 +			<Tool
    4.45 +				Name="VCCLCompilerTool"
    4.46 +				Optimization="0"
    4.47 +				AdditionalIncludeDirectories="&quot;$(SolutionDir)\libs\vmath&quot;;&quot;$(SolutionDir)\libs\anim&quot;;&quot;$(SolutionDir)\libs\openctm&quot;;&quot;$(SolutionDir)\libs\tinyxml2&quot;;&quot;$(SolutionDir)\libs\openctm\liblzma&quot;"
    4.48 +				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;GOAT3D_EXPORTS;OPENCTM_STATIC"
    4.49 +				MinimalRebuild="true"
    4.50 +				BasicRuntimeChecks="3"
    4.51 +				RuntimeLibrary="3"
    4.52 +				UsePrecompiledHeader="0"
    4.53 +				WarningLevel="3"
    4.54 +				DebugInformationFormat="4"
    4.55 +				DisableSpecificWarnings="4244;4996;4305"
    4.56 +			/>
    4.57 +			<Tool
    4.58 +				Name="VCManagedResourceCompilerTool"
    4.59 +			/>
    4.60 +			<Tool
    4.61 +				Name="VCResourceCompilerTool"
    4.62 +			/>
    4.63 +			<Tool
    4.64 +				Name="VCPreLinkEventTool"
    4.65 +			/>
    4.66 +			<Tool
    4.67 +				Name="VCLinkerTool"
    4.68 +				LinkIncremental="2"
    4.69 +				GenerateDebugInformation="true"
    4.70 +				SubSystem="2"
    4.71 +				TargetMachine="1"
    4.72 +			/>
    4.73 +			<Tool
    4.74 +				Name="VCALinkTool"
    4.75 +			/>
    4.76 +			<Tool
    4.77 +				Name="VCManifestTool"
    4.78 +			/>
    4.79 +			<Tool
    4.80 +				Name="VCXDCMakeTool"
    4.81 +			/>
    4.82 +			<Tool
    4.83 +				Name="VCBscMakeTool"
    4.84 +			/>
    4.85 +			<Tool
    4.86 +				Name="VCFxCopTool"
    4.87 +			/>
    4.88 +			<Tool
    4.89 +				Name="VCAppVerifierTool"
    4.90 +			/>
    4.91 +			<Tool
    4.92 +				Name="VCPostBuildEventTool"
    4.93 +				CommandLine=""
    4.94 +			/>
    4.95 +		</Configuration>
    4.96 +		<Configuration
    4.97 +			Name="Release|Win32"
    4.98 +			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
    4.99 +			IntermediateDirectory="$(ConfigurationName)"
   4.100 +			ConfigurationType="2"
   4.101 +			CharacterSet="1"
   4.102 +			WholeProgramOptimization="1"
   4.103 +			>
   4.104 +			<Tool
   4.105 +				Name="VCPreBuildEventTool"
   4.106 +			/>
   4.107 +			<Tool
   4.108 +				Name="VCCustomBuildTool"
   4.109 +			/>
   4.110 +			<Tool
   4.111 +				Name="VCXMLDataGeneratorTool"
   4.112 +			/>
   4.113 +			<Tool
   4.114 +				Name="VCWebServiceProxyGeneratorTool"
   4.115 +			/>
   4.116 +			<Tool
   4.117 +				Name="VCMIDLTool"
   4.118 +			/>
   4.119 +			<Tool
   4.120 +				Name="VCCLCompilerTool"
   4.121 +				Optimization="2"
   4.122 +				EnableIntrinsicFunctions="true"
   4.123 +				AdditionalIncludeDirectories="&quot;$(SolutionDir)\libs\vmath&quot;;&quot;$(SolutionDir)\libs\anim&quot;;&quot;$(SolutionDir)\libs\openctm&quot;;&quot;$(SolutionDir)\libs\tinyxml2&quot;;&quot;$(SolutionDir)\libs\openctm\liblzma&quot;"
   4.124 +				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;GOAT3D_EXPORTS;OPENCTM_STATIC"
   4.125 +				RuntimeLibrary="2"
   4.126 +				EnableFunctionLevelLinking="true"
   4.127 +				UsePrecompiledHeader="0"
   4.128 +				WarningLevel="3"
   4.129 +				DebugInformationFormat="3"
   4.130 +				DisableSpecificWarnings="4244;4996;4305"
   4.131 +			/>
   4.132 +			<Tool
   4.133 +				Name="VCManagedResourceCompilerTool"
   4.134 +			/>
   4.135 +			<Tool
   4.136 +				Name="VCResourceCompilerTool"
   4.137 +			/>
   4.138 +			<Tool
   4.139 +				Name="VCPreLinkEventTool"
   4.140 +			/>
   4.141 +			<Tool
   4.142 +				Name="VCLinkerTool"
   4.143 +				LinkIncremental="1"
   4.144 +				GenerateDebugInformation="true"
   4.145 +				SubSystem="2"
   4.146 +				OptimizeReferences="2"
   4.147 +				EnableCOMDATFolding="2"
   4.148 +				TargetMachine="1"
   4.149 +			/>
   4.150 +			<Tool
   4.151 +				Name="VCALinkTool"
   4.152 +			/>
   4.153 +			<Tool
   4.154 +				Name="VCManifestTool"
   4.155 +			/>
   4.156 +			<Tool
   4.157 +				Name="VCXDCMakeTool"
   4.158 +			/>
   4.159 +			<Tool
   4.160 +				Name="VCBscMakeTool"
   4.161 +			/>
   4.162 +			<Tool
   4.163 +				Name="VCFxCopTool"
   4.164 +			/>
   4.165 +			<Tool
   4.166 +				Name="VCAppVerifierTool"
   4.167 +			/>
   4.168 +			<Tool
   4.169 +				Name="VCPostBuildEventTool"
   4.170 +				CommandLine="mkdir usr\include&#x0D;&#x0A;mkdir usr\lib&#x0D;&#x0A;mkdir usr\bin&#x0D;&#x0A;copy /Y src\goat3d.h usr\include\goat3d.h&#x0D;&#x0A;copy /Y $(TargetDir)$(TargetName).lib usr\lib\&#x0D;&#x0A;copy /Y $(TargetDir)$(TargetName).dll usr\bin\"
   4.171 +			/>
   4.172 +		</Configuration>
   4.173 +	</Configurations>
   4.174 +	<References>
   4.175 +	</References>
   4.176 +	<Files>
   4.177 +		<Filter
   4.178 +			Name="src"
   4.179 +			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
   4.180 +			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
   4.181 +			>
   4.182 +			<File
   4.183 +				RelativePath=".\src\camera.cc"
   4.184 +				>
   4.185 +			</File>
   4.186 +			<File
   4.187 +				RelativePath=".\src\camera.h"
   4.188 +				>
   4.189 +			</File>
   4.190 +			<File
   4.191 +				RelativePath=".\src\chunk.cc"
   4.192 +				>
   4.193 +			</File>
   4.194 +			<File
   4.195 +				RelativePath=".\src\chunk.h"
   4.196 +				>
   4.197 +			</File>
   4.198 +			<File
   4.199 +				RelativePath=".\src\goat3d.cc"
   4.200 +				>
   4.201 +			</File>
   4.202 +			<File
   4.203 +				RelativePath=".\src\goat3d_impl.h"
   4.204 +				>
   4.205 +			</File>
   4.206 +			<File
   4.207 +				RelativePath=".\src\goat3d_readxml.cc"
   4.208 +				>
   4.209 +			</File>
   4.210 +			<File
   4.211 +				RelativePath=".\src\goat3d_write.cc"
   4.212 +				>
   4.213 +			</File>
   4.214 +			<File
   4.215 +				RelativePath=".\src\goat3d_writexml.cc"
   4.216 +				>
   4.217 +			</File>
   4.218 +			<File
   4.219 +				RelativePath=".\src\light.cc"
   4.220 +				>
   4.221 +			</File>
   4.222 +			<File
   4.223 +				RelativePath=".\src\light.h"
   4.224 +				>
   4.225 +			</File>
   4.226 +			<File
   4.227 +				RelativePath=".\src\log.cc"
   4.228 +				>
   4.229 +			</File>
   4.230 +			<File
   4.231 +				RelativePath=".\src\log.h"
   4.232 +				>
   4.233 +			</File>
   4.234 +			<File
   4.235 +				RelativePath=".\src\material.cc"
   4.236 +				>
   4.237 +			</File>
   4.238 +			<File
   4.239 +				RelativePath=".\src\material.h"
   4.240 +				>
   4.241 +			</File>
   4.242 +			<File
   4.243 +				RelativePath=".\src\mesh.cc"
   4.244 +				>
   4.245 +			</File>
   4.246 +			<File
   4.247 +				RelativePath=".\src\mesh.h"
   4.248 +				>
   4.249 +			</File>
   4.250 +			<File
   4.251 +				RelativePath=".\src\node.cc"
   4.252 +				>
   4.253 +			</File>
   4.254 +			<File
   4.255 +				RelativePath=".\src\node.h"
   4.256 +				>
   4.257 +			</File>
   4.258 +			<File
   4.259 +				RelativePath=".\src\object.h"
   4.260 +				>
   4.261 +			</File>
   4.262 +			<File
   4.263 +				RelativePath=".\src\scene.cc"
   4.264 +				>
   4.265 +			</File>
   4.266 +			<File
   4.267 +				RelativePath=".\src\xform_node.cc"
   4.268 +				>
   4.269 +			</File>
   4.270 +			<File
   4.271 +				RelativePath=".\src\xform_node.h"
   4.272 +				>
   4.273 +			</File>
   4.274 +		</Filter>
   4.275 +		<Filter
   4.276 +			Name="include"
   4.277 +			Filter="h;hpp;hxx;hm;inl;inc;xsd"
   4.278 +			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
   4.279 +			>
   4.280 +			<File
   4.281 +				RelativePath=".\src\goat3d.h"
   4.282 +				>
   4.283 +			</File>
   4.284 +		</Filter>
   4.285 +		<Filter
   4.286 +			Name="libs"
   4.287 +			>
   4.288 +			<Filter
   4.289 +				Name="tinyxml2"
   4.290 +				>
   4.291 +				<File
   4.292 +					RelativePath=".\libs\tinyxml2\tinyxml2.cpp"
   4.293 +					>
   4.294 +				</File>
   4.295 +				<File
   4.296 +					RelativePath=".\libs\tinyxml2\tinyxml2.h"
   4.297 +					>
   4.298 +				</File>
   4.299 +			</Filter>
   4.300 +			<Filter
   4.301 +				Name="openctm"
   4.302 +				>
   4.303 +				<File
   4.304 +					RelativePath=".\libs\openctm\compressMG1.c"
   4.305 +					>
   4.306 +				</File>
   4.307 +				<File
   4.308 +					RelativePath=".\libs\openctm\compressMG2.c"
   4.309 +					>
   4.310 +				</File>
   4.311 +				<File
   4.312 +					RelativePath=".\libs\openctm\compressRAW.c"
   4.313 +					>
   4.314 +				</File>
   4.315 +				<File
   4.316 +					RelativePath=".\libs\openctm\internal.h"
   4.317 +					>
   4.318 +				</File>
   4.319 +				<File
   4.320 +					RelativePath=".\libs\openctm\openctm.c"
   4.321 +					>
   4.322 +				</File>
   4.323 +				<File
   4.324 +					RelativePath=".\libs\openctm\openctm.h"
   4.325 +					>
   4.326 +				</File>
   4.327 +				<File
   4.328 +					RelativePath=".\libs\openctm\openctmpp.h"
   4.329 +					>
   4.330 +				</File>
   4.331 +				<File
   4.332 +					RelativePath=".\libs\openctm\stream.c"
   4.333 +					>
   4.334 +				</File>
   4.335 +				<Filter
   4.336 +					Name="liblzma"
   4.337 +					>
   4.338 +					<File
   4.339 +						RelativePath=".\libs\openctm\liblzma\Alloc.c"
   4.340 +						>
   4.341 +					</File>
   4.342 +					<File
   4.343 +						RelativePath=".\libs\openctm\liblzma\Alloc.h"
   4.344 +						>
   4.345 +					</File>
   4.346 +					<File
   4.347 +						RelativePath=".\libs\openctm\liblzma\LzFind.c"
   4.348 +						>
   4.349 +					</File>
   4.350 +					<File
   4.351 +						RelativePath=".\libs\openctm\liblzma\LzFind.h"
   4.352 +						>
   4.353 +					</File>
   4.354 +					<File
   4.355 +						RelativePath=".\libs\openctm\liblzma\LzHash.h"
   4.356 +						>
   4.357 +					</File>
   4.358 +					<File
   4.359 +						RelativePath=".\libs\openctm\liblzma\LzmaDec.c"
   4.360 +						>
   4.361 +					</File>
   4.362 +					<File
   4.363 +						RelativePath=".\libs\openctm\liblzma\LzmaDec.h"
   4.364 +						>
   4.365 +					</File>
   4.366 +					<File
   4.367 +						RelativePath=".\libs\openctm\liblzma\LzmaEnc.c"
   4.368 +						>
   4.369 +					</File>
   4.370 +					<File
   4.371 +						RelativePath=".\libs\openctm\liblzma\LzmaEnc.h"
   4.372 +						>
   4.373 +					</File>
   4.374 +					<File
   4.375 +						RelativePath=".\libs\openctm\liblzma\LzmaLib.c"
   4.376 +						>
   4.377 +					</File>
   4.378 +					<File
   4.379 +						RelativePath=".\libs\openctm\liblzma\LzmaLib.h"
   4.380 +						>
   4.381 +					</File>
   4.382 +					<File
   4.383 +						RelativePath=".\libs\openctm\liblzma\NameMangle.h"
   4.384 +						>
   4.385 +					</File>
   4.386 +					<File
   4.387 +						RelativePath=".\libs\openctm\liblzma\Types.h"
   4.388 +						>
   4.389 +					</File>
   4.390 +				</Filter>
   4.391 +			</Filter>
   4.392 +			<Filter
   4.393 +				Name="vmath"
   4.394 +				>
   4.395 +				<File
   4.396 +					RelativePath=".\libs\vmath\basis.cc"
   4.397 +					>
   4.398 +				</File>
   4.399 +				<File
   4.400 +					RelativePath=".\libs\vmath\basis.h"
   4.401 +					>
   4.402 +				</File>
   4.403 +				<File
   4.404 +					RelativePath=".\libs\vmath\basis_c.c"
   4.405 +					>
   4.406 +				</File>
   4.407 +				<File
   4.408 +					RelativePath=".\libs\vmath\geom.c"
   4.409 +					>
   4.410 +				</File>
   4.411 +				<File
   4.412 +					RelativePath=".\libs\vmath\geom.h"
   4.413 +					>
   4.414 +				</File>
   4.415 +				<File
   4.416 +					RelativePath=".\libs\vmath\matrix.cc"
   4.417 +					>
   4.418 +				</File>
   4.419 +				<File
   4.420 +					RelativePath=".\libs\vmath\matrix.h"
   4.421 +					>
   4.422 +				</File>
   4.423 +				<File
   4.424 +					RelativePath=".\libs\vmath\matrix.inl"
   4.425 +					>
   4.426 +				</File>
   4.427 +				<File
   4.428 +					RelativePath=".\libs\vmath\matrix_c.c"
   4.429 +					>
   4.430 +				</File>
   4.431 +				<File
   4.432 +					RelativePath=".\libs\vmath\quat.cc"
   4.433 +					>
   4.434 +				</File>
   4.435 +				<File
   4.436 +					RelativePath=".\libs\vmath\quat.h"
   4.437 +					>
   4.438 +				</File>
   4.439 +				<File
   4.440 +					RelativePath=".\libs\vmath\quat.inl"
   4.441 +					>
   4.442 +				</File>
   4.443 +				<File
   4.444 +					RelativePath=".\libs\vmath\quat_c.c"
   4.445 +					>
   4.446 +				</File>
   4.447 +				<File
   4.448 +					RelativePath=".\libs\vmath\ray.cc"
   4.449 +					>
   4.450 +				</File>
   4.451 +				<File
   4.452 +					RelativePath=".\libs\vmath\ray.h"
   4.453 +					>
   4.454 +				</File>
   4.455 +				<File
   4.456 +					RelativePath=".\libs\vmath\ray.inl"
   4.457 +					>
   4.458 +				</File>
   4.459 +				<File
   4.460 +					RelativePath=".\libs\vmath\ray_c.c"
   4.461 +					>
   4.462 +				</File>
   4.463 +				<File
   4.464 +					RelativePath=".\libs\vmath\sphvec.cc"
   4.465 +					>
   4.466 +				</File>
   4.467 +				<File
   4.468 +					RelativePath=".\libs\vmath\sphvec.h"
   4.469 +					>
   4.470 +				</File>
   4.471 +				<File
   4.472 +					RelativePath=".\libs\vmath\vector.cc"
   4.473 +					>
   4.474 +				</File>
   4.475 +				<File
   4.476 +					RelativePath=".\libs\vmath\vector.h"
   4.477 +					>
   4.478 +				</File>
   4.479 +				<File
   4.480 +					RelativePath=".\libs\vmath\vector.inl"
   4.481 +					>
   4.482 +				</File>
   4.483 +				<File
   4.484 +					RelativePath=".\libs\vmath\vmath.c"
   4.485 +					>
   4.486 +				</File>
   4.487 +				<File
   4.488 +					RelativePath=".\libs\vmath\vmath.h"
   4.489 +					>
   4.490 +				</File>
   4.491 +				<File
   4.492 +					RelativePath=".\libs\vmath\vmath.inl"
   4.493 +					>
   4.494 +				</File>
   4.495 +				<File
   4.496 +					RelativePath=".\libs\vmath\vmath_config.h"
   4.497 +					>
   4.498 +				</File>
   4.499 +				<File
   4.500 +					RelativePath=".\libs\vmath\vmath_types.h"
   4.501 +					>
   4.502 +				</File>
   4.503 +			</Filter>
   4.504 +			<Filter
   4.505 +				Name="anim"
   4.506 +				>
   4.507 +				<File
   4.508 +					RelativePath=".\libs\anim\anim.c"
   4.509 +					>
   4.510 +				</File>
   4.511 +				<File
   4.512 +					RelativePath=".\libs\anim\anim.h"
   4.513 +					>
   4.514 +				</File>
   4.515 +				<File
   4.516 +					RelativePath=".\libs\anim\config.h"
   4.517 +					>
   4.518 +				</File>
   4.519 +				<File
   4.520 +					RelativePath=".\libs\anim\dynarr.c"
   4.521 +					>
   4.522 +				</File>
   4.523 +				<File
   4.524 +					RelativePath=".\libs\anim\dynarr.h"
   4.525 +					>
   4.526 +				</File>
   4.527 +				<File
   4.528 +					RelativePath=".\libs\anim\track.c"
   4.529 +					>
   4.530 +				</File>
   4.531 +				<File
   4.532 +					RelativePath=".\libs\anim\track.h"
   4.533 +					>
   4.534 +				</File>
   4.535 +			</Filter>
   4.536 +		</Filter>
   4.537 +	</Files>
   4.538 +	<Globals>
   4.539 +	</Globals>
   4.540 +</VisualStudioProject>
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/install.bat	Sun Dec 01 01:31:53 2013 +0200
     5.3 @@ -0,0 +1,7 @@
     5.4 +mkdir c:\usr\include\
     5.5 +copy /Y usr\include\* c:\usr\include\
     5.6 +mkdir c:\usr\lib
     5.7 +copy /Y usr\lib\* c:\usr\lib\
     5.8 +mkdir c:\usr\bin
     5.9 +copy /Y usr\bin\* c:\usr\bin\
    5.10 +pause
     6.1 --- a/src/chunk.h	Sun Oct 13 10:14:19 2013 +0300
     6.2 +++ b/src/chunk.h	Sun Dec 01 01:31:53 2013 +0200
     6.3 @@ -1,7 +1,11 @@
     6.4  #ifndef CHUNK_H_
     6.5  #define CHUNK_H_
     6.6  
     6.7 +#ifndef _MSC_VER
     6.8  #include <stdint.h>
     6.9 +#else
    6.10 +typedef unsigned __int32 uint32_t;
    6.11 +#endif
    6.12  
    6.13  enum {
    6.14  	CNK_INVALID,		// this shouldn't appear in files
     7.1 --- a/src/goat3d.cc	Sun Oct 13 10:14:19 2013 +0300
     7.2 +++ b/src/goat3d.cc	Sun Dec 01 01:31:53 2013 +0200
     7.3 @@ -31,7 +31,7 @@
     7.4  
     7.5  extern "C" {
     7.6  
     7.7 -struct goat3d *goat3d_create(void)
     7.8 +GOAT3DAPI struct goat3d *goat3d_create(void)
     7.9  {
    7.10  	goat3d *goat = new goat3d;
    7.11  	goat->flags = 0;
    7.12 @@ -42,14 +42,14 @@
    7.13  	return goat;
    7.14  }
    7.15  
    7.16 -void goat3d_free(struct goat3d *g)
    7.17 +GOAT3DAPI void goat3d_free(struct goat3d *g)
    7.18  {
    7.19  	delete g->search_path;
    7.20  	delete g->scn;
    7.21  	delete g;
    7.22  }
    7.23  
    7.24 -void goat3d_setopt(struct goat3d *g, enum goat3d_option opt, int val)
    7.25 +GOAT3DAPI void goat3d_setopt(struct goat3d *g, enum goat3d_option opt, int val)
    7.26  {
    7.27  	if(val) {
    7.28  		g->flags |= (1 << (int)opt);
    7.29 @@ -58,12 +58,12 @@
    7.30  	}
    7.31  }
    7.32  
    7.33 -int goat3d_getopt(const struct goat3d *g, enum goat3d_option opt)
    7.34 +GOAT3DAPI int goat3d_getopt(const struct goat3d *g, enum goat3d_option opt)
    7.35  {
    7.36  	return (g->flags >> (int)opt) & 1;
    7.37  }
    7.38  
    7.39 -int goat3d_load(struct goat3d *g, const char *fname)
    7.40 +GOAT3DAPI int goat3d_load(struct goat3d *g, const char *fname)
    7.41  {
    7.42  	FILE *fp = fopen(fname, "rb");
    7.43  	if(!fp) {
    7.44 @@ -94,7 +94,7 @@
    7.45  	return res;
    7.46  }
    7.47  
    7.48 -int goat3d_save(const struct goat3d *g, const char *fname)
    7.49 +GOAT3DAPI int goat3d_save(const struct goat3d *g, const char *fname)
    7.50  {
    7.51  	FILE *fp = fopen(fname, "wb");
    7.52  	if(!fp) {
    7.53 @@ -107,7 +107,7 @@
    7.54  	return res;
    7.55  }
    7.56  
    7.57 -int goat3d_load_file(struct goat3d *g, FILE *fp)
    7.58 +GOAT3DAPI int goat3d_load_file(struct goat3d *g, FILE *fp)
    7.59  {
    7.60  	goat3d_io io;
    7.61  	io.cls = fp;
    7.62 @@ -118,7 +118,7 @@
    7.63  	return goat3d_load_io(g, &io);
    7.64  }
    7.65  
    7.66 -int goat3d_save_file(const struct goat3d *g, FILE *fp)
    7.67 +GOAT3DAPI int goat3d_save_file(const struct goat3d *g, FILE *fp)
    7.68  {
    7.69  	goat3d_io io;
    7.70  	io.cls = fp;
    7.71 @@ -129,7 +129,7 @@
    7.72  	return goat3d_save_io(g, &io);
    7.73  }
    7.74  
    7.75 -int goat3d_load_io(struct goat3d *g, struct goat3d_io *io)
    7.76 +GOAT3DAPI int goat3d_load_io(struct goat3d *g, struct goat3d_io *io)
    7.77  {
    7.78  	if(!g->scn->load(io)) {
    7.79  		if(g->scn->loadxml(io)) {
    7.80 @@ -139,7 +139,7 @@
    7.81  	return 0;
    7.82  }
    7.83  
    7.84 -int goat3d_save_io(const struct goat3d *g, struct goat3d_io *io)
    7.85 +GOAT3DAPI int goat3d_save_io(const struct goat3d *g, struct goat3d_io *io)
    7.86  {
    7.87  	if(goat3d_getopt(g, GOAT3D_OPT_SAVEXML)) {
    7.88  		return g->scn->savexml(io) ? 0 : -1;
    7.89 @@ -147,156 +147,156 @@
    7.90  	return g->scn->save(io) ? 0 : -1;
    7.91  }
    7.92  
    7.93 -int goat3d_set_name(struct goat3d *g, const char *name)
    7.94 +GOAT3DAPI int goat3d_set_name(struct goat3d *g, const char *name)
    7.95  {
    7.96  	g->scn->set_name(name);
    7.97  	return 0;
    7.98  }
    7.99  
   7.100 -const char *goat3d_get_name(const struct goat3d *g)
   7.101 +GOAT3DAPI const char *goat3d_get_name(const struct goat3d *g)
   7.102  {
   7.103  	return g->scn->get_name();
   7.104  }
   7.105  
   7.106 -void goat3d_set_ambient(struct goat3d *g, const float *amb)
   7.107 +GOAT3DAPI void goat3d_set_ambient(struct goat3d *g, const float *amb)
   7.108  {
   7.109  	g->scn->set_ambient(Vector3(amb[0], amb[1], amb[2]));
   7.110  }
   7.111  
   7.112 -void goat3d_set_ambient3f(struct goat3d *g, float ar, float ag, float ab)
   7.113 +GOAT3DAPI void goat3d_set_ambient3f(struct goat3d *g, float ar, float ag, float ab)
   7.114  {
   7.115  	g->scn->set_ambient(Vector3(ar, ag, ab));
   7.116  }
   7.117  
   7.118 -const float *goat3d_get_ambient(const struct goat3d *g)
   7.119 +GOAT3DAPI const float *goat3d_get_ambient(const struct goat3d *g)
   7.120  {
   7.121  	return &g->scn->get_ambient().x;
   7.122  }
   7.123  
   7.124  // ---- materials ----
   7.125 -void goat3d_add_mtl(struct goat3d *g, struct goat3d_material *mtl)
   7.126 +GOAT3DAPI void goat3d_add_mtl(struct goat3d *g, struct goat3d_material *mtl)
   7.127  {
   7.128  	g->scn->add_material(mtl);
   7.129  }
   7.130  
   7.131 -struct goat3d_material *goat3d_create_mtl(void)
   7.132 +GOAT3DAPI struct goat3d_material *goat3d_create_mtl(void)
   7.133  {
   7.134  	return new goat3d_material;
   7.135  }
   7.136  
   7.137 -void goat3d_destroy_mtl(struct goat3d_material *mtl)
   7.138 +GOAT3DAPI void goat3d_destroy_mtl(struct goat3d_material *mtl)
   7.139  {
   7.140  	delete mtl;
   7.141  }
   7.142  
   7.143 -void goat3d_set_mtl_name(struct goat3d_material *mtl, const char *name)
   7.144 +GOAT3DAPI void goat3d_set_mtl_name(struct goat3d_material *mtl, const char *name)
   7.145  {
   7.146  	mtl->name = std::string(name);
   7.147  }
   7.148  
   7.149 -const char *goat3d_get_mtl_name(const struct goat3d_material *mtl)
   7.150 +GOAT3DAPI const char *goat3d_get_mtl_name(const struct goat3d_material *mtl)
   7.151  {
   7.152  	return mtl->name.c_str();
   7.153  }
   7.154  
   7.155 -void goat3d_set_mtl_attrib(struct goat3d_material *mtl, const char *attrib, const float *val)
   7.156 +GOAT3DAPI void goat3d_set_mtl_attrib(struct goat3d_material *mtl, const char *attrib, const float *val)
   7.157  {
   7.158  	(*mtl)[attrib].value = Vector4(val[0], val[1], val[2], val[3]);
   7.159  }
   7.160  
   7.161 -void goat3d_set_mtl_attrib1f(struct goat3d_material *mtl, const char *attrib, float val)
   7.162 +GOAT3DAPI void goat3d_set_mtl_attrib1f(struct goat3d_material *mtl, const char *attrib, float val)
   7.163  {
   7.164  	goat3d_set_mtl_attrib4f(mtl, attrib, val, 0, 0, 1);
   7.165  }
   7.166  
   7.167 -void goat3d_set_mtl_attrib3f(struct goat3d_material *mtl, const char *attrib, float r, float g, float b)
   7.168 +GOAT3DAPI void goat3d_set_mtl_attrib3f(struct goat3d_material *mtl, const char *attrib, float r, float g, float b)
   7.169  {
   7.170  	goat3d_set_mtl_attrib4f(mtl, attrib, r, g, b, 1);
   7.171  }
   7.172  
   7.173 -void goat3d_set_mtl_attrib4f(struct goat3d_material *mtl, const char *attrib, float r, float g, float b, float a)
   7.174 +GOAT3DAPI void goat3d_set_mtl_attrib4f(struct goat3d_material *mtl, const char *attrib, float r, float g, float b, float a)
   7.175  {
   7.176  	(*mtl)[attrib].value = Vector4(r, g, b, a);
   7.177  }
   7.178  
   7.179 -const float *goat3d_get_mtl_attrib(struct goat3d_material *mtl, const char *attrib)
   7.180 +GOAT3DAPI const float *goat3d_get_mtl_attrib(struct goat3d_material *mtl, const char *attrib)
   7.181  {
   7.182  	return &(*mtl)[attrib].value.x;
   7.183  }
   7.184  
   7.185 -void goat3d_set_mtl_attrib_map(struct goat3d_material *mtl, const char *attrib, const char *mapname)
   7.186 +GOAT3DAPI void goat3d_set_mtl_attrib_map(struct goat3d_material *mtl, const char *attrib, const char *mapname)
   7.187  {
   7.188  	(*mtl)[attrib].map = goat3d_clean_filename(mapname);
   7.189  }
   7.190  
   7.191 -const char *goat3d_get_mtl_attrib_map(struct goat3d_material *mtl, const char *attrib)
   7.192 +GOAT3DAPI const char *goat3d_get_mtl_attrib_map(struct goat3d_material *mtl, const char *attrib)
   7.193  {
   7.194  	return (*mtl)[attrib].map.c_str();
   7.195  }
   7.196  
   7.197  // ---- meshes ----
   7.198 -void goat3d_add_mesh(struct goat3d *g, struct goat3d_mesh *mesh)
   7.199 +GOAT3DAPI void goat3d_add_mesh(struct goat3d *g, struct goat3d_mesh *mesh)
   7.200  {
   7.201  	g->scn->add_mesh(mesh);
   7.202  }
   7.203  
   7.204 -int goat3d_get_mesh_count(struct goat3d *g)
   7.205 +GOAT3DAPI int goat3d_get_mesh_count(struct goat3d *g)
   7.206  {
   7.207  	return g->scn->get_mesh_count();
   7.208  }
   7.209  
   7.210 -struct goat3d_mesh *goat3d_get_mesh(struct goat3d *g, int idx)
   7.211 +GOAT3DAPI struct goat3d_mesh *goat3d_get_mesh(struct goat3d *g, int idx)
   7.212  {
   7.213  	return (goat3d_mesh*)g->scn->get_mesh(idx);
   7.214  }
   7.215  
   7.216 -struct goat3d_mesh *goat3d_get_mesh_by_name(struct goat3d *g, const char *name)
   7.217 +GOAT3DAPI struct goat3d_mesh *goat3d_get_mesh_by_name(struct goat3d *g, const char *name)
   7.218  {
   7.219  	return (goat3d_mesh*)g->scn->get_mesh(name);
   7.220  }
   7.221  
   7.222 -struct goat3d_mesh *goat3d_create_mesh(void)
   7.223 +GOAT3DAPI struct goat3d_mesh *goat3d_create_mesh(void)
   7.224  {
   7.225  	return new goat3d_mesh;
   7.226  }
   7.227  
   7.228 -void goat3d_destroy_mesh(struct goat3d_mesh *mesh)
   7.229 +GOAT3DAPI void goat3d_destroy_mesh(struct goat3d_mesh *mesh)
   7.230  {
   7.231  	delete mesh;
   7.232  }
   7.233  
   7.234 -void goat3d_set_mesh_name(struct goat3d_mesh *mesh, const char *name)
   7.235 +GOAT3DAPI void goat3d_set_mesh_name(struct goat3d_mesh *mesh, const char *name)
   7.236  {
   7.237  	mesh->name = std::string(name);
   7.238  }
   7.239  
   7.240 -const char *goat3d_get_mesh_name(const struct goat3d_mesh *mesh)
   7.241 +GOAT3DAPI const char *goat3d_get_mesh_name(const struct goat3d_mesh *mesh)
   7.242  {
   7.243  	return mesh->name.c_str();
   7.244  }
   7.245  
   7.246 -void goat3d_set_mesh_mtl(struct goat3d_mesh *mesh, struct goat3d_material *mtl)
   7.247 +GOAT3DAPI void goat3d_set_mesh_mtl(struct goat3d_mesh *mesh, struct goat3d_material *mtl)
   7.248  {
   7.249  	mesh->material = mtl;
   7.250  }
   7.251  
   7.252 -struct goat3d_material *goat3d_get_mesh_mtl(struct goat3d_mesh *mesh)
   7.253 +GOAT3DAPI struct goat3d_material *goat3d_get_mesh_mtl(struct goat3d_mesh *mesh)
   7.254  {
   7.255  	return (goat3d_material*)mesh->material;
   7.256  }
   7.257  
   7.258 -int goat3d_get_mesh_attrib_count(struct goat3d_mesh *mesh, enum goat3d_mesh_attrib attrib)
   7.259 +GOAT3DAPI int goat3d_get_mesh_attrib_count(struct goat3d_mesh *mesh, enum goat3d_mesh_attrib attrib)
   7.260  {
   7.261  	return (int)mesh->vertices.size();
   7.262  }
   7.263  
   7.264 -int goat3d_get_mesh_face_count(struct goat3d_mesh *mesh)
   7.265 +GOAT3DAPI int goat3d_get_mesh_face_count(struct goat3d_mesh *mesh)
   7.266  {
   7.267  	return (int)mesh->faces.size();
   7.268  }
   7.269  
   7.270  // VECDATA is in goat3d_impl.h
   7.271 -void goat3d_set_mesh_attribs(struct goat3d_mesh *mesh, enum goat3d_mesh_attrib attrib, const void *data, int vnum)
   7.272 +GOAT3DAPI void goat3d_set_mesh_attribs(struct goat3d_mesh *mesh, enum goat3d_mesh_attrib attrib, const void *data, int vnum)
   7.273  {
   7.274  	if(attrib == GOAT3D_MESH_ATTR_VERTEX) {
   7.275  		mesh->vertices = VECDATA(Vector3, data, vnum);
   7.276 @@ -331,19 +331,19 @@
   7.277  	}
   7.278  }
   7.279  
   7.280 -void goat3d_add_mesh_attrib1f(struct goat3d_mesh *mesh, enum goat3d_mesh_attrib attrib,
   7.281 +GOAT3DAPI void goat3d_add_mesh_attrib1f(struct goat3d_mesh *mesh, enum goat3d_mesh_attrib attrib,
   7.282  		float val)
   7.283  {
   7.284  	goat3d_add_mesh_attrib4f(mesh, attrib, val, 0, 0, 1);
   7.285  }
   7.286  
   7.287 -void goat3d_add_mesh_attrib3f(struct goat3d_mesh *mesh, enum goat3d_mesh_attrib attrib,
   7.288 +GOAT3DAPI void goat3d_add_mesh_attrib3f(struct goat3d_mesh *mesh, enum goat3d_mesh_attrib attrib,
   7.289  		float x, float y, float z)
   7.290  {
   7.291  	goat3d_add_mesh_attrib4f(mesh, attrib, x, y, z, 1);
   7.292  }
   7.293  
   7.294 -void goat3d_add_mesh_attrib4f(struct goat3d_mesh *mesh, enum goat3d_mesh_attrib attrib,
   7.295 +GOAT3DAPI void goat3d_add_mesh_attrib4f(struct goat3d_mesh *mesh, enum goat3d_mesh_attrib attrib,
   7.296  		float x, float y, float z, float w)
   7.297  {
   7.298  	switch(attrib) {
   7.299 @@ -372,12 +372,12 @@
   7.300  	}
   7.301  }
   7.302  
   7.303 -void *goat3d_get_mesh_attribs(struct goat3d_mesh *mesh, enum goat3d_mesh_attrib attrib)
   7.304 +GOAT3DAPI void *goat3d_get_mesh_attribs(struct goat3d_mesh *mesh, enum goat3d_mesh_attrib attrib)
   7.305  {
   7.306  	return goat3d_get_mesh_attrib(mesh, attrib, 0);
   7.307  }
   7.308  
   7.309 -void *goat3d_get_mesh_attrib(struct goat3d_mesh *mesh, enum goat3d_mesh_attrib attrib, int idx)
   7.310 +GOAT3DAPI void *goat3d_get_mesh_attrib(struct goat3d_mesh *mesh, enum goat3d_mesh_attrib attrib, int idx)
   7.311  {
   7.312  	switch(attrib) {
   7.313  	case GOAT3D_MESH_ATTR_VERTEX:
   7.314 @@ -401,12 +401,12 @@
   7.315  }
   7.316  
   7.317  
   7.318 -void goat3d_set_mesh_faces(struct goat3d_mesh *mesh, const int *data, int num)
   7.319 +GOAT3DAPI void goat3d_set_mesh_faces(struct goat3d_mesh *mesh, const int *data, int num)
   7.320  {
   7.321  	mesh->faces = VECDATA(Face, data, num);
   7.322  }
   7.323  
   7.324 -void goat3d_add_mesh_face(struct goat3d_mesh *mesh, int a, int b, int c)
   7.325 +GOAT3DAPI void goat3d_add_mesh_face(struct goat3d_mesh *mesh, int a, int b, int c)
   7.326  {
   7.327  	Face face;
   7.328  	face.v[0] = a;
   7.329 @@ -415,12 +415,12 @@
   7.330  	mesh->faces.push_back(face);
   7.331  }
   7.332  
   7.333 -int *goat3d_get_mesh_faces(struct goat3d_mesh *mesh)
   7.334 +GOAT3DAPI int *goat3d_get_mesh_faces(struct goat3d_mesh *mesh)
   7.335  {
   7.336  	return goat3d_get_mesh_face(mesh, 0);
   7.337  }
   7.338  
   7.339 -int *goat3d_get_mesh_face(struct goat3d_mesh *mesh, int idx)
   7.340 +GOAT3DAPI int *goat3d_get_mesh_face(struct goat3d_mesh *mesh, int idx)
   7.341  {
   7.342  	return mesh->faces.empty() ? 0 : mesh->faces[idx].v;
   7.343  }
   7.344 @@ -435,7 +435,7 @@
   7.345  static bool im_use[NUM_GOAT3D_MESH_ATTRIBS];
   7.346  
   7.347  
   7.348 -void goat3d_begin(struct goat3d_mesh *mesh, enum goat3d_im_primitive prim)
   7.349 +GOAT3DAPI void goat3d_begin(struct goat3d_mesh *mesh, enum goat3d_im_primitive prim)
   7.350  {
   7.351  	mesh->vertices.clear();
   7.352  	mesh->normals.clear();
   7.353 @@ -452,7 +452,7 @@
   7.354  	im_prim = prim;
   7.355  }
   7.356  
   7.357 -void goat3d_end(void)
   7.358 +GOAT3DAPI void goat3d_end(void)
   7.359  {
   7.360  	switch(im_prim) {
   7.361  	case GOAT3D_TRIANGLES:
   7.362 @@ -494,7 +494,7 @@
   7.363  	};
   7.364  }
   7.365  
   7.366 -void goat3d_vertex3f(float x, float y, float z)
   7.367 +GOAT3DAPI void goat3d_vertex3f(float x, float y, float z)
   7.368  {
   7.369  	im_mesh->vertices.push_back(Vector3(x, y, z));
   7.370  	if(im_use[GOAT3D_MESH_ATTR_NORMAL]) {
   7.371 @@ -517,31 +517,31 @@
   7.372  	}
   7.373  }
   7.374  
   7.375 -void goat3d_normal3f(float x, float y, float z)
   7.376 +GOAT3DAPI void goat3d_normal3f(float x, float y, float z)
   7.377  {
   7.378  	im_norm = Vector3(x, y, z);
   7.379  	im_use[GOAT3D_MESH_ATTR_NORMAL] = true;
   7.380  }
   7.381  
   7.382 -void goat3d_tangent3f(float x, float y, float z)
   7.383 +GOAT3DAPI void goat3d_tangent3f(float x, float y, float z)
   7.384  {
   7.385  	im_tang = Vector3(x, y, z);
   7.386  	im_use[GOAT3D_MESH_ATTR_TANGENT] = true;
   7.387  }
   7.388  
   7.389 -void goat3d_texcoord2f(float x, float y)
   7.390 +GOAT3DAPI void goat3d_texcoord2f(float x, float y)
   7.391  {
   7.392  	im_texcoord = Vector2(x, y);
   7.393  	im_use[GOAT3D_MESH_ATTR_TEXCOORD] = true;
   7.394  }
   7.395  
   7.396 -void goat3d_skin_weight4f(float x, float y, float z, float w)
   7.397 +GOAT3DAPI void goat3d_skin_weight4f(float x, float y, float z, float w)
   7.398  {
   7.399  	im_skinw = Vector4(x, y, z, w);
   7.400  	im_use[GOAT3D_MESH_ATTR_SKIN_WEIGHT] = true;
   7.401  }
   7.402  
   7.403 -void goat3d_skin_matrix4i(int x, int y, int z, int w)
   7.404 +GOAT3DAPI void goat3d_skin_matrix4i(int x, int y, int z, int w)
   7.405  {
   7.406  	im_skinmat.x = x;
   7.407  	im_skinmat.y = y;
   7.408 @@ -550,77 +550,77 @@
   7.409  	im_use[GOAT3D_MESH_ATTR_SKIN_MATRIX] = true;
   7.410  }
   7.411  
   7.412 -void goat3d_color3f(float x, float y, float z)
   7.413 +GOAT3DAPI void goat3d_color3f(float x, float y, float z)
   7.414  {
   7.415  	goat3d_color4f(x, y, z, 1.0f);
   7.416  }
   7.417  
   7.418 -void goat3d_color4f(float x, float y, float z, float w)
   7.419 +GOAT3DAPI void goat3d_color4f(float x, float y, float z, float w)
   7.420  {
   7.421  	im_color = Vector4(x, y, z, w);
   7.422  	im_use[GOAT3D_MESH_ATTR_COLOR] = true;
   7.423  }
   7.424  
   7.425  /* lights */
   7.426 -void goat3d_add_light(struct goat3d *g, struct goat3d_light *lt)
   7.427 +GOAT3DAPI void goat3d_add_light(struct goat3d *g, struct goat3d_light *lt)
   7.428  {
   7.429  	g->scn->add_light(lt);
   7.430  }
   7.431  
   7.432 -int goat3d_get_light_count(struct goat3d *g)
   7.433 +GOAT3DAPI int goat3d_get_light_count(struct goat3d *g)
   7.434  {
   7.435  	return g->scn->get_light_count();
   7.436  }
   7.437  
   7.438 -struct goat3d_light *goat3d_get_light(struct goat3d *g, int idx)
   7.439 +GOAT3DAPI struct goat3d_light *goat3d_get_light(struct goat3d *g, int idx)
   7.440  {
   7.441  	return (goat3d_light*)g->scn->get_light(idx);
   7.442  }
   7.443  
   7.444 -struct goat3d_light *goat3d_get_light_by_name(struct goat3d *g, const char *name)
   7.445 +GOAT3DAPI struct goat3d_light *goat3d_get_light_by_name(struct goat3d *g, const char *name)
   7.446  {
   7.447  	return (goat3d_light*)g->scn->get_light(name);
   7.448  }
   7.449  
   7.450  
   7.451 -struct goat3d_light *goat3d_create_light(void)
   7.452 +GOAT3DAPI struct goat3d_light *goat3d_create_light(void)
   7.453  {
   7.454  	return new goat3d_light;
   7.455  }
   7.456  
   7.457 -void goat3d_destroy_light(struct goat3d_light *lt)
   7.458 +GOAT3DAPI void goat3d_destroy_light(struct goat3d_light *lt)
   7.459  {
   7.460  	delete lt;
   7.461  }
   7.462  
   7.463  
   7.464  /* cameras */
   7.465 -void goat3d_add_camera(struct goat3d *g, struct goat3d_camera *cam)
   7.466 +GOAT3DAPI void goat3d_add_camera(struct goat3d *g, struct goat3d_camera *cam)
   7.467  {
   7.468  	g->scn->add_camera(cam);
   7.469  }
   7.470  
   7.471 -int goat3d_get_camera_count(struct goat3d *g)
   7.472 +GOAT3DAPI int goat3d_get_camera_count(struct goat3d *g)
   7.473  {
   7.474  	return g->scn->get_camera_count();
   7.475  }
   7.476  
   7.477 -struct goat3d_camera *goat3d_get_camera(struct goat3d *g, int idx)
   7.478 +GOAT3DAPI struct goat3d_camera *goat3d_get_camera(struct goat3d *g, int idx)
   7.479  {
   7.480  	return (goat3d_camera*)g->scn->get_camera(idx);
   7.481  }
   7.482  
   7.483 -struct goat3d_camera *goat3d_get_camera_by_name(struct goat3d *g, const char *name)
   7.484 +GOAT3DAPI struct goat3d_camera *goat3d_get_camera_by_name(struct goat3d *g, const char *name)
   7.485  {
   7.486  	return (goat3d_camera*)g->scn->get_camera(name);
   7.487  }
   7.488  
   7.489 -struct goat3d_camera *goat3d_create_camera(void)
   7.490 +GOAT3DAPI struct goat3d_camera *goat3d_create_camera(void)
   7.491  {
   7.492  	return new goat3d_camera;
   7.493  }
   7.494  
   7.495 -void goat3d_destroy_camera(struct goat3d_camera *cam)
   7.496 +GOAT3DAPI void goat3d_destroy_camera(struct goat3d_camera *cam)
   7.497  {
   7.498  	delete cam;
   7.499  }
   7.500 @@ -628,52 +628,52 @@
   7.501  
   7.502  
   7.503  // node
   7.504 -void goat3d_add_node(struct goat3d *g, struct goat3d_node *node)
   7.505 +GOAT3DAPI void goat3d_add_node(struct goat3d *g, struct goat3d_node *node)
   7.506  {
   7.507  	g->scn->add_node(node);
   7.508  }
   7.509  
   7.510 -int goat3d_get_node_count(struct goat3d *g)
   7.511 +GOAT3DAPI int goat3d_get_node_count(struct goat3d *g)
   7.512  {
   7.513  	return g->scn->get_node_count();
   7.514  }
   7.515  
   7.516 -struct goat3d_node *goat3d_get_node(struct goat3d *g, int idx)
   7.517 +GOAT3DAPI struct goat3d_node *goat3d_get_node(struct goat3d *g, int idx)
   7.518  {
   7.519  	return (goat3d_node*)g->scn->get_node(idx);
   7.520  }
   7.521  
   7.522 -struct goat3d_node *goat3d_get_node_by_name(struct goat3d *g, const char *name)
   7.523 +GOAT3DAPI struct goat3d_node *goat3d_get_node_by_name(struct goat3d *g, const char *name)
   7.524  {
   7.525  	return (goat3d_node*)g->scn->get_node(name);
   7.526  }
   7.527  
   7.528 -struct goat3d_node *goat3d_create_node(void)
   7.529 +GOAT3DAPI struct goat3d_node *goat3d_create_node(void)
   7.530  {
   7.531  	return new goat3d_node;
   7.532  }
   7.533  
   7.534 -void goat3d_set_node_name(struct goat3d_node *node, const char *name)
   7.535 +GOAT3DAPI void goat3d_set_node_name(struct goat3d_node *node, const char *name)
   7.536  {
   7.537  	node->set_name(name);
   7.538  }
   7.539  
   7.540 -const char *goat3d_get_node_name(const struct goat3d_node *node)
   7.541 +GOAT3DAPI const char *goat3d_get_node_name(const struct goat3d_node *node)
   7.542  {
   7.543  	return node->get_name();
   7.544  }
   7.545  
   7.546 -void goat3d_set_node_object(struct goat3d_node *node, enum goat3d_node_type type, void *obj)
   7.547 +GOAT3DAPI void goat3d_set_node_object(struct goat3d_node *node, enum goat3d_node_type type, void *obj)
   7.548  {
   7.549  	node->set_object((Object*)obj);
   7.550  }
   7.551  
   7.552 -void *goat3d_get_node_object(const struct goat3d_node *node)
   7.553 +GOAT3DAPI void *goat3d_get_node_object(const struct goat3d_node *node)
   7.554  {
   7.555  	return (void*)node->get_object();
   7.556  }
   7.557  
   7.558 -enum goat3d_node_type goat3d_get_node_type(const struct goat3d_node *node)
   7.559 +GOAT3DAPI enum goat3d_node_type goat3d_get_node_type(const struct goat3d_node *node)
   7.560  {
   7.561  	const Object *obj = node->get_object();
   7.562  	if(dynamic_cast<const Mesh*>(obj)) {
   7.563 @@ -689,43 +689,43 @@
   7.564  	return GOAT3D_NODE_NULL;
   7.565  }
   7.566  
   7.567 -void goat3d_add_node_child(struct goat3d_node *node, struct goat3d_node *child)
   7.568 +GOAT3DAPI void goat3d_add_node_child(struct goat3d_node *node, struct goat3d_node *child)
   7.569  {
   7.570  	node->add_child(node);
   7.571  }
   7.572  
   7.573 -int goat3d_get_node_child_count(const struct goat3d_node *node)
   7.574 +GOAT3DAPI int goat3d_get_node_child_count(const struct goat3d_node *node)
   7.575  {
   7.576  	return node->get_children_count();
   7.577  }
   7.578  
   7.579 -struct goat3d_node *goat3d_get_node_child(const struct goat3d_node *node, int idx)
   7.580 +GOAT3DAPI struct goat3d_node *goat3d_get_node_child(const struct goat3d_node *node, int idx)
   7.581  {
   7.582  	return (goat3d_node*)node->get_child(idx);
   7.583  }
   7.584  
   7.585 -void goat3d_set_node_position(struct goat3d_node *node, float x, float y, float z, long tmsec)
   7.586 +GOAT3DAPI void goat3d_set_node_position(struct goat3d_node *node, float x, float y, float z, long tmsec)
   7.587  {
   7.588  	node->set_position(Vector3(x, y, z), tmsec);
   7.589  }
   7.590  
   7.591 -void goat3d_set_node_rotation(struct goat3d_node *node, float qx, float qy, float qz, float qw, long tmsec)
   7.592 +GOAT3DAPI void goat3d_set_node_rotation(struct goat3d_node *node, float qx, float qy, float qz, float qw, long tmsec)
   7.593  {
   7.594  	node->set_rotation(Quaternion(qw, qx, qy, qz), tmsec);
   7.595  }
   7.596  
   7.597 -void goat3d_set_node_scaling(struct goat3d_node *node, float sx, float sy, float sz, long tmsec)
   7.598 +GOAT3DAPI void goat3d_set_node_scaling(struct goat3d_node *node, float sx, float sy, float sz, long tmsec)
   7.599  {
   7.600  	node->set_scaling(Vector3(sx, sy, sz), tmsec);
   7.601  }
   7.602  
   7.603 -void goat3d_set_node_pivot(struct goat3d_node *node, float px, float py, float pz)
   7.604 +GOAT3DAPI void goat3d_set_node_pivot(struct goat3d_node *node, float px, float py, float pz)
   7.605  {
   7.606  	node->set_pivot(Vector3(px, py, pz));
   7.607  }
   7.608  
   7.609  
   7.610 -void goat3d_get_node_position(const struct goat3d_node *node, float *xptr, float *yptr, float *zptr, long tmsec)
   7.611 +GOAT3DAPI void goat3d_get_node_position(const struct goat3d_node *node, float *xptr, float *yptr, float *zptr, long tmsec)
   7.612  {
   7.613  	Vector3 pos = node->get_position(tmsec);
   7.614  	*xptr = pos.x;
   7.615 @@ -733,7 +733,7 @@
   7.616  	*zptr = pos.z;
   7.617  }
   7.618  
   7.619 -void goat3d_get_node_rotation(const struct goat3d_node *node, float *xptr, float *yptr, float *zptr, float *wptr, long tmsec)
   7.620 +GOAT3DAPI void goat3d_get_node_rotation(const struct goat3d_node *node, float *xptr, float *yptr, float *zptr, float *wptr, long tmsec)
   7.621  {
   7.622  	Quaternion q = node->get_rotation(tmsec);
   7.623  	*xptr = q.v.x;
   7.624 @@ -742,7 +742,7 @@
   7.625  	*wptr = q.s;
   7.626  }
   7.627  
   7.628 -void goat3d_get_node_scaling(const struct goat3d_node *node, float *xptr, float *yptr, float *zptr, long tmsec)
   7.629 +GOAT3DAPI void goat3d_get_node_scaling(const struct goat3d_node *node, float *xptr, float *yptr, float *zptr, long tmsec)
   7.630  {
   7.631  	Vector3 scale = node->get_scaling(tmsec);
   7.632  	*xptr = scale.x;
   7.633 @@ -750,7 +750,7 @@
   7.634  	*zptr = scale.z;
   7.635  }
   7.636  
   7.637 -void goat3d_get_node_pivot(const struct goat3d_node *node, float *xptr, float *yptr, float *zptr)
   7.638 +GOAT3DAPI void goat3d_get_node_pivot(const struct goat3d_node *node, float *xptr, float *yptr, float *zptr)
   7.639  {
   7.640  	Vector3 pivot = node->get_pivot();
   7.641  	*xptr = pivot.x;
   7.642 @@ -759,7 +759,7 @@
   7.643  }
   7.644  
   7.645  
   7.646 -void goat3d_get_node_matrix(const struct goat3d_node *node, float *matrix, long tmsec)
   7.647 +GOAT3DAPI void goat3d_get_node_matrix(const struct goat3d_node *node, float *matrix, long tmsec)
   7.648  {
   7.649  	node->get_xform(tmsec, (Matrix4x4*)matrix);
   7.650  }
     8.1 --- a/src/goat3d.h	Sun Oct 13 10:14:19 2013 +0300
     8.2 +++ b/src/goat3d.h	Sun Dec 01 01:31:53 2013 +0200
     8.3 @@ -4,6 +4,12 @@
     8.4  #include <stdio.h>
     8.5  #include <stdlib.h>
     8.6  
     8.7 +#ifdef WIN32
     8.8 +#define GOAT3DAPI	__declspec(dllexport)
     8.9 +#else
    8.10 +#define 
    8.11 +#endif
    8.12 +
    8.13  #define GOAT3D_MAT_ATTR_DIFFUSE			"diffuse"
    8.14  #define GOAT3D_MAT_ATTR_SPECULAR		"specular"
    8.15  #define GOAT3D_MAT_ATTR_SHININESS		"shininess"
    8.16 @@ -66,65 +72,65 @@
    8.17  #endif
    8.18  
    8.19  /* construction/destruction */
    8.20 -struct goat3d *goat3d_create(void);
    8.21 -void goat3d_free(struct goat3d *g);
    8.22 +GOAT3DAPI struct goat3d *goat3d_create(void);
    8.23 +GOAT3DAPI void goat3d_free(struct goat3d *g);
    8.24  
    8.25 -void goat3d_setopt(struct goat3d *g, enum goat3d_option opt, int val);
    8.26 -int goat3d_getopt(const struct goat3d *g, enum goat3d_option opt);
    8.27 +GOAT3DAPI void goat3d_setopt(struct goat3d *g, enum goat3d_option opt, int val);
    8.28 +GOAT3DAPI int goat3d_getopt(const struct goat3d *g, enum goat3d_option opt);
    8.29  
    8.30  /* load/save */
    8.31 -int goat3d_load(struct goat3d *g, const char *fname);
    8.32 -int goat3d_save(const struct goat3d *g, const char *fname);
    8.33 +GOAT3DAPI int goat3d_load(struct goat3d *g, const char *fname);
    8.34 +GOAT3DAPI int goat3d_save(const struct goat3d *g, const char *fname);
    8.35  
    8.36 -int goat3d_load_file(struct goat3d *g, FILE *fp);
    8.37 -int goat3d_save_file(const struct goat3d *g, FILE *fp);
    8.38 +GOAT3DAPI int goat3d_load_file(struct goat3d *g, FILE *fp);
    8.39 +GOAT3DAPI int goat3d_save_file(const struct goat3d *g, FILE *fp);
    8.40  
    8.41 -int goat3d_load_io(struct goat3d *g, struct goat3d_io *io);
    8.42 -int goat3d_save_io(const struct goat3d *g, struct goat3d_io *io);
    8.43 +GOAT3DAPI int goat3d_load_io(struct goat3d *g, struct goat3d_io *io);
    8.44 +GOAT3DAPI int goat3d_save_io(const struct goat3d *g, struct goat3d_io *io);
    8.45  
    8.46  /* misc scene properties */
    8.47 -int goat3d_set_name(struct goat3d *g, const char *name);
    8.48 -const char *goat3d_get_name(const struct goat3d *g);
    8.49 +GOAT3DAPI int goat3d_set_name(struct goat3d *g, const char *name);
    8.50 +GOAT3DAPI const char *goat3d_get_name(const struct goat3d *g);
    8.51  
    8.52 -void goat3d_set_ambient(struct goat3d *g, const float *ambient);
    8.53 -void goat3d_set_ambient3f(struct goat3d *g, float ar, float ag, float ab);
    8.54 -const float *goat3d_get_ambient(const struct goat3d *g);
    8.55 +GOAT3DAPI void goat3d_set_ambient(struct goat3d *g, const float *ambient);
    8.56 +GOAT3DAPI void goat3d_set_ambient3f(struct goat3d *g, float ar, float ag, float ab);
    8.57 +GOAT3DAPI const float *goat3d_get_ambient(const struct goat3d *g);
    8.58  
    8.59  /* materials */
    8.60 -void goat3d_add_mtl(struct goat3d *g, struct goat3d_material *mtl);
    8.61 +GOAT3DAPI void goat3d_add_mtl(struct goat3d *g, struct goat3d_material *mtl);
    8.62  
    8.63 -struct goat3d_material *goat3d_create_mtl(void);
    8.64 -void goat3d_destroy_mtl(struct goat3d_material *mtl);
    8.65 +GOAT3DAPI struct goat3d_material *goat3d_create_mtl(void);
    8.66 +GOAT3DAPI void goat3d_destroy_mtl(struct goat3d_material *mtl);
    8.67  
    8.68 -void goat3d_set_mtl_name(struct goat3d_material *mtl, const char *name);
    8.69 -const char *goat3d_get_mtl_name(const struct goat3d_material *mtl);
    8.70 +GOAT3DAPI void goat3d_set_mtl_name(struct goat3d_material *mtl, const char *name);
    8.71 +GOAT3DAPI const char *goat3d_get_mtl_name(const struct goat3d_material *mtl);
    8.72  
    8.73 -void goat3d_set_mtl_attrib(struct goat3d_material *mtl, const char *attrib, const float *val);
    8.74 -void goat3d_set_mtl_attrib1f(struct goat3d_material *mtl, const char *attrib, float val);
    8.75 -void goat3d_set_mtl_attrib3f(struct goat3d_material *mtl, const char *attrib, float r, float g, float b);
    8.76 -void goat3d_set_mtl_attrib4f(struct goat3d_material *mtl, const char *attrib, float r, float g, float b, float a);
    8.77 -const float *goat3d_get_mtl_attrib(struct goat3d_material *mtl, const char *attrib);
    8.78 +GOAT3DAPI void goat3d_set_mtl_attrib(struct goat3d_material *mtl, const char *attrib, const float *val);
    8.79 +GOAT3DAPI void goat3d_set_mtl_attrib1f(struct goat3d_material *mtl, const char *attrib, float val);
    8.80 +GOAT3DAPI void goat3d_set_mtl_attrib3f(struct goat3d_material *mtl, const char *attrib, float r, float g, float b);
    8.81 +GOAT3DAPI void goat3d_set_mtl_attrib4f(struct goat3d_material *mtl, const char *attrib, float r, float g, float b, float a);
    8.82 +GOAT3DAPI const float *goat3d_get_mtl_attrib(struct goat3d_material *mtl, const char *attrib);
    8.83  
    8.84 -void goat3d_set_mtl_attrib_map(struct goat3d_material *mtl, const char *attrib, const char *mapname);
    8.85 -const char *goat3d_get_mtl_attrib_map(struct goat3d_material *mtl, const char *attrib);
    8.86 +GOAT3DAPI void goat3d_set_mtl_attrib_map(struct goat3d_material *mtl, const char *attrib, const char *mapname);
    8.87 +GOAT3DAPI const char *goat3d_get_mtl_attrib_map(struct goat3d_material *mtl, const char *attrib);
    8.88  
    8.89  /* meshes */
    8.90 -void goat3d_add_mesh(struct goat3d *g, struct goat3d_mesh *mesh);
    8.91 -int goat3d_get_mesh_count(struct goat3d *g);
    8.92 -struct goat3d_mesh *goat3d_get_mesh(struct goat3d *g, int idx);
    8.93 -struct goat3d_mesh *goat3d_get_mesh_by_name(struct goat3d *g, const char *name);
    8.94 +GOAT3DAPI void goat3d_add_mesh(struct goat3d *g, struct goat3d_mesh *mesh);
    8.95 +GOAT3DAPI int goat3d_get_mesh_count(struct goat3d *g);
    8.96 +GOAT3DAPI struct goat3d_mesh *goat3d_get_mesh(struct goat3d *g, int idx);
    8.97 +GOAT3DAPI struct goat3d_mesh *goat3d_get_mesh_by_name(struct goat3d *g, const char *name);
    8.98  
    8.99 -struct goat3d_mesh *goat3d_create_mesh(void);
   8.100 -void goat3d_destroy_mesh(struct goat3d_mesh *mesh);
   8.101 +GOAT3DAPI struct goat3d_mesh *goat3d_create_mesh(void);
   8.102 +GOAT3DAPI void goat3d_destroy_mesh(struct goat3d_mesh *mesh);
   8.103  
   8.104 -void goat3d_set_mesh_name(struct goat3d_mesh *mesh, const char *name);
   8.105 -const char *goat3d_get_mesh_name(const struct goat3d_mesh *mesh);
   8.106 +GOAT3DAPI void goat3d_set_mesh_name(struct goat3d_mesh *mesh, const char *name);
   8.107 +GOAT3DAPI const char *goat3d_get_mesh_name(const struct goat3d_mesh *mesh);
   8.108  
   8.109 -void goat3d_set_mesh_mtl(struct goat3d_mesh *mesh, struct goat3d_material *mtl);
   8.110 -struct goat3d_material *goat3d_get_mesh_mtl(struct goat3d_mesh *mesh);
   8.111 +GOAT3DAPI void goat3d_set_mesh_mtl(struct goat3d_mesh *mesh, struct goat3d_material *mtl);
   8.112 +GOAT3DAPI struct goat3d_material *goat3d_get_mesh_mtl(struct goat3d_mesh *mesh);
   8.113  
   8.114 -int goat3d_get_mesh_attrib_count(struct goat3d_mesh *mesh, enum goat3d_mesh_attrib attrib);
   8.115 -int goat3d_get_mesh_face_count(struct goat3d_mesh *mesh);
   8.116 +GOAT3DAPI int goat3d_get_mesh_attrib_count(struct goat3d_mesh *mesh, enum goat3d_mesh_attrib attrib);
   8.117 +GOAT3DAPI int goat3d_get_mesh_face_count(struct goat3d_mesh *mesh);
   8.118  
   8.119  /* sets all the data for a single vertex attribute array in one go.
   8.120   * vnum is the number of *vertices* to be set, not the number of floats, ints or whatever
   8.121 @@ -137,91 +143,91 @@
   8.122   *  - GOAT3D_MESH_ATTR_SKIN_MATRIX  - 4 ints per vertex
   8.123   *  - GOAT3D_MESH_ATTR_COLOR        - 4 floats per vertex
   8.124   */
   8.125 -void goat3d_set_mesh_attribs(struct goat3d_mesh *mesh, enum goat3d_mesh_attrib attrib,
   8.126 +GOAT3DAPI void goat3d_set_mesh_attribs(struct goat3d_mesh *mesh, enum goat3d_mesh_attrib attrib,
   8.127  		const void *data, int vnum);
   8.128 -void goat3d_add_mesh_attrib1f(struct goat3d_mesh *mesh, enum goat3d_mesh_attrib attrib, float val);
   8.129 -void goat3d_add_mesh_attrib3f(struct goat3d_mesh *mesh, enum goat3d_mesh_attrib attrib,
   8.130 -		float x, float y, float z);
   8.131 -void goat3d_add_mesh_attrib4f(struct goat3d_mesh *mesh, enum goat3d_mesh_attrib attrib,
   8.132 -		float x, float y, float z, float w);
   8.133 +GOAT3DAPI void goat3d_add_mesh_attrib1f(struct goat3d_mesh *mesh, enum goat3d_mesh_attrib attrib, float val);
   8.134 +GOAT3DAPI void goat3d_add_mesh_attrib3f(struct goat3d_mesh *mesh, enum goat3d_mesh_attrib attrib,
   8.135 + 		float x, float y, float z);
   8.136 +GOAT3DAPI void goat3d_add_mesh_attrib4f(struct goat3d_mesh *mesh, enum goat3d_mesh_attrib attrib,
   8.137 + 		float x, float y, float z, float w);
   8.138  /* returns a pointer to the beginning of the requested mesh attribute array */
   8.139 -void *goat3d_get_mesh_attribs(struct goat3d_mesh *mesh, enum goat3d_mesh_attrib attrib);
   8.140 +GOAT3DAPI void *goat3d_get_mesh_attribs(struct goat3d_mesh *mesh, enum goat3d_mesh_attrib attrib);
   8.141  /* returns a pointer to the requested mesh attribute */
   8.142 -void *goat3d_get_mesh_attrib(struct goat3d_mesh *mesh, enum goat3d_mesh_attrib attrib, int idx);
   8.143 +GOAT3DAPI void *goat3d_get_mesh_attrib(struct goat3d_mesh *mesh, enum goat3d_mesh_attrib attrib, int idx);
   8.144  
   8.145  /* sets all the faces in one go. data is an array of 3 int vertex indices per face */
   8.146 -void goat3d_set_mesh_faces(struct goat3d_mesh *mesh, const int *data, int fnum);
   8.147 -void goat3d_add_mesh_face(struct goat3d_mesh *mesh, int a, int b, int c);
   8.148 +GOAT3DAPI void goat3d_set_mesh_faces(struct goat3d_mesh *mesh, const int *data, int fnum);
   8.149 +GOAT3DAPI void goat3d_add_mesh_face(struct goat3d_mesh *mesh, int a, int b, int c);
   8.150  /* returns a pointer to the beginning of the face index array */
   8.151 -int *goat3d_get_mesh_faces(struct goat3d_mesh *mesh);
   8.152 +GOAT3DAPI int *goat3d_get_mesh_faces(struct goat3d_mesh *mesh);
   8.153  /* returns a pointer to a face index */
   8.154 -int *goat3d_get_mesh_face(struct goat3d_mesh *mesh, int idx);
   8.155 +GOAT3DAPI int *goat3d_get_mesh_face(struct goat3d_mesh *mesh, int idx);
   8.156  
   8.157  /* immediate mode OpenGL-like interface for setting mesh data
   8.158   *  NOTE: using this interface will result in no vertex sharing between faces
   8.159   * NOTE2: the immedate mode interface is not thread-safe, either use locks, or don't
   8.160   *        use it at all in multithreaded situations.
   8.161   */
   8.162 -void goat3d_begin(struct goat3d_mesh *mesh, enum goat3d_im_primitive prim);
   8.163 -void goat3d_end(void);
   8.164 -void goat3d_vertex3f(float x, float y, float z);
   8.165 -void goat3d_normal3f(float x, float y, float z);
   8.166 -void goat3d_tangent3f(float x, float y, float z);
   8.167 -void goat3d_texcoord2f(float x, float y);
   8.168 -void goat3d_skin_weight4f(float x, float y, float z, float w);
   8.169 -void goat3d_skin_matrix4i(int x, int y, int z, int w);
   8.170 -void goat3d_color3f(float x, float y, float z);
   8.171 -void goat3d_color4f(float x, float y, float z, float w);
   8.172 +GOAT3DAPI void goat3d_begin(struct goat3d_mesh *mesh, enum goat3d_im_primitive prim);
   8.173 +GOAT3DAPI void goat3d_end(void);
   8.174 +GOAT3DAPI void goat3d_vertex3f(float x, float y, float z);
   8.175 +GOAT3DAPI void goat3d_normal3f(float x, float y, float z);
   8.176 +GOAT3DAPI void goat3d_tangent3f(float x, float y, float z);
   8.177 +GOAT3DAPI void goat3d_texcoord2f(float x, float y);
   8.178 +GOAT3DAPI void goat3d_skin_weight4f(float x, float y, float z, float w);
   8.179 +GOAT3DAPI void goat3d_skin_matrix4i(int x, int y, int z, int w);
   8.180 +GOAT3DAPI void goat3d_color3f(float x, float y, float z);
   8.181 +GOAT3DAPI void goat3d_color4f(float x, float y, float z, float w);
   8.182  
   8.183  /* lights */
   8.184 -void goat3d_add_light(struct goat3d *g, struct goat3d_light *lt);
   8.185 -int goat3d_get_light_count(struct goat3d *g);
   8.186 -struct goat3d_light *goat3d_get_light(struct goat3d *g, int idx);
   8.187 -struct goat3d_light *goat3d_get_light_by_name(struct goat3d *g, const char *name);
   8.188 +GOAT3DAPI void goat3d_add_light(struct goat3d *g, struct goat3d_light *lt);
   8.189 +GOAT3DAPI int goat3d_get_light_count(struct goat3d *g);
   8.190 +GOAT3DAPI struct goat3d_light *goat3d_get_light(struct goat3d *g, int idx);
   8.191 +GOAT3DAPI struct goat3d_light *goat3d_get_light_by_name(struct goat3d *g, const char *name);
   8.192  
   8.193 -struct goat3d_light *goat3d_create_light(void);
   8.194 -void goat3d_destroy_light(struct goat3d_light *lt);
   8.195 +GOAT3DAPI struct goat3d_light *goat3d_create_light(void);
   8.196 +GOAT3DAPI void goat3d_destroy_light(struct goat3d_light *lt);
   8.197  
   8.198  /* cameras */
   8.199 -void goat3d_add_camera(struct goat3d *g, struct goat3d_camera *cam);
   8.200 -int goat3d_get_camera_count(struct goat3d *g);
   8.201 -struct goat3d_camera *goat3d_get_camera(struct goat3d *g, int idx);
   8.202 -struct goat3d_camera *goat3d_get_camera_by_name(struct goat3d *g, const char *name);
   8.203 +GOAT3DAPI void goat3d_add_camera(struct goat3d *g, struct goat3d_camera *cam);
   8.204 +GOAT3DAPI int goat3d_get_camera_count(struct goat3d *g);
   8.205 +GOAT3DAPI struct goat3d_camera *goat3d_get_camera(struct goat3d *g, int idx);
   8.206 +GOAT3DAPI struct goat3d_camera *goat3d_get_camera_by_name(struct goat3d *g, const char *name);
   8.207  
   8.208 -struct goat3d_camera *goat3d_create_camera(void);
   8.209 -void goat3d_destroy_camera(struct goat3d_camera *cam);
   8.210 +GOAT3DAPI struct goat3d_camera *goat3d_create_camera(void);
   8.211 +GOAT3DAPI void goat3d_destroy_camera(struct goat3d_camera *cam);
   8.212  
   8.213  /* nodes */
   8.214 -void goat3d_add_node(struct goat3d *g, struct goat3d_node *node);
   8.215 -int goat3d_get_node_count(struct goat3d *g);
   8.216 -struct goat3d_node *goat3d_get_node(struct goat3d *g, int idx);
   8.217 -struct goat3d_node *goat3d_get_node_by_name(struct goat3d *g, const char *name);
   8.218 +GOAT3DAPI void goat3d_add_node(struct goat3d *g, struct goat3d_node *node);
   8.219 +GOAT3DAPI int goat3d_get_node_count(struct goat3d *g);
   8.220 +GOAT3DAPI struct goat3d_node *goat3d_get_node(struct goat3d *g, int idx);
   8.221 +GOAT3DAPI struct goat3d_node *goat3d_get_node_by_name(struct goat3d *g, const char *name);
   8.222  
   8.223 -struct goat3d_node *goat3d_create_node(void);
   8.224 -void goat3d_destroy_node(struct goat3d_node *node);
   8.225 +GOAT3DAPI struct goat3d_node *goat3d_create_node(void);
   8.226 +GOAT3DAPI void goat3d_destroy_node(struct goat3d_node *node);
   8.227  
   8.228 -void goat3d_set_node_name(struct goat3d_node *node, const char *name);
   8.229 -const char *goat3d_get_node_name(const struct goat3d_node *node);
   8.230 +GOAT3DAPI void goat3d_set_node_name(struct goat3d_node *node, const char *name);
   8.231 +GOAT3DAPI const char *goat3d_get_node_name(const struct goat3d_node *node);
   8.232  
   8.233 -void goat3d_set_node_object(struct goat3d_node *node, enum goat3d_node_type type, void *obj);
   8.234 -void *goat3d_get_node_object(const struct goat3d_node *node);
   8.235 -enum goat3d_node_type goat3d_get_node_type(const struct goat3d_node *node);
   8.236 +GOAT3DAPI void goat3d_set_node_object(struct goat3d_node *node, enum goat3d_node_type type, void *obj);
   8.237 +GOAT3DAPI void *goat3d_get_node_object(const struct goat3d_node *node);
   8.238 +GOAT3DAPI enum goat3d_node_type goat3d_get_node_type(const struct goat3d_node *node);
   8.239  
   8.240 -void goat3d_add_node_child(struct goat3d_node *node, struct goat3d_node *child);
   8.241 -int goat3d_get_node_child_count(const struct goat3d_node *node);
   8.242 -struct goat3d_node *goat3d_get_node_child(const struct goat3d_node *node, int idx);
   8.243 +GOAT3DAPI void goat3d_add_node_child(struct goat3d_node *node, struct goat3d_node *child);
   8.244 +GOAT3DAPI int goat3d_get_node_child_count(const struct goat3d_node *node);
   8.245 +GOAT3DAPI struct goat3d_node *goat3d_get_node_child(const struct goat3d_node *node, int idx);
   8.246  
   8.247 -void goat3d_set_node_position(struct goat3d_node *node, float x, float y, float z, long tmsec);
   8.248 -void goat3d_set_node_rotation(struct goat3d_node *node, float qx, float qy, float qz, float qw, long tmsec);
   8.249 -void goat3d_set_node_scaling(struct goat3d_node *node, float sx, float sy, float sz, long tmsec);
   8.250 -void goat3d_set_node_pivot(struct goat3d_node *node, float px, float py, float pz);
   8.251 +GOAT3DAPI void goat3d_set_node_position(struct goat3d_node *node, float x, float y, float z, long tmsec);
   8.252 +GOAT3DAPI void goat3d_set_node_rotation(struct goat3d_node *node, float qx, float qy, float qz, float qw, long tmsec);
   8.253 +GOAT3DAPI void goat3d_set_node_scaling(struct goat3d_node *node, float sx, float sy, float sz, long tmsec);
   8.254 +GOAT3DAPI void goat3d_set_node_pivot(struct goat3d_node *node, float px, float py, float pz);
   8.255  
   8.256 -void goat3d_get_node_position(const struct goat3d_node *node, float *xptr, float *yptr, float *zptr, long tmsec);
   8.257 -void goat3d_get_node_rotation(const struct goat3d_node *node, float *xptr, float *yptr, float *zptr, float *wptr, long tmsec);
   8.258 -void goat3d_get_node_scaling(const struct goat3d_node *node, float *xptr, float *yptr, float *zptr, long tmsec);
   8.259 -void goat3d_get_node_pivot(const struct goat3d_node *node, float *xptr, float *yptr, float *zptr);
   8.260 +GOAT3DAPI void goat3d_get_node_position(const struct goat3d_node *node, float *xptr, float *yptr, float *zptr, long tmsec);
   8.261 +GOAT3DAPI void goat3d_get_node_rotation(const struct goat3d_node *node, float *xptr, float *yptr, float *zptr, float *wptr, long tmsec);
   8.262 +GOAT3DAPI void goat3d_get_node_scaling(const struct goat3d_node *node, float *xptr, float *yptr, float *zptr, long tmsec);
   8.263 +GOAT3DAPI void goat3d_get_node_pivot(const struct goat3d_node *node, float *xptr, float *yptr, float *zptr);
   8.264  
   8.265 -void goat3d_get_node_matrix(const struct goat3d_node *node, float *matrix, long tmsec);
   8.266 +GOAT3DAPI void goat3d_get_node_matrix(const struct goat3d_node *node, float *matrix, long tmsec);
   8.267  
   8.268  #ifdef __cplusplus
   8.269  }