Пример #1
0
        public T GetResource <T>(string name, bool sendEventOnFailure = true) where T : Resource
        {
            var typeHash          = new StringHash(typeof(T).Name);
            var componentInstance = Urho3D__ResourceCache__GetResource_Urho3D__StringHash_Urho3D__String_const__bool_(NativeInstance, typeHash.Hash, name, sendEventOnFailure);

            return(InstanceCache.GetOrAdd(componentInstance, ptr => {
                Type type = typeof(T);
                return (T)Activator.CreateInstance(type, BindingFlags.NonPublic | BindingFlags.Instance, null, new object[] { ptr, false }, null);
            }));
        }
Пример #2
0
        public T GetComponent <T>(bool recursive = false) where T : Component
        {
            var componentInstance = Urho3D__Node__GetComponent_Urho3D__StringHash_bool__const(NativeInstance, StringHash.Calculate(typeof(T).Name), recursive);

            if (componentInstance == IntPtr.Zero)
            {
                return(default(T));
            }
            return(InstanceCache.GetOrAdd(componentInstance, ptr => (T)Activator.CreateInstance(typeof(T),
                                                                                                BindingFlags.NonPublic | BindingFlags.Instance, null, new object[] { ptr, false }, null)));
        }
Пример #3
0
        public T CreateComponent <T>(CreateMode mode = CreateMode.REPLICATED, uint id = 0) where T : Component
        {
            var componentInstance = Urho3D__Node__CreateComponent_Urho3D__StringHash_Urho3D__CreateMode_unsigned_int_(NativeInstance, StringHash.Calculate(typeof(T).Name), mode, id);

            if (componentInstance == IntPtr.Zero)
            {
                return(default(T));
            }
            return(InstanceCache.GetOrAdd(componentInstance, ptr => (T)Activator.CreateInstance(typeof(T),
                                                                                                BindingFlags.NonPublic | BindingFlags.Instance,
                                                                                                null, new object[] { ptr, false }, null)));
        }
Пример #4
0
 internal static StringVector __FromPInvoke(IntPtr source)
 {
     return(InstanceCache.GetOrAdd <StringVector>(source, ptr => new StringVector(ptr)));
 }
Пример #5
0
 internal static StringVector __FromPInvoke(IntPtr source, bool ownsInstnace)
 {
     return(InstanceCache.GetOrAdd(source, ptr => new StringVector(ptr, ownsInstnace)));
 }
Пример #6
0
 internal static StringVector GetManagedInstance(IntPtr source, bool ownsInstnace)
 {
     return(InstanceCache.GetOrAdd(source, ptr => new StringVector(ptr, ownsInstnace)));
 }
Пример #7
0
 internal static VariantMap GetManagedInstance(IntPtr source, bool ownsNativeInstnace)
 {
     return(InstanceCache.GetOrAdd <VariantMap>(source, ptr => new VariantMap(ptr, ownsNativeInstnace)));
 }
Пример #8
0
 internal static VariantMap GetManagedInstance(IntPtr source, NativeObjectFlags flags = NativeObjectFlags.None)
 {
     return(InstanceCache.GetOrAdd(source, ptr => new VariantMap(ptr, flags)));
 }
Пример #9
0
 internal static VariantMap __FromPInvoke(IntPtr source)
 {
     return(InstanceCache.GetOrAdd <VariantMap>(source, ptr => new VariantMap(ptr)));
 }