Files
Main/Assets/Editor/External/XLua/ExampleGenConfig.cs
2025-01-25 04:38:09 +08:00

859 lines
36 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* Tencent is pleased to support the open source community by making xLua available.
* Copyright (C) 2016 THL A29 Limited, a Tencent company. All rights reserved.
* Licensed under the MIT License (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
* http://opensource.org/licenses/MIT
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
*/
using System.Collections.Generic;
using System;
using UnityEngine;
using XLua;
using Thousandto.Code.Logic;
using Thousandto.Plugins.Common;
using Thousandto.GameUI.Form;
using Thousandto.Core.Base;
using Thousandto.Code.Global;
using Thousandto.Core.Asset;
using Thousandto.Cfg.Data;
using Thousandto.Code.Center;
using Thousandto.Plugins.Common.UniScene;
using Thousandto.Core.PostEffect;
using Thousandto.Plugins.PathGrid;
using EventSystemHandler = UnityEngine.Gonbest.MagicCube.EventSystemHandler;
using EventConstDefine = UnityEngine.Gonbest.MagicCube.EventConstDefine;
using FLogUploader = UnityEngine.Gonbest.MagicCube.FLogUploader;
using PathUtils = UnityEngine.Gonbest.MagicCube.PathUtils;
using UnityEngine.Playables;
using Thousandto.Plugins.LuaType;
using UnityEngine.Gonbest.MagicCube;
using TimeUtils = Thousandto.Core.Base.TimeUtils;
using System.IO;
using System.Linq;
using Thousandto.Core.Support;
using System.Net;
using System.Reflection;
using Thousandto.CoreSDK;
using Thousandto.Code.Logic.LocalPlayerBT;
using Thousandto.Core.RootSystem;
using MD5Utils = UnityEngine.Gonbest.MagicCube.MD5Utils;
using BestHTTP;
//using System.Reflection;
//using System.Linq;
//配置的详细介绍请看Doc下《XLua的配置.doc》
public static class ExampleGenConfig
{
//lua中要使用到C#库的配置比如C#标准库或者Unity API第三方库等。
[LuaCallCSharp]
public static List<Type> LuaCallCSharp = new List<Type>() {
typeof(System.Type),
typeof(System.Object),
typeof(UnityEngine.Object),
typeof(System.Text.Encoding),
typeof(UnityEngine.WWWForm),
typeof(UnityEngine.Networking.UnityWebRequest),
typeof(UnityEngine.Networking.UnityWebRequestAsyncOperation),
typeof(UnityEngine.AsyncOperation),
typeof(UnityEngine.Rendering.CommandBuffer),
typeof(UnityEngine.Rendering.BuiltinRenderTextureType),
typeof(UnityEngine.Rendering.CameraEvent),
typeof(UnityEngine.Rendering.RenderTargetIdentifier),
typeof(Behaviour),
typeof(MonoBehaviour),
typeof(Component),
typeof(GameObject),
typeof(SendMessageOptions),
typeof(Transform),
typeof(Camera),
typeof(Light),
typeof(Material),
typeof(Texture),
typeof(Vector2),
typeof(Vector3),
typeof(RaycastHit),
typeof(Vector4),
typeof(Quaternion),
typeof(Color),
typeof(Ray),
typeof(Bounds),
typeof(Ray2D),
typeof(Time),
typeof(Resources),
typeof(TextAsset),
typeof(Keyframe),
typeof(AnimationCurve),
typeof(AnimationClip),
typeof(Renderer),
typeof(Mathf),
typeof(List<int>),
typeof(Debug),
typeof(Input),
typeof(Rect),
typeof(NGUIMath),
typeof(UICamera),
typeof(UIEventListener),
typeof(List<ItemBase>),
typeof(NGUITools),
typeof(UIToggle),
typeof(PlayerPrefs),
typeof(SystemInfo),
typeof(File),
typeof(WebRequest),
typeof(HttpWebRequest),
typeof(WebResponse),
typeof(HttpWebResponse),
typeof(RuntimePlatform),
typeof(Physics),
//枚举
typeof(UIEventDefine),
typeof(LogicEventDefine),
typeof(ImageTypeCode),
typeof(AudioTypeCode),
typeof(MsgBoxResultCode),
typeof(MsgBoxIsSelect),
typeof(KeyCode),
typeof(FSkinTypeCode),
typeof(ModelTypeCode),
typeof(AllBattleProp),
typeof(GuideTriggerType),
typeof(FriendType),
typeof(PKMode),
typeof(UITweener.Method),
typeof(UITweener.Style),
typeof(UIWidget.Pivot),
typeof(MsgBoxInfoTypeCode),
typeof(MapTypeDef),
typeof(SkillSelectFiledType),
typeof(ActionEventCode),
//物品枚举
typeof(ItemType),
typeof(ItemTypeCode),
typeof(ItemBigType),
typeof(ItemOpertion),
typeof(ContainerType),
typeof(QualityCode),
typeof(ItemTipsLocation),
typeof(UIFormRegion),
//UI
typeof(UINormalForm),
typeof(UIBaseFormWidget),
typeof(UIButton),
typeof(UISprite),
typeof(UIAtlas),
typeof(UITexture),
typeof(UILabel),
typeof(UIScrollView),
typeof(UIGrid),
typeof(UISlider),
typeof(TweenPosition),
typeof(TweenRotation),
typeof(TweenTransform),
typeof(UIWidget),
typeof(UIBasicSprite),
typeof(UIRect),
typeof(UIIconBase),
typeof(UIIcon),
typeof(UILoopScrollViewBase),
typeof(UIRoot),
typeof(UIMoneyForm),
typeof(UISutureTexture),
typeof(UISutureTextureData),
//自己写的类
typeof(GameCenter),
typeof(TimeRecord),
typeof(Networker),
typeof(TimeUtils),
typeof(UIUtility),
typeof(UIPolygonScript),
//typeof(UISelectPlayerSkin),
typeof(UIPlayerLevelLabel),
typeof(MyTweenUISlider),
typeof(NetHandler),
typeof(EventDelegate),
typeof(AssetUtils),
typeof(PathEditor.Proxy.Plugin.PathGirdData),
typeof(TextureManager),
typeof(RedPointSystem),
typeof(ItemContianerSystem),
typeof(ItemContianerModel),
typeof(MsgPromptSystem),
typeof(GameSceneSystem),
typeof(TextureInfo),
//typeof(GuildRepertorySystem),
typeof(PathSearchSystem),
typeof(PathGridSystem),
typeof(PathLandSystem),
typeof(UIFormManager),
typeof(FormStateSystem),
typeof(MD5Utils),
typeof(GameUICenter),
typeof(RedPointTaskCondition),
typeof(RedPointLevelCondition),
typeof(UIListMenu),
typeof(FingerGesturesEventTrigger),
typeof(IFingerGesturesEvent),
typeof(CharacterDeadInfo),
typeof(LocalPlayer),
typeof(Player),
typeof(GameScene),
typeof(EntityContainer),
typeof(CameraControl),
typeof(CameraManager),
typeof(SkillVisualManager),
typeof(SkillVisualInfo),
typeof(Idle),
typeof(EntityFSM),
typeof(EntityFState),
typeof(PathMove),
typeof(PathMoveData),
typeof(UIRoleSkinCompoent),
typeof(AssetUtils),
typeof(LayerUtils),
typeof(CommonUtils),
typeof(PathFinderSystem),
typeof(UIItemShow),
typeof(ItemModel),
typeof(LocalPlayerProperty),
typeof(UIItem),
typeof(ItemMsgCondition),
typeof(BaseProperty),
typeof(ItemBase),
typeof(MainFunctionSystem),
typeof(MainFunctionInfo),
typeof(ChatSystem),
typeof(NatureVfxEffect),
typeof(UIPlayerSkinCompoent),
typeof(EquipmentSystem),
typeof(UIAnimationModule),
typeof(Equipment),
typeof(ImmortalEquip),
//typeof(UISelectEquipItem),
typeof(GameSetting),
typeof(GameSettingKeyCode),
typeof(HeartSystem),
typeof(SDKSystem),
typeof(MsgInfoBase),
typeof(MsgPromptInfo),
typeof(MsgBoxInfo),
typeof(MsgBoxSelectInfo),
typeof(Character),
typeof(Entity),
typeof(ForwardRoter),
typeof(TimerEventSystem),
typeof(LanguageConvertSystem),
typeof(VariableSystem),
typeof(HardwareManager),
typeof(IDeviceInfo),
typeof(IDiskInfo),
typeof(IMemoryInfo),
typeof(MapPathInfo.Position),
typeof(TaskBD.TaskTargetType),
typeof(WrapMode),
typeof(AnimationPartType),
typeof(AnimationCullingType),
typeof(WordFilter),
typeof(MyTweenPosition),
typeof(MyTweenPosition),
typeof(MonsterSoulEquipData),
typeof(Buff),
typeof(BuffSystem),
typeof(TimeTicker),
typeof(FuncellSDK),
typeof(FSkinModelConfig),
typeof(PostEffectManager),
typeof(VideoManager),
typeof(AnimationPlayer),
typeof(Animator),
typeof(UIVideoPlayUtils),
typeof(HolyEquip),
typeof(DynamicBlockerManager),
typeof(UIVfxSkinCompoent),
typeof(AudioPlayer),
typeof(UpdateSystem),
//typeof(NoticeType),
typeof(AnimatorCullingMode),
typeof(RedPointCustomCondition),
typeof(RedPointItemCondition),
typeof(RedPointEquipCondition),
typeof(EntityStateID),
typeof(BattlePropTools),
typeof(VFXPlayState),
typeof(UnityUtils),
typeof(UIFormType),
typeof(MsgInfoPriority),
typeof(RoleBaseAttribute),
typeof(Delegate),
typeof(PlayerPropetry),
typeof(Screen),
typeof(RenderTexture),
typeof(UITweener),
typeof(MapLogicSwitch),
typeof(List<string>),
typeof(List<EventDelegate>),
typeof(List<Equipment>),
typeof(List<MSG_Equip.EquipPartInfo>),
typeof(List<MSG_Equip.EquipWashInfo>),
typeof(List<GameObject>),
typeof(List<AttribuiteData>),
typeof(List<MonsterSoulEquipData>),
typeof(List<HolyEquip>),
typeof(List<Renderer>),
typeof(Dictionary<int,bool>),
typeof(Dictionary<int,int>),
typeof(Dictionary<string,string>),
typeof(Dictionary<string, AppAssetFileInfo>),
typeof(Thousandto.CoreSDK.FuncellSDKDefault),
typeof(Thousandto.Code.Logic.WorldMapInfoManager),
typeof(Thousandto.Code.Logic.ImmortalResSystem),
typeof(UIInput),
typeof(UIPanel),
typeof(UIButtonColor),
typeof(UIWidgetContainer),
typeof(MSG_Equip.ResEquipPartInfo),
typeof(MSG_Equip.EquipPartInfo),
typeof(MSG_Equip.EquipStrengthInfo),
typeof(Thousandto.Cfg.Data.DeclareEquip),
typeof(MSG_Equip.gemPartInfo),
typeof(Thousandto.Core.Asset.AnimListBaseScript),
typeof(Thousandto.Plugins.Common.UniScene.BaseScene),
typeof(Thousandto.Plugins.Common.UIBaseFormAnimation),
typeof(UITable),
typeof(UISpriteAnimation),
typeof(UIFrameAnimation),
typeof(Thousandto.Plugins.Common.MonoCacheBase),
typeof(Thousandto.Code.Logic.AttribuiteData),
typeof(Thousandto.Cfg.Data.DeclareSoulBeasts),
typeof(SpringPanel),
typeof(System.Enum),
typeof(System.ValueType),
typeof(UIProgressBar),
typeof(Thousandto.Cfg.Data.DeclareItem),
typeof(UnityEngine.Camera.MonoOrStereoscopicEye),
typeof(UnityEngine.Camera.StereoscopicEye),
typeof(UnityEngine.Camera.GateFitParameters),
typeof(EventDelegate.Parameter),
typeof(UIWidget.AspectRatioSource),
typeof(UnityEngine.Camera.GateFitMode),
typeof(UILabel.Crispness),
typeof(UILabel.Overflow),
typeof(UILabel.Effect),
typeof(UIInput.OnReturnKey),
typeof(UIInput.KeyboardType),
typeof(UIInput.Validation),
typeof(UIInput.InputType),
typeof(UIPanel.RenderQueue),
typeof(UIButtonColor.State),
typeof(UIBasicSprite.Flip),
typeof(UIBasicSprite.AdvancedType),
typeof(UIBasicSprite.FillDirection),
typeof(UIBasicSprite.Type),
typeof(UIRect.AnchorUpdate),
typeof(UITable.Sorting),
typeof(UITable.Direction),
typeof(UIGrid.Sorting),
typeof(UIGrid.Arrangement),
typeof(UIScrollView.ShowCondition),
typeof(UIScrollView.DragEffect),
typeof(UIScrollView.Movement),
typeof(UICamera.EventType),
typeof(UICamera.ClickNotification),
typeof(UICamera.ControlScheme),
typeof(UIProgressBar.FillDirection),
//typeof(Thousandto.Code.Logic.GuildRepertorySystem.PopQulityItem),
//typeof(Thousandto.Code.Logic.GuildRepertorySystem.PopLevelItem),
typeof(UICamera.Touch),
typeof(UICamera.MouseOrTouch),
typeof(MsgBoxButton),
typeof(UISpriteData),
typeof(ChatPrivateSystem),
typeof(TweenAlpha),
typeof(UnityEngine.BoxCollider),
typeof(UnityEngine.Collider),
typeof(System.Delegate),
typeof(System.Runtime.CompilerServices.ExtensionAttribute),
typeof(System.ParamArrayAttribute),
typeof(System.ObsoleteAttribute),
typeof(System.Nullable),
typeof(System.Array),
typeof(System.Decimal),
typeof(Thousandto.Cfg.Data.DeclareFunctionStart),
typeof(Thousandto.Code.Logic.MsgMarqueeInfo),
typeof(Thousandto.Code.Logic.Npc),
typeof(UIRect.AnchorPoint),
typeof(SlotUtils),
typeof(Slot),
typeof(SlotNameDefine),
typeof(PreLoadAssetInfo),
typeof(UIShandowPlane),
typeof(UIPanelShadowTexture),
typeof(CacheSceneSystem),
typeof(LogicAdaptor),
typeof(ReconnectSystem),
typeof(Thousandto.Code.Logic.LocalPlayerBT.PlayerBT),
typeof(BISystem),
typeof(UISceneManager),
typeof(IUIScene),
typeof(Thousandto.Core.Asset.TimelineInfo),
typeof(Thousandto.Core.Asset.TimelinePlayer),
typeof(TimelineSystem),
typeof(PlayableDirector),
typeof(TimelinePlayState),
typeof(PlayableAsset),
typeof(CastList),
typeof(PrefabAssetManager),
typeof(UIPoolAssetsLoader),
typeof(Thousandto.Launcher.Form.UIClearCachePanelScript),
typeof(MSG_Friend.CommonInfo),
typeof(iTween),
typeof(FAssetBase),
typeof(FGameObjectBase),
typeof(FGameObject),
typeof(FGameObjectModel),
typeof(FGameObjectAnim),
typeof(FGameObjectVFX),
typeof(FSkinBase),
typeof(FSkinModel),
typeof(FSkinPartBase),
typeof(MSG_BI.Device),
typeof(Thousandto.CoreSDK.SDKCacheData),
typeof(CoroutinePool),
typeof(LuaCoroutineUtils),
typeof(LocalPlayerRoot),
typeof(CombatUtil),
typeof(FrameMonitor),
typeof(DropAscriptionSystem),
typeof(ITaskManager),
typeof(ITaskController),
typeof(SkillSelectFiledManager),
typeof(InputSystem),
typeof(JoystickHandler),
typeof(RollDodgeHandler),
typeof(MathLib),
typeof(FPlayerAnimRelation),
typeof(Npc),
typeof(Monster),
typeof(Collection),
typeof(FlySword),
typeof(LocalFlySword),
typeof(Pet),
typeof(LocalPet),
typeof(RemotePlayer),
typeof(RemotePlayerProperty),
typeof(NpcProperty),
typeof(MonsterProperty),
typeof(FlySwordProperty),
typeof(CollectionPropterty),
typeof(PetProperty),
typeof(ShaderManager),
typeof(IPlayerVisualInfo),
typeof(SpawnPoolNameCode),
typeof(SkillManager),
typeof(PlayerBDState),
typeof(UseSkillBD),
typeof(TaskBD),
typeof(StrideMapMoveBD),
typeof(TalkToNpcBD),
typeof(CollectBD),
typeof(FightBossBD),
typeof(CrossMapBD),
typeof(SceneRestoreSystem),
typeof(IGuideSystem),
typeof(IBlockingUpPromptSystem),
typeof(MessageDef),
typeof(Message),
typeof(MessageId),
typeof(MaterialManager),
typeof(Shader),
typeof(TexSyncUtils),
//定义MagicCube中的类
typeof(PathUtils),
typeof(FLogUploader),
typeof(FLanguage),
typeof(EventConstDefine),
typeof(AppPersistData),
typeof(MachineUUID),
typeof(AppManager),
typeof(AppAssetFileInfo),
typeof(HTTPRequest),
typeof(HTTPResponse),
typeof(Uri),
typeof(HTTPMethods),
typeof(AssemblyUtils),
//定义的专门用于Lua调用的类
typeof(LuaUnityUtility),
typeof(LuaAssetUtils),
typeof(LuaBehaviour),
typeof(LuaUISutureTextureData),
typeof(UILuaForm),
typeof(UIExtendLuaForm),
typeof(LuaFGameObjectVFX),
typeof(LuaFGameObjectModel),
typeof(LuaFGameObjectAnim),
typeof(LuaFSkinModel),
typeof(LuaFSkinPartBase),
typeof(LuaCharacter),
typeof(LuaCharStateData),
typeof(LuaCharState),
typeof(LuaItemBase),
//反射的相关类
typeof(System.Reflection.MemberInfo),
typeof(System.Reflection.MethodInfo),
typeof(System.Reflection.PropertyInfo),
typeof(System.Reflection.FieldInfo),
typeof(System.Reflection.MemberFilter),
typeof(System.Reflection.BindingFlags),
};
//C#静态调用Lua的配置包括事件的原型仅可以配delegateinterface
[CSharpCallLua]
public static List<Type> CSharpCallLua = new List<Type>() {
//delegate
typeof(Action),
typeof(MyAction),
typeof(MyAction<int>),
typeof(MyAction<bool>),
typeof(MyAction<FGameObjectBase>),
typeof(Func<FGameObjectModel>),
typeof(Func<int,FGameObjectModel>),
typeof(Func<FGameObject, bool>),
typeof(Func<FGameObjectModel, ModelTypeCode, int, bool, FGameObjectModel>),
typeof(MyAction<FSkinPartBase>),
typeof(Func<int, MyAction<FSkinPartBase>, FSkinPartBase>),
typeof(Action<FSkinBase, FSkinPartBase>),
typeof(MyAction<VideoInfo>),
typeof(MyAction<TextureInfo>),
typeof(MyAction<MsgBoxResultCode>),
typeof(MyAction<MsgBoxIsSelect>),
typeof(MyAction<int, bool>),
typeof(MyAction<Thousandto.Core.Asset.TimelineInfo>),
typeof(Action<string>),
typeof(Action<int>),
typeof(Action<double>),
typeof(Action<float>),
typeof(Action<bool>),
typeof(Action<string,GameObject>),
typeof(Action<string,string[]>),
typeof(Action<int,string,double,double>),
typeof(Action<int, string>),
typeof(Action<GameObject>),
typeof(Action<GameObject,bool>),
typeof(Action<FGameObjectBase>),
typeof(Action<int, double, object>),
typeof(Action<FSkinBase, int>),
typeof(Action<List<MSG_Friend.CommonInfo>>),
typeof(Action<Character>),
typeof(Action<LuaCharInitInfo>),
typeof(Action<UnityEngine.AsyncOperation>),
typeof(Func<double, double, double>),
typeof(Func<PreLoadAssetInfo[]>),
typeof(Func<bool>),
typeof(UnityEngine.Events.UnityAction),
typeof(LuaUpdateDelegate),
typeof(LuaUpdatePlussDelegate),
typeof(DoResMessageDelegate),
typeof(EventDelegate.Callback),
typeof(CheckUILuaDelegate),
typeof(NoParamesReturnBool),
typeof(IsRenewForm),
typeof(UILoopScrollViewBase.OnItemChange),
typeof(UIPlayerBagItem.BagItemDelegate),
typeof(EventSystemHandler),
typeof(System.Collections.IEnumerator),
typeof(EnterSceneDelegate),
typeof(ShowItemTipsDelegate),
typeof(ShowItemTipsByidDelegate),
typeof(LeaveSceneDelegate),
typeof(ParmesIntReturnInt),
typeof(ParamFloatNoReturn),
typeof(OnGameMessageDelagate),
typeof(ClientGMDelagate),
typeof(ParamPlayerHeadNoReturn),
typeof(SetPlayerLevelDelagate),
typeof(ParmesIntIntReturnItemBase),
typeof(UIEventListener.KeyCodeDelegate),
typeof(UIEventListener.ObjectDelegate),
typeof(UIEventListener.VectorDelegate),
typeof(UIEventListener.FloatDelegate),
typeof(UIEventListener.BoolDelegate),
typeof(UIEventListener.VoidDelegate),
typeof(FingerDownEventHandler),
typeof(FingerUpEventHandler),
typeof(PinchEventHandler),
typeof(RotationBeginEventHandler),
typeof(RotationMoveEventHandler),
typeof(RotationEndEventHandler),
typeof(FingerMoveEventHandler),
typeof(UIWidget.HitCheck),
typeof(UIWidget.OnDimensionsChanged),
typeof(UIWidget.OnPostFillCallback),
typeof(UIInput.OnValidate),
typeof(UIToggle.Validate),
typeof(UIPanel.OnRenderQueueChanged),
typeof(UIPanel.OnClippingMoved),
typeof(UIPanel.OnGeometryUpdated),
typeof(UITable.OnReposition),
typeof(UIGrid.OnReposition),
typeof(UIScrollView.OnDragNotification),
typeof(SpringPanel.OnFinished),
typeof(UICamera.GetTouchCallback),
typeof(UICamera.GetTouchCountCallback),
typeof(Camera.CameraCallback),
typeof(UICamera.KeyCodeDelegate),
typeof(UICamera.ObjectDelegate),
typeof(UICamera.VectorDelegate),
typeof(UICamera.FloatDelegate),
typeof(UICamera.BoolDelegate),
typeof(UICamera.VoidDelegate),
typeof(UICamera.MoveDelegate),
typeof(UICamera.OnSchemeChange),
typeof(UICamera.OnCustomInput),
typeof(UICamera.OnScreenResize),
typeof(UICamera.GetAnyKeyFunc),
typeof(UICamera.GetAxisFunc),
typeof(UICamera.GetKeyStateFunc),
typeof(UIProgressBar.OnDragFinished),
typeof(Thousandto.GameUI.Form.UIItem.UIItemDelegate),
typeof(Thousandto.Code.Logic.BaseProperty.BattlePropertyChange),
typeof(Thousandto.Code.Logic.BaseProperty.BasePropertyChange),
typeof(NoParamesReturnBool),
typeof(NoParamesReturnInt),
typeof(NoParamesReturnUintArr),
typeof(NoParamesReturnStringArr),
typeof(NoParamesReturnString),
typeof(LuaItemBase.NoParamesReturnUInt),
typeof(ParmesIntReturnInt),
typeof(ParmesIntReturnBool),
typeof(DoFunctionCallBackDelegate),
typeof(FunctionOpenedDelegate),
typeof(GetVariableShowTextDelegate),
typeof(GetVariableShowProgressDelegate),
typeof(IsVariableReachDelegate),
typeof(GetVariableValueDelegate),
typeof(ParamFuncNoReturn),
typeof(NoParamNoReturn),
typeof(ParamTransformNoReturn),
typeof(ParamIntReturnString),
typeof(NoParamReturnTable),
typeof(AddShowNewItemDelegate),
typeof(AddUseNewItemDelegate),
typeof(RefreshPlayerSkinModelDelegate),
typeof(OpenNpcTalkDelegate),
typeof(BindLuaCharacterDelegate),
typeof(ParmesIntIntReturnInt),
typeof(IsTeamMemberDelegate),
typeof(GetDressHolyEquipDelagate),
typeof(GetMandateSkillListDelagate),
typeof(SetFlySwordSkillDelagate),
typeof(TranslateAnimNameDelegate),
typeof(ParamRefRenderListNoReturn),
typeof(ParamStringRefWrapModeReturnString),
typeof(Func<string, bool>),
typeof(Func<string, bool, Transform>),
typeof(Func<ModelTypeCode, int, int>),
typeof(MyFunc<string, bool, bool, int, SpawnPoolNameCode, bool>),
typeof(Action<FGameObject>),
typeof(Action<FGameObject,FGameObject>),
typeof(Func<Transform, bool>),
typeof(Action<int, bool>),
typeof(Func<Shader, Shader>),
typeof(Func<Shader, Shader>),
typeof(Func<ulong,IPlayerVisualInfo>),
typeof(Func<FSkinTypeCode,FSkinModel>),
typeof(Func<String, int>),
typeof(Func<Shader,ModelTypeCode,int,Shader>),
typeof(OnRequestFinishedDelegate),
typeof(OnDownloadProgressDelegate),
typeof(OnUploadProgressDelegate),
};
public static List<Type> BlackGenericTypeList = new List<Type>()
{
typeof(Span<>),
typeof(ReadOnlySpan<>),
};
private static bool IsBlacklistedGenericType(Type type)
{
if (!type.IsGenericType) return false;
return BlackGenericTypeList.Contains(type.GetGenericTypeDefinition());
}
[BlackList] public static Func<MemberInfo, bool> GenericTypeFilter = (memberInfo) =>
{
switch (memberInfo)
{
case PropertyInfo propertyInfo:
return IsBlacklistedGenericType(propertyInfo.PropertyType);
case ConstructorInfo constructorInfo:
return constructorInfo.GetParameters().Any(p => IsBlacklistedGenericType(p.ParameterType));
case MethodInfo methodInfo:
return methodInfo.GetParameters().Any(p => IsBlacklistedGenericType(p.ParameterType));
default:
return false;
}
};
/** 黑名单,不需要生成wrap文件的数据
* 说明:
* 类名称,函数名称,函数参数类型(命名空间,类名)
*/
[BlackList]
public static List<List<string>> BlackList = new List<List<string>>() {
new List<string>(){"System.Xml.XmlNodeList", "ItemOf"},
new List<string>(){"UnityEngine.WWW", "movie"},
#if UNITY_WEBGL
new List<string>(){"UnityEngine.WWW", "threadPriority"},
#endif
new List<string>(){"UnityEngine.Texture2D", "alphaIsTransparency"},
new List<string>(){"UnityEngine.Security", "GetChainOfTrustValue"},
new List<string>(){"UnityEngine.CanvasRenderer", "onRequestRebuild"},
new List<string>(){"UnityEngine.Light", "areaSize"},
new List<string>(){"UnityEngine.Light", "lightmapBakeType"},
new List<string>(){"UnityEngine.Light", "SetLightDirty"},
new List<string>(){"UnityEngine.Light", "shadowRadius"},
new List<string>(){"UnityEngine.Light", "shadowAngle"},
new List<string>(){"UnityEngine.WWW", "MovieTexture"},
new List<string>(){"UnityEngine.WWW", "GetMovieTexture"},
new List<string>(){"UnityEngine.AnimatorOverrideController", "PerformOverrideClipListCleanup"},
#if !UNITY_WEBPLAYER
new List<string>(){"UnityEngine.Application", "ExternalEval"},
#endif
new List<string>(){"UnityEngine.GameObject", "networkView"}, //4.6.2 not support
new List<string>(){"UnityEngine.Component", "networkView"}, //4.6.2 not support
new List<string>(){"UnityEngine.MonoBehaviour", "runInEditMode"},
new List<string>(){"UnityEngine.Texture", "imageContentsHash"},
new List<string>(){"UnityEngine.Input", "IsJoystickPreconfigured","System.String"},
new List<string>(){"UnityEngine.Input", "location"},
new List<string>(){"UnityEngine.SystemInfo", "supportsLocationService"},
new List<string>(){"UIWidget", "showHandlesWithMoveTool"},
new List<string>(){"UIWidget", "showHandles"},
new List<string>(){"UIInput", "ProcessEvent", "UnityEngine.Event"},
new List<string>(){"UILabel", "text", "System.String"},
new List<string>(){"System.IO.FileInfo", "GetAccessControl",
"System.Security.AccessControl.AccessControlSections" },
new List<string>(){"System.IO.FileInfo", "SetAccessControl",
"System.Security.AccessControl.FileSecurity" },
new List<string>(){"System.IO.DirectoryInfo", "GetAccessControl",
"System.Security.AccessControl.AccessControlSections" },
new List<string>(){"System.IO.DirectoryInfo", "SetAccessControl",
"System.Security.AccessControl.DirectorySecurity" },
new List<string>(){"System.IO.DirectoryInfo", "CreateSubdirectory",
"System.String", "System.Security.AccessControl.DirectorySecurity"},
new List<string>(){"System.IO.DirectoryInfo", "Create",
"System.Security.AccessControl.DirectorySecurity" },
new List<string>(){"System.IO.File", "Create",
"System.String",
"System.Int32",
"System.IO.FileOptions" },
new List<string>(){"System.IO.File", "Create",
"System.String",
"System.Int32",
"System.IO.FileOptions",
"System.Security.AccessControl.FileSecurity" },
new List<string>(){"System.IO.File", "GetAccessControl",
"System.String" },
new List<string>(){"System.IO.File", "GetAccessControl",
"System.String",
"System.Security.AccessControl.AccessControlSections" },
new List<string>(){"System.IO.File", "SetAccessControl",
"System.String",
"System.Security.AccessControl.FileSecurity" },
new List<string>(){ "System.Reflection.FieldInfo", "GetValueDirect", "System.TypedReference"},
new List<string>(){ "System.Reflection.FieldInfo", "SetValueDirect", "System.TypedReference", "System.Object"},
new List<string>(){"System.Type", "IsCollectible"},
new List<string>(){"System.Type", "MakeGenericSignatureType"},
new List<string>(){"UnityEngine.Physics","ContactModifyEvent"},
new List<string>(){"UnityEngine.Physics","ContactModifyEventCCD"},
new List<string>(){"UnityEngine.Physics","ContactEvent"},
};
//static bool hasGenericParameter(Type type)
//{
// if (type.IsGenericTypeDefinition) return true;
// if (type.IsGenericParameter) return true;
// if (type.IsByRef || type.IsArray)
// {
// return hasGenericParameter(type.GetElementType());
// }
// if (type.IsGenericType)
// {
// foreach (var typeArg in type.GetGenericArguments())
// {
// if (hasGenericParameter(typeArg))
// {
// return true;
// }
// }
// }
// return false;
//}
//// 配置某Assembly下所有涉及到的delegate到CSharpCallLua下Hotfix下拿不准那些delegate需要适配到lua function可以这么配置
//[CSharpCallLua]
//static IEnumerable<Type> AllDelegate
//{
// get
// {
// BindingFlags flag = BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public;
// List<Type> allTypes = new List<Type>();
// var allAssemblys = new Assembly[]
// {
// Assembly.Load("Assembly-CSharp")
// };
// foreach (var t in (from assembly in allAssemblys from type in assembly.GetTypes() select type))
// {
// var p = t;
// while (p != null)
// {
// allTypes.Add(p);
// p = p.BaseType;
// }
// }
// allTypes = allTypes.Distinct().ToList();
// var allMethods = from type in allTypes
// from method in type.GetMethods(flag)
// select method;
// var returnTypes = from method in allMethods
// select method.ReturnType;
// var paramTypes = allMethods.SelectMany(m => m.GetParameters()).Select(pinfo => pinfo.ParameterType.IsByRef ? pinfo.ParameterType.GetElementType() : pinfo.ParameterType);
// var fieldTypes = from type in allTypes
// from field in type.GetFields(flag)
// select field.FieldType;
// return (returnTypes.Concat(paramTypes).Concat(fieldTypes)).Where(t => t.BaseType == typeof(MulticastDelegate) && !hasGenericParameter(t)).Distinct();
// }
//}
}