Skip to content

Instantly share code, notes, and snippets.

@tmskst
Last active August 29, 2015 14:07
Show Gist options
  • Save tmskst/33c8aae12d3fbdfbd636 to your computer and use it in GitHub Desktop.
Save tmskst/33c8aae12d3fbdfbd636 to your computer and use it in GitHub Desktop.
HaxeでAlternativa3Dを使う

Alternativa3Dをクローンしておく。

最初にcompcでSWCを生成する。コマンドは次の通り。

compc ^
	-swf-version 23 ^
	-source-path src ^
	-include-sources src ^
	--external-library-path+=libs\A3DModelsBase-2.5.2.swc ^
	--external-library-path+=libs\AlternativaProtocol-2.53.0.swc ^
	--external-library-path+=libs\OSGIBase.swc ^
	--external-library-path+=libs\ProtocolTypes.swc ^
	-output Alternativa3D.swc

Alternativa3D.swc が生成されるので各自のプロジェクトの libに移動する。Alternativa3D/libsも必要なのでlibに移動する。

次に補完に使うextern定義を生成する。libディレクトリ内で次のコマンドを実行する。

haxe ^
--no-output ^
-swf nothing.swf  ^
-swf-lib Alternativa3D.swc ^
-swf-lib OSGIBase.swc ^
-swf-lib AlternativaProtocol-2.53.0.swc ^
--gen-hx-classes ^
--macro patchTypes('Alternativa3D.patch')

するとhxclasses が生成される。必要なのは hxclasses/alternativa だけなので hxclasses/alternativa を libに移動する。残りは削除しても良い。あとはIDEに lib/alternativa をクラスパスとして通せば補完が有効になる。

ビルドの準備を行う。

以下に示すAlternativa3D.patchをlibの中に作成する。

-alternativa.engine3d.core.CullingPlane.create
-alternativa.engine3d.materials.compiler.Procedure.compileFromString
-alternativa.engine3d.materials.compiler.Procedure.compileFromArray
-alternativa.engine3d.resources.BitmapTextureResource.createMips

最後にcompile.hxml は次のようになる。

-cp src
-main Main
-swf bin/Main.swf

-D fdb
-debug

-swf-lib lib/OSGIBase.swc
-swf-lib lib/AlternativaProtocol-2.53.0.swc
-swf-lib lib/A3DModelsBase-2.5.2.swc
-swf-lib lib/ProtocolTypes.swc
-swf-lib lib/Alternativa3D.swc

--macro patchTypes('lib/Alternativa3D.patch')
-swf-version 12

この -swf-libの順序を守らないと次のようなエラーが発生することがある。

VerifyError: Error #1014: クラス IClientLogBase が見つかりません。

VerifyError: Error #1014: クラス ICodec が見つかりません。

-alternativa.engine3d.core.CullingPlane.create
-alternativa.engine3d.materials.compiler.Procedure.compileFromString
-alternativa.engine3d.materials.compiler.Procedure.compileFromArray
-alternativa.engine3d.resources.BitmapTextureResource.createMips
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment