예제 #1
0
파일: CObject.cs 프로젝트: dvochin/Scripts
 //---------------------------------------------------------------------------	EVENTS
 public void Notify_PropertyValueChanged(CProp oProp, float nValueOld)
 {
     //###LEARN: How to implement events
     EventArgs_PropertyValueChanged oEventArgs = new EventArgs_PropertyValueChanged();
     oEventArgs.Property = oProp;
     oEventArgs.PropertyID = oProp._nPropEnumOrdinal;
     oEventArgs.PropertyName = oProp._sNameProp;
     oEventArgs.ValueNew = oProp._nValueLocal;
     oEventArgs.ValueOld = nValueOld;
     EventHandler<EventArgs_PropertyValueChanged> oHandler = Event_PropertyValueChanged;
     if (oHandler != null)
         oHandler(this, oEventArgs);
 }
예제 #2
0
    void Event_PropertyChangedValue(object sender, EventArgs_PropertyValueChanged oArgs)
    {
        // Fired everytime user adjusts a property.
        // 'Bake' the morphing mesh as per the player's morphing parameters into a 'MorphResult' mesh that can be serialized to Unity.  Matches Blender's CBodyBase.UpdateMorphResultMesh()
        Debug.LogFormat("CBodyBase updates body '{0}' because property '{1}' changed to value {2}", _sBodyPrefix, oArgs.PropertyName, oArgs.ValueNew);

        if (oArgs.Property._oObjectExtraFunctionality == null)
            oArgs.Property._oObjectExtraFunctionality = new CMorphChannel(this, oArgs.PropertyName);
        CMorphChannel oMorphChannel = oArgs.Property._oObjectExtraFunctionality as CMorphChannel;
        bool bMeshChanged = oMorphChannel.ApplyMorph(oArgs.ValueNew);
        if (bMeshChanged) {
            _oMeshMorphResult._oMeshNow.vertices = _oMeshMorphResult._memVerts.L;       //###IMPROVE: to some helper function?
            _oMeshMorphResult.UpdateNormals();							// Morphing invalidates normals... update
            _bParticlePositionsUpdated = true;                          // Flag Flex to perform an update of its particle positions...
        }
    }