Skip to content

Commit ee6a257

Browse files
committed
Update Rust 2021
1 parent 2a2d5a5 commit ee6a257

File tree

13 files changed

+235
-157
lines changed

13 files changed

+235
-157
lines changed

Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,5 @@ members = [
77
"unity-native-plugin-sample",
88
"unity-native-plugin-sample-profiler",
99
]
10+
resolver = "2"
11+

unity-native-plugin-sample-profiler/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
name = "unity-native-plugin-sample-profiler"
33
version = "0.7.0"
44
authors = ["Yasuhiro Taniuchi"]
5-
edition = "2018"
5+
edition = "2021"
66
publish = false
77

88
[lib]

unity-native-plugin-sample/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
name = "unity-native-plugin-sample"
33
version = "0.7.0"
44
authors = ["Yasuhiro Taniuchi"]
5-
edition = "2018"
5+
edition = "2021"
66
publish = false
77

88
[lib]

unity-native-plugin-sys/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
name = "unity-native-plugin-sys"
33
version = "0.7.0"
44
authors = ["Yasuhiro Taniuchi"]
5-
edition = "2018"
5+
edition = "2021"
66
license = "MIT"
77
description = "unity-native-plugin-sys"
88
homepage = "https://github.com/aosoft/unity-native-plugin-rs"

unity-native-plugin-tester/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
name = "unity-native-plugin-tester"
33
version = "0.7.0"
44
authors = ["Yasuhiro Taniuchi"]
5-
edition = "2018"
5+
edition = "2021"
66
license = "MIT"
77
description = "Unity Native Plugin API Tester Library"
88
homepage = "https://github.com/aosoft/unity-native-plugin-rs"

unity-native-plugin-tester/src/interface.rs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -114,16 +114,20 @@ extern "system" fn register_interface_split(
114114
}
115115

116116
pub unsafe fn get_unity_interfaces() -> &'static mut TesterContextInterfaces {
117-
UNITY_INTERFACES.as_mut().unwrap()
117+
unsafe {
118+
UNITY_INTERFACES.as_mut().unwrap()
119+
}
118120
}
119121

120122
pub unsafe fn get_unity_interface<T: UnityInterfaceBase + UnityInterfaceID>() -> &'static T {
121-
get_unity_interfaces()
122-
.get_interface(T::get_interface_guid())
123-
.unwrap()
124-
.as_any()
125-
.downcast_ref::<T>()
126-
.unwrap()
123+
unsafe {
124+
get_unity_interfaces()
125+
.get_interface(T::get_interface_guid())
126+
.unwrap()
127+
.as_any()
128+
.downcast_ref::<T>()
129+
.unwrap()
130+
}
127131
}
128132

129133
pub fn initialize_unity_interfaces() {

unity-native-plugin-vulkan/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ repository = "https://github.com/aosoft/unity-native-plugin-rs"
99
readme = "README.md"
1010
categories = ["api-bindings", "game-engines"]
1111
keywords = ["unity"]
12-
edition = "2018"
12+
edition = "2021"
1313
include = [
1414
"**/*.rs",
1515
"Cargo.toml",

unity-native-plugin-vulkan/src/vulkan.rs

Lines changed: 119 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,9 @@ impl VulkanInstance {
5151
name: *const std::os::raw::c_char,
5252
) -> PFN_vkVoidFunction {
5353
if let Some(f) = self.native.getInstanceProcAddr {
54-
(f)(self.native.instance, name)
54+
unsafe {
55+
(f)(self.native.instance, name)
56+
}
5557
} else {
5658
PFN_vkVoidFunction::None
5759
}
@@ -238,22 +240,26 @@ macro_rules! impl_vulkan {
238240
func: VulkanInitCallback,
239241
user_data: *mut ::std::os::raw::c_void,
240242
) {
241-
self.interface()
242-
.InterceptInitialization
243-
.expect("InterceptInitialization")(std::mem::transmute(func), user_data);
243+
unsafe {
244+
self.interface()
245+
.InterceptInitialization
246+
.expect("InterceptInitialization")(std::mem::transmute(func), user_data);
247+
}
244248
}
245249

246250
pub unsafe fn intercept_vulkan_api(
247251
&self,
248252
name: *const ::std::os::raw::c_char,
249253
func: ash::vk::PFN_vkVoidFunction,
250254
) -> ash::vk::PFN_vkVoidFunction {
251-
std::mem::transmute(self
252-
.interface()
253-
.InterceptVulkanAPI
254-
.expect("InterceptVulkanAPI")(
255-
name, std::mem::transmute(func)
256-
))
255+
unsafe {
256+
std::mem::transmute(self
257+
.interface()
258+
.InterceptVulkanAPI
259+
.expect("InterceptVulkanAPI")(
260+
name, std::mem::transmute(func)
261+
))
262+
}
257263
}
258264

259265
pub fn configure_event(&self, event_id: i32, plugin_event_config: &VulkanPluginEventConfig) {
@@ -302,22 +308,24 @@ macro_rules! impl_vulkan {
302308
access_flags: ash::vk::AccessFlags,
303309
access_mode: VulkanResourceAccessMode,
304310
) -> Option<VulkanImage> {
305-
let mut ret = std::mem::zeroed::<UnityVulkanImage>();
306-
if self.interface().AccessTexture.expect("AccessTexture")(
307-
native_texture,
308-
match sub_resource {
309-
Some(t) => std::mem::transmute(t),
310-
None => std::ptr::null(),
311-
},
312-
std::mem::transmute(layout),
313-
std::mem::transmute(pipeline_stage_flags),
314-
std::mem::transmute(access_flags),
315-
access_mode as UnityVulkanResourceAccessMode,
316-
std::mem::transmute(&mut ret),
317-
) {
318-
Some(VulkanImage { native: ret })
319-
} else {
320-
None
311+
unsafe {
312+
let mut ret = std::mem::zeroed::<UnityVulkanImage>();
313+
if self.interface().AccessTexture.expect("AccessTexture")(
314+
native_texture,
315+
match sub_resource {
316+
Some(t) => std::mem::transmute(t),
317+
None => std::ptr::null(),
318+
},
319+
std::mem::transmute(layout),
320+
std::mem::transmute(pipeline_stage_flags),
321+
std::mem::transmute(access_flags),
322+
access_mode as UnityVulkanResourceAccessMode,
323+
std::mem::transmute(&mut ret),
324+
) {
325+
Some(VulkanImage { native: ret })
326+
} else {
327+
None
328+
}
321329
}
322330
}
323331

@@ -330,25 +338,27 @@ macro_rules! impl_vulkan {
330338
access_flags: ash::vk::AccessFlags,
331339
access_mode: VulkanResourceAccessMode,
332340
) -> Option<VulkanImage> {
333-
let mut ret = std::mem::zeroed::<UnityVulkanImage>();
334-
if self
335-
.interface()
336-
.AccessRenderBufferTexture
337-
.expect("AccessRenderBufferTexture")(
338-
native_render_buffer,
339-
match sub_resource {
340-
Some(t) => std::mem::transmute(t),
341-
None => std::ptr::null(),
342-
},
343-
std::mem::transmute(layout),
344-
std::mem::transmute(pipeline_stage_flags),
345-
std::mem::transmute(access_flags),
346-
access_mode as UnityVulkanResourceAccessMode,
347-
std::mem::transmute(&mut ret),
348-
) {
349-
Some(VulkanImage { native: ret })
350-
} else {
351-
None
341+
unsafe {
342+
let mut ret = std::mem::zeroed::<UnityVulkanImage>();
343+
if self
344+
.interface()
345+
.AccessRenderBufferTexture
346+
.expect("AccessRenderBufferTexture")(
347+
native_render_buffer,
348+
match sub_resource {
349+
Some(t) => std::mem::transmute(t),
350+
None => std::ptr::null(),
351+
},
352+
std::mem::transmute(layout),
353+
std::mem::transmute(pipeline_stage_flags),
354+
std::mem::transmute(access_flags),
355+
access_mode as UnityVulkanResourceAccessMode,
356+
std::mem::transmute(&mut ret),
357+
) {
358+
Some(VulkanImage { native: ret })
359+
} else {
360+
None
361+
}
352362
}
353363
}
354364

@@ -361,25 +371,27 @@ macro_rules! impl_vulkan {
361371
access_flags: ash::vk::AccessFlags,
362372
access_mode: VulkanResourceAccessMode,
363373
) -> Option<VulkanImage> {
364-
let mut ret = std::mem::zeroed::<UnityVulkanImage>();
365-
if self
366-
.interface()
367-
.AccessRenderBufferResolveTexture
368-
.expect("AccessRenderBufferResolveTexture")(
369-
native_render_buffer,
370-
match sub_resource {
371-
Some(t) => std::mem::transmute(t),
372-
None => std::ptr::null(),
373-
},
374-
std::mem::transmute(layout),
375-
std::mem::transmute(pipeline_stage_flags),
376-
std::mem::transmute(access_flags),
377-
access_mode as UnityVulkanResourceAccessMode,
378-
std::mem::transmute(&mut ret),
379-
) {
380-
Some(VulkanImage { native: ret })
381-
} else {
382-
None
374+
unsafe {
375+
let mut ret = std::mem::zeroed::<UnityVulkanImage>();
376+
if self
377+
.interface()
378+
.AccessRenderBufferResolveTexture
379+
.expect("AccessRenderBufferResolveTexture")(
380+
native_render_buffer,
381+
match sub_resource {
382+
Some(t) => std::mem::transmute(t),
383+
None => std::ptr::null(),
384+
},
385+
std::mem::transmute(layout),
386+
std::mem::transmute(pipeline_stage_flags),
387+
std::mem::transmute(access_flags),
388+
access_mode as UnityVulkanResourceAccessMode,
389+
std::mem::transmute(&mut ret),
390+
) {
391+
Some(VulkanImage { native: ret })
392+
} else {
393+
None
394+
}
383395
}
384396
}
385397

@@ -390,17 +402,19 @@ macro_rules! impl_vulkan {
390402
access_flags: ash::vk::AccessFlags,
391403
access_mode: VulkanResourceAccessMode,
392404
) -> Option<VulkanImage> {
393-
let mut ret = std::mem::zeroed::<UnityVulkanImage>();
394-
if self.interface().AccessBuffer.expect("AccessTexture")(
395-
native_buffer,
396-
std::mem::transmute(pipeline_stage_flags),
397-
std::mem::transmute(access_flags),
398-
access_mode as UnityVulkanResourceAccessMode,
399-
std::mem::transmute(&mut ret),
400-
) {
401-
Some(VulkanImage { native: ret })
402-
} else {
403-
None
405+
unsafe {
406+
let mut ret = std::mem::zeroed::<UnityVulkanImage>();
407+
if self.interface().AccessBuffer.expect("AccessTexture")(
408+
native_buffer,
409+
std::mem::transmute(pipeline_stage_flags),
410+
std::mem::transmute(access_flags),
411+
access_mode as UnityVulkanResourceAccessMode,
412+
std::mem::transmute(&mut ret),
413+
) {
414+
Some(VulkanImage { native: ret })
415+
} else {
416+
None
417+
}
404418
}
405419
}
406420

@@ -427,7 +441,9 @@ macro_rules! impl_vulkan {
427441
user_data: *mut ::std::os::raw::c_void,
428442
flush: bool,
429443
) {
430-
self.interface().AccessQueue.expect("AccessQueue")(callback, event_id, user_data, flush);
444+
unsafe {
445+
self.interface().AccessQueue.expect("AccessQueue")(callback, event_id, user_data, flush);
446+
}
431447
}
432448

433449
pub fn configure_swapchain(&self, swapchain_config: &VulkanSwapchainConfiguration) -> bool {
@@ -447,25 +463,27 @@ macro_rules! impl_vulkan {
447463
access_flags: ash::vk::AccessFlags,
448464
access_mode: VulkanResourceAccessMode,
449465
) -> Option<VulkanImage> {
450-
let mut ret = std::mem::zeroed::<UnityVulkanImage>();
451-
if self
452-
.interface()
453-
.AccessTextureByID
454-
.expect("AccessTextureByID")(
455-
texture_id,
456-
match sub_resource {
457-
Some(t) => std::mem::transmute(t),
458-
None => std::ptr::null(),
459-
},
460-
std::mem::transmute(layout),
461-
std::mem::transmute(pipeline_stage_flags),
462-
std::mem::transmute(access_flags),
463-
access_mode as UnityVulkanResourceAccessMode,
464-
std::mem::transmute(&mut ret),
465-
) {
466-
Some(VulkanImage { native: ret })
467-
} else {
468-
None
466+
unsafe {
467+
let mut ret = std::mem::zeroed::<UnityVulkanImage>();
468+
if self
469+
.interface()
470+
.AccessTextureByID
471+
.expect("AccessTextureByID")(
472+
texture_id,
473+
match sub_resource {
474+
Some(t) => std::mem::transmute(t),
475+
None => std::ptr::null(),
476+
},
477+
std::mem::transmute(layout),
478+
std::mem::transmute(pipeline_stage_flags),
479+
std::mem::transmute(access_flags),
480+
access_mode as UnityVulkanResourceAccessMode,
481+
std::mem::transmute(&mut ret),
482+
) {
483+
Some(VulkanImage { native: ret })
484+
} else {
485+
None
486+
}
469487
}
470488
}
471489
}
@@ -492,13 +510,17 @@ macro_rules! impl_vulkan_v2 {
492510
func: VulkanInitCallback,
493511
user_data: *mut ::std::os::raw::c_void,
494512
priority: i32) -> bool {
495-
self.interface().AddInterceptInitialization.expect("AddInterceptInitialization")(std::mem::transmute(func), user_data, priority)
513+
unsafe {
514+
self.interface().AddInterceptInitialization.expect("AddInterceptInitialization")(std::mem::transmute(func), user_data, priority)
515+
}
496516
}
497517

498518
pub unsafe fn remove_intercept_initialization(
499519
&self,
500520
func: VulkanInitCallback) -> bool {
501-
self.interface().RemoveInterceptInitialization.expect("RemoveInterceptInitialization")(std::mem::transmute(func))
521+
unsafe {
522+
self.interface().RemoveInterceptInitialization.expect("RemoveInterceptInitialization")(std::mem::transmute(func))
523+
}
502524
}
503525
}
504526
}

unity-native-plugin/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ repository = "https://github.com/aosoft/unity-native-plugin-rs"
99
readme = "../README.md"
1010
categories = ["api-bindings", "game-engines"]
1111
keywords = ["unity"]
12-
edition = "2018"
12+
edition = "2021"
1313
include = [
1414
"**/*.rs",
1515
"Cargo.toml",

0 commit comments

Comments
 (0)