いきなりsquirrel
ソースコードを色付けして記述する(シンタックス・ハイライト) - はてなダイアリーのヘルプ
色つく記法(シンタックス・ハイライトというものだそうで)ができるらしいのでテストでsquirrelのコードをjavaのハイライトでやらせてみよう。
キャラのモーションと並行で走らせて音ならしたり速度を調整したりするスクリプトです。ActionNameMapの方でデフォルトとして定義したそれぞれのアクションの名前がついた変数へコンストラクタでclass定義を代入してます。namespaceの中に定められた名前でクラスを定義するという制約(しかも再利用可能)という変態的な仕組みもsquirrelだと作り出せちゃう。くぅったまらん。クラスを入れる変数名を打ち間違えた場合は_001をinstanciateしようとした時点でエラーが起きます。=では新しいテーブル内要素を作らないsquirrelならでは。
class _001 extends ActionNameMap { constructor() { /////////////////////////////////////////////////////////////// STAY = class extends ActionScriptTemplate { constructor() { actionname = "000"; // cursorlength = 180 } function Run() { _offset = rand() % 180; yield; return 1; } function report_animation_cursor(time) { // override local speed = 1.0 + cos((((clock()+_offset) % 180.0) / 180.0) * 2.0 * PI) * 0.05; time = speed * time; return time + _offset; } _offset = 0; } /////////////////////////////////////////////////////////////// WALK = class extends ActionScriptTemplate { constructor() { actionname = "walk"; //cursorlength = 70.0; timescalespan = [ 0.0, 9999999.0, 9999999.0, 9999999.0 ]; } function Run() { cancancel = true; while(true) { for(StartWait(6.0);Wait();) yield; SoundPlay("step"); for(StartWait(35.0);Wait();) yield; SoundPlay("step"); for(;(currenttime % 70.0) > 35.0;) yield; SignalRegistry(); } return 1; }} /////////////////////////////////////////////////////////////// SLASH_PRE = class extends ActionScriptTemplate { constructor() { actionname = "slash"; cursorlength = 30.0; timescalespan = [ 0.0, 9999999.0, 9999999.0, 9999999.0 ]; } function Run() { SoundPlay("slash_pre"); for(StartWait(30.0);Wait();) yield; held = true; while(true) yield; // never finish return 1; }} /////////////////////////////////////////////////////////////// SLASH_POST = class extends ActionScriptTemplate { constructor() { actionname = "slash"; cursorlength = 30.0; cursoroffset = 60.0; timescalespan = [ 0.0, 9999999.0, 9999999.0, 9999999.0 ]; } function Run() { SoundPlay("slash_post"); for(StartWait(6.0);Wait();) yield; // effect slash for(StartWait(24.0);Wait();) yield; cancancel = true; for(StartTimeWait(0.3);TimeWait();) yield; return 1; }} /////////////////////////////////////////////////////////////// ARROW_PRE = class extends ActionScriptTemplate { constructor() { actionname = "arrow"; cursorlength = 30.0; timescalespan = [ 0.0, 9999999.0, 9999999.0, 9999999.0 ]; } function Run() { SoundPlay("arrow_pre"); for(StartWait(30.0);Wait();) yield; held = true; while(true) yield; // never finish return 1; }} /////////////////////////////////////////////////////////////// ARROW_POST = class extends ActionScriptTemplate { constructor() { actionname = "arrow"; cursorlength = 30.0; cursoroffset = 60.0; timescalespan = [ 0.0, 9999999.0, 9999999.0, 9999999.0 ]; } function Run() { SoundPlay("arrow_post"); // arrow effect start here TriggerEffect("Arrow"); for(StartWait(30.0);Wait();) yield; cancancel = true; for(StartTimeWait(0.3);TimeWait();) yield; return 1; }} /////////////////////////////////////////////////////////////// CAST_PRE = class extends ActionScriptTemplate { constructor() { actionname = "cast_hand"; cursorlength = 30.0; timescalespan = [ 0.0, 9999999.0, 9999999.0, 9999999.0 ]; } function Run() { for(StartTimeWait(0.1);TimeWait();) yield; held = true; while(true) yield; // never finish return 1; } } /////////////////////////////////////////////////////////////// CAST_POST_POS = class extends ActionScriptTemplate { constructor() { actionname = "cast_hand"; cursorlength = 60.0; cursoroffset = 60.0; timescalespan = [ 0.0, 30.0, 30.0, 9999.0 ]; } function Run() { local sndid = SoundPlay("magic_pre"); local effid0 = TriggerEffect("Cast"); local effid1 = TriggerEffect("MagicCircle"); for(StartWait(30.0);Wait();) yield; SoundStop(sndid); KillEffect(effid0); KillEffect(effid1); TriggerEffect(extraeffectname); for(StartWait(30.0);Wait();) yield; return 1; } } /////////////////////////////////////////////////////////////// CAST_POST_MAN = class extends ActionScriptTemplate { constructor() { actionname = "cast_hand"; cursorlength = 60.0; cursoroffset = 60.0; timescalespan = [ 0.0, 30.0, 30.0, 9999.0 ]; } function Run() { local sndid = SoundPlay("magic_pre"); local effid0 = TriggerEffect("Cast"); for(StartWait(30.0);Wait();) yield; SoundStop(sndid); KillEffect(effid0); TriggerEffect(extraeffectname); for(StartWait(30.0);Wait();) yield; return 1; } } // end of definition }}
って、なんでいきなりsquirrel?意味わからん。
あーHLSLがないのか。なんか他でfloat4x4とかがハイライトされるのはないのですか?