Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* CM3D2.KagSetMotionSpeed.Plugin.cs
- ksスクリプトに@SetMotionSpeedタグを追加するUnityInjector用プラグイン
- # コンパイル
- cd /d C:\KISS\CM3D2_KAIZOU\UnityInjector
- C:\Windows\Microsoft.NET\Framework\v3.5\csc /t:library /lib:..\CM3D2x64_Data\Managed /r:UnityEngine.dll /r:UnityInjector.dll /r:Assembly-CSharp.dll /r:Assembly-CSharp-firstpass.dll CM3D2.KagSetMotionSpeed.Plugin.cs
- # タグの仕様
- @SetMotionSpeed maid=0 speed=50.0
- maid=X メイド指定
- man=X 男指定
- speed=X 速度の倍率指定 (1.0 で通常速度)
- # スクリプトの変更例
- 例として「愛撫」コマンドの待機時モーション速度を変更。
- srcipt/motion/sex/sex_aibu.ks内の性格別モーション指定を以下のように変更する
- ; ▼ツンデレ待機
- *ツンデレ待機
- @MotionAutoTwist maid=0 kata=on
- ...
- ; ↓この行を追加する。この例だと 50 倍速になる
- @SetMotionSpeed maid=0 speed=50.0
- @s
- */
- using System;
- using System.Collections.Generic;
- using System.Reflection;
- using UnityEngine;
- using UnityInjector.Attributes;
- [PluginFilter("CM3D2x64"), PluginFilter("CM3D2x86"),
- PluginFilter("CM3D2OHx64"), PluginFilter("CM3D2OHx86"),
- PluginFilter("CM3D2VRx64"), PluginFilter("CM3D2VRx86"),
- PluginFilter("CM3D2OHVRx64"), PluginFilter("CM3D2OHVRx86")]
- public class KagSetMotionSpeedPlugin : UnityInjector.PluginBase
- {
- static MethodInfo getMaidAndMan_ = null;
- public void OnLevelWasLoaded(int level)
- {
- var managers = new List<BaseKagManager>();
- managers.Add(GameMain.Instance.ScriptMgr.adv_kag);
- managers.Add(GameMain.Instance.ScriptMgr.yotogi_kag);
- foreach (MotionKagManager m in GameMain.Instance.ScriptMgr.kag_mot_dic.Values)
- {
- managers.Add(m);
- }
- string tagName = "setmotionspeed";
- foreach (BaseKagManager m in managers)
- {
- m.kag.RemoveTagCallBack(tagName);
- m.kag.AddTagCallBack(
- tagName, new KagScript.KagTagCallBack(TagSetMotionSpeed));
- }
- }
- static bool TagSetMotionSpeed(KagTagSupport tag_data)
- {
- Maid maidAndMan = GetMaidAndMan(tag_data);
- if (maidAndMan == null)
- {
- return false;
- }
- float speed = 1.0f;
- if (tag_data.IsValid("speed"))
- {
- speed = tag_data.GetTagProperty("speed").AsReal();
- }
- if (speed >= -100.0f && speed < 100.0f)
- {
- if (maidAndMan.Visible && maidAndMan.body0.m_Bones != null)
- {
- foreach (AnimationState a in maidAndMan.body0.m_Bones.animation)
- {
- a.speed = speed;
- }
- }
- }
- return true;
- }
- static Maid GetMaidAndMan(KagTagSupport tag_data)
- {
- if (getMaidAndMan_ == null)
- {
- getMaidAndMan_ = typeof(BaseKagManager).GetMethod(
- "GetMaidAndMan", BindingFlags.NonPublic | BindingFlags.Static,
- null, new Type[] { typeof(KagTagSupport) }, null);
- }
- if (getMaidAndMan_ == null)
- {
- return null;
- }
- return getMaidAndMan_.Invoke(null, new object[] { tag_data }) as Maid;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment