mirror of
https://github.com/FyroxEngine/Fyrox.git
synced 2026-10-12 02:02:20 +00:00
renamed SceneGraphNode trait to NodeWrapper
- `SceneGraphNode` was implemented for types `struct Wrapper(Box<dyn NodeTrait>)` - calling such types node itself is wrong, because the actual node is stored inside the box
This commit is contained in:
@@ -79,7 +79,7 @@ use crate::{
|
||||
},
|
||||
};
|
||||
use fxhash::{FxBuildHasher, FxHashMap, FxHasher};
|
||||
use fyrox_graph::SceneGraphNode;
|
||||
use fyrox_graph::NodeWrapper;
|
||||
use fyrox_resource::manager::ResourceManager;
|
||||
use std::{
|
||||
fmt::{Debug, Formatter},
|
||||
|
||||
@@ -58,7 +58,7 @@ use crate::{
|
||||
},
|
||||
engine::SerializationContext,
|
||||
generic_animation::AnimationContainer,
|
||||
graph::{NodeHandleMap, NodeMapping, PrefabData, SceneGraph, SceneGraphNode},
|
||||
graph::{NodeHandleMap, NodeMapping, NodeWrapper, PrefabData, SceneGraph},
|
||||
resource::fbx::{self, error::FbxError},
|
||||
scene::{
|
||||
animation::Animation, base::SceneNodeId, graph::Graph, node::Node, transform::Transform,
|
||||
@@ -198,9 +198,9 @@ pub trait AnimationSource {
|
||||
/// Prefab type.
|
||||
type Prefab: PrefabData<Graph = Self::SceneGraph>;
|
||||
/// Scene graph type.
|
||||
type SceneGraph: SceneGraph<Node = Self::Node, Prefab = Self::Prefab>;
|
||||
type SceneGraph: SceneGraph<NodeWrapper = Self::Node, Prefab = Self::Prefab>;
|
||||
/// Scene node type.
|
||||
type Node: SceneGraphNode<SceneGraph = Self::SceneGraph, ResourceData = Self::Prefab>;
|
||||
type Node: NodeWrapper<SceneGraph = Self::SceneGraph, ResourceData = Self::Prefab>;
|
||||
|
||||
/// Returns a reference to an inner graph.
|
||||
fn inner_graph(&self) -> &Self::SceneGraph;
|
||||
|
||||
@@ -38,7 +38,7 @@ use crate::{
|
||||
visitor::prelude::*,
|
||||
BiDirHashMap, ImmutableString, SafeLock,
|
||||
},
|
||||
graph::{SceneGraph, SceneGraphNode},
|
||||
graph::{NodeWrapper, SceneGraph},
|
||||
scene::{
|
||||
self,
|
||||
collider::{self},
|
||||
|
||||
@@ -54,7 +54,7 @@ use crate::{
|
||||
reflect::prelude::*,
|
||||
visitor::{Visit, VisitResult, Visitor},
|
||||
},
|
||||
graph::{NodeHandleMap, SceneGraph, SceneGraphNode},
|
||||
graph::{NodeHandleMap, NodeWrapper, SceneGraph},
|
||||
material::{MaterialResourceBinding, MaterialTextureBinding},
|
||||
resource::model::{Model, ModelResource, ModelResourceExtension},
|
||||
scene::{
|
||||
@@ -2010,7 +2010,7 @@ impl Visit for Graph {
|
||||
|
||||
impl SceneGraph for Graph {
|
||||
type Prefab = Model;
|
||||
type Node = Node;
|
||||
type NodeWrapper = Node;
|
||||
|
||||
/// Create a brief debug summary of the contents of this graph.
|
||||
fn summary(&self) -> String {
|
||||
@@ -2020,35 +2020,39 @@ impl SceneGraph for Graph {
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn actual_type_id(&self, handle: Handle<Self::Node>) -> Result<TypeId, PoolError> {
|
||||
fn actual_type_id(&self, handle: Handle<Self::NodeWrapper>) -> Result<TypeId, PoolError> {
|
||||
self.pool
|
||||
.try_borrow(handle)
|
||||
.map(|n| NodeAsAny::as_any(n.0.deref()).type_id())
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn root(&self) -> Handle<Self::Node> {
|
||||
fn root(&self) -> Handle<Self::NodeWrapper> {
|
||||
self.root
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn set_root(&mut self, root: Handle<Self::Node>) {
|
||||
fn set_root(&mut self, root: Handle<Self::NodeWrapper>) {
|
||||
self.root = root;
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn is_valid_handle(&self, handle: Handle<impl ObjectOrVariant<Self::Node>>) -> bool {
|
||||
fn is_valid_handle(&self, handle: Handle<impl ObjectOrVariant<Self::NodeWrapper>>) -> bool {
|
||||
self.pool.is_valid_handle(handle)
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn add_node(&mut self, node: Self::Node) -> Handle<Self::Node> {
|
||||
fn add_node(&mut self, node: Self::NodeWrapper) -> Handle<Self::NodeWrapper> {
|
||||
let handle = self.pool.next_free_handle();
|
||||
self.add_node_at_handle(node, handle);
|
||||
handle
|
||||
}
|
||||
|
||||
fn add_node_at_handle(&mut self, mut node: Self::Node, handle: Handle<Self::Node>) {
|
||||
fn add_node_at_handle(
|
||||
&mut self,
|
||||
mut node: Self::NodeWrapper,
|
||||
handle: Handle<Self::NodeWrapper>,
|
||||
) {
|
||||
let children = node.children.clone();
|
||||
node.children.clear();
|
||||
let script_count = node.scripts.len();
|
||||
@@ -2085,7 +2089,7 @@ impl SceneGraph for Graph {
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn remove_node(&mut self, node_handle: Handle<impl ObjectOrVariant<Self::Node>>) {
|
||||
fn remove_node(&mut self, node_handle: Handle<impl ObjectOrVariant<Self::NodeWrapper>>) {
|
||||
let node_handle = node_handle.to_base();
|
||||
|
||||
self.isolate_node(node_handle);
|
||||
@@ -2110,8 +2114,8 @@ impl SceneGraph for Graph {
|
||||
#[inline]
|
||||
fn link_nodes(
|
||||
&mut self,
|
||||
child: Handle<impl ObjectOrVariant<Self::Node>>,
|
||||
parent: Handle<impl ObjectOrVariant<Self::Node>>,
|
||||
child: Handle<impl ObjectOrVariant<Self::NodeWrapper>>,
|
||||
parent: Handle<impl ObjectOrVariant<Self::NodeWrapper>>,
|
||||
) {
|
||||
let child = child.to_base();
|
||||
let parent = parent.to_base();
|
||||
@@ -2127,7 +2131,7 @@ impl SceneGraph for Graph {
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn unlink_node(&mut self, node_handle: Handle<impl ObjectOrVariant<Self::Node>>) {
|
||||
fn unlink_node(&mut self, node_handle: Handle<impl ObjectOrVariant<Self::NodeWrapper>>) {
|
||||
let node_handle = node_handle.to_base();
|
||||
self.isolate_node(node_handle);
|
||||
self.link_nodes(node_handle, self.root);
|
||||
@@ -2137,7 +2141,7 @@ impl SceneGraph for Graph {
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn isolate_node(&mut self, node_handle: Handle<impl ObjectOrVariant<Self::Node>>) {
|
||||
fn isolate_node(&mut self, node_handle: Handle<impl ObjectOrVariant<Self::NodeWrapper>>) {
|
||||
let node_handle = node_handle.to_base();
|
||||
// Replace parent handle of child
|
||||
let parent_handle = std::mem::replace(&mut self.pool[node_handle].parent, Handle::NONE);
|
||||
@@ -2155,42 +2159,51 @@ impl SceneGraph for Graph {
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn try_get_node(&self, handle: Handle<Self::Node>) -> Result<&Self::Node, PoolError> {
|
||||
fn try_get_node(
|
||||
&self,
|
||||
handle: Handle<Self::NodeWrapper>,
|
||||
) -> Result<&Self::NodeWrapper, PoolError> {
|
||||
self.pool.try_borrow(handle)
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn try_get_node_mut(
|
||||
&mut self,
|
||||
handle: Handle<Self::Node>,
|
||||
) -> Result<&mut Self::Node, PoolError> {
|
||||
handle: Handle<Self::NodeWrapper>,
|
||||
) -> Result<&mut Self::NodeWrapper, PoolError> {
|
||||
self.pool.try_borrow_mut(handle)
|
||||
}
|
||||
|
||||
fn derived_type_ids(&self, handle: Handle<Self::Node>) -> Result<Vec<TypeId>, PoolError> {
|
||||
fn derived_type_ids(
|
||||
&self,
|
||||
handle: Handle<Self::NodeWrapper>,
|
||||
) -> Result<Vec<TypeId>, PoolError> {
|
||||
self.pool
|
||||
.try_borrow(handle)
|
||||
.map(|n| Box::deref(&n.0).type_info_ref().derived_types.to_vec())
|
||||
}
|
||||
|
||||
fn actual_type_name(&self, handle: Handle<Self::Node>) -> Result<&'static str, PoolError> {
|
||||
fn actual_type_name(
|
||||
&self,
|
||||
handle: Handle<Self::NodeWrapper>,
|
||||
) -> Result<&'static str, PoolError> {
|
||||
self.pool
|
||||
.try_borrow(handle)
|
||||
.map(|n| n.0.deref().type_info_ref().type_name)
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn pair_iter(&self) -> impl Iterator<Item = (Handle<Self::Node>, &Self::Node)> {
|
||||
fn pair_iter(&self) -> impl Iterator<Item = (Handle<Self::NodeWrapper>, &Self::NodeWrapper)> {
|
||||
self.pool.pair_iter()
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn linear_iter(&self) -> impl Iterator<Item = &Self::Node> {
|
||||
fn linear_iter(&self) -> impl Iterator<Item = &Self::NodeWrapper> {
|
||||
self.pool.iter()
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn linear_iter_mut(&mut self) -> impl Iterator<Item = &mut Self::Node> {
|
||||
fn linear_iter_mut(&mut self) -> impl Iterator<Item = &mut Self::NodeWrapper> {
|
||||
self.pool.iter_mut()
|
||||
}
|
||||
|
||||
|
||||
@@ -78,7 +78,7 @@ use std::{
|
||||
};
|
||||
use strum_macros::{AsRefStr, EnumString, VariantNames};
|
||||
|
||||
use fyrox_graph::{SceneGraph, SceneGraphNode};
|
||||
use fyrox_graph::{NodeWrapper, SceneGraph};
|
||||
pub use rapier3d::geometry::shape::*;
|
||||
use rapier3d::math::{Pose3, Vec3};
|
||||
use rapier3d::parry::query::DefaultQueryDispatcher;
|
||||
|
||||
@@ -38,7 +38,7 @@ use crate::{
|
||||
visitor::{Visit, VisitResult, Visitor},
|
||||
NameProvider,
|
||||
},
|
||||
graph::SceneGraphNode,
|
||||
graph::NodeWrapper,
|
||||
renderer::bundle::RenderContext,
|
||||
resource::model::{Model, ModelResource},
|
||||
scene::{
|
||||
@@ -374,7 +374,7 @@ impl Clone for Node {
|
||||
}
|
||||
}
|
||||
|
||||
impl SceneGraphNode for Node {
|
||||
impl NodeWrapper for Node {
|
||||
type Base = Base;
|
||||
type SceneGraph = Graph;
|
||||
type ResourceData = Model;
|
||||
|
||||
@@ -54,7 +54,7 @@ use crate::{
|
||||
};
|
||||
use fxhash::FxHashMap;
|
||||
use fyrox_core::{ok_or_continue, warn};
|
||||
use fyrox_graph::SceneGraphNode;
|
||||
use fyrox_graph::NodeWrapper;
|
||||
use fyrox_material::Material;
|
||||
use fyrox_resource::ResourceData;
|
||||
use lightmap::light::{
|
||||
|
||||
Reference in New Issue
Block a user