示例#1
0
        private void ChangeMesh(MeshDataAssetReference oldMesh, MeshDataAssetReference newMesh)
        {
            MeshChangeAction action;

            //If mesh is null but value is an instance,
            //we assume we are setting a new mesh
            if (oldMesh == null && newMesh is MeshDataAssetReference)
            {
                action = MeshChangeAction.New;
            }
            //else if old mesh is an instance, but we are nulling it
            //we assume it means remove
            else if (oldMesh is MeshDataAssetReference && newMesh == null)
            {
                action = MeshChangeAction.Remove;
            }
            //If none of the above applies we assume its a
            //change from one to another
            else
            {
                action = MeshChangeAction.Change;
            }
            //Trigger change event
            MeshChanged?.Invoke(this, new MeshChangedArgs(oldMesh, newMesh, action));
        }
示例#2
0
        public override void Deserialize(XElement data)
        {
            var    meshReference  = data.Element("MeshDataReference");
            string assetUriString = meshReference.Value;
            Uri    assetUri       = new Uri(assetUriString);
            var    meshRef        = AssetCache.DefaultInstance.Load <MeshDataAssetReference>(assetUri);

            //Assign directly to backing field, no need to tringe change mesh
            //as deserialize is just called on new entities and they will have their mesh loaded
            //on parent entity insertion into scenegraph
            mesh = meshRef;
        }
示例#3
0
 public MeshChangedArgs(MeshDataAssetReference oldMesh, MeshDataAssetReference newMesh, MeshChangeAction action)
 {
     Old    = oldMesh;
     New    = newMesh;
     Action = action;
 }