コード例 #1
0
        public static void InitNodePinTypes(CodeGenerateSystem.Base.ConstructionParams smParam)
        {
            var splits    = smParam.ConstructParam.Split(',');
            var valueType = splits[0];

            CollectLinkPinInfo(smParam, "OutLink", LinkPinControl.GetLinkTypeFromTypeString(valueType), enBezierType.Right, enLinkOpType.Start, true);
        }
コード例 #2
0
ファイル: MakeList.xaml.cs プロジェクト: huangdonghai/titan3d
        public override bool CanLink(LinkPinControl linkPin, LinkPinControl pinInfo)
        {
            if (mOrigionType == typeof(string))
            {
                return(pinInfo.LinkType == enLinkType.String);
            }
            else if (mOrigionType != typeof(string) && mOrigionType.IsValueType && mOrigionType.IsPrimitive)
            {
                return((pinInfo.LinkType & enLinkType.NumbericalValue) == pinInfo.LinkType);
            }

            var type = EngineNS.Rtti.RttiHelper.GetTypeFromTypeFullName(pinInfo.ClassType);

            if (type == null)
            {
                return(false);
            }
            if (type == mOrigionType)
            {
                return(true);
            }
            if (type.IsSubclassOf(mOrigionType))
            {
                return(true);
            }

            return(true);
        }
コード例 #3
0
 void InitializeLinkControl(LASPChildBlendTimeNodeControlConstructionParams csParam)
 {
     mLinkInHandle = ValueIn;
     mLinkInHandle.OnAddLinkInfo += LinkInHandle_OnAddLinkInfo;
     mLinkInHandle.OnDelLinkInfo += LinkInHandle_OnDelLinkInfo;
     AddLinkPinInfo("LASPBlendTimeLinkInHandle", mLinkInHandle, null);
 }
コード例 #4
0
        public override CodeExpression GCode_CodeDom_GetValue(LinkPinControl element, GenerateCodeContext_Method context, GenerateCodeContext_PreNode preNodeContext = null)
        {
            var param   = CSParam as ExpandNodeChildConstructionParams;
            var expNode = ParentNode as ExpandNode;
            var tagExp  = expNode.GCode_CodeDom_GetValue(null, context, null);

            return(new CodePropertyReferenceExpression(tagExp, param.ParamName));
        }
コード例 #5
0
        public override CodeExpression GCode_CodeDom_GetValue(LinkPinControl element, GenerateCodeContext_Method context, GenerateCodeContext_PreNode preNodeContext = null)
        {
            var param = CSParam as MethodInvoke_DelegateControlConstructionParams;

            var lambdaExp = new CodeGenerateSystem.CodeDom.CodeLambdaExpression();

            lambdaExp.LambdaFieldName = "lambda_" + MethodName;

            var method          = param.ParamInfo.ParameterType.GetMethod("Invoke");
            var methodInvokeExp = new CodeGenerateSystem.CodeDom.CodeMethodInvokeExpression();

            methodInvokeExp.Method = new CodeMethodReferenceExpression(new CodeThisReferenceExpression(), MethodName);
            foreach (var methodParam in method.GetParameters())
            {
                var lambdaParam = new CodeGenerateSystem.CodeDom.CodeLambdaExpression.LambdaParam();
                if (methodParam.IsOut)
                {
                    lambdaParam.Dir  = FieldDirection.Out;
                    lambdaParam.Name = "__" + methodParam.Name;
                    lambdaExp.LambdaParams.Add(lambdaParam);
                }
                else if (methodParam.ParameterType.IsByRef)
                {
                    lambdaParam.Dir  = FieldDirection.Ref;
                    lambdaParam.Name = "__" + methodParam.Name;
                    lambdaExp.LambdaParams.Add(lambdaParam);
                }
                else
                {
                    lambdaParam.Dir  = FieldDirection.In;
                    lambdaParam.Name = "__" + methodParam.Name;
                    lambdaExp.LambdaParams.Add(lambdaParam);
                }
                methodInvokeExp.Parameters.Add(new CodeDirectionExpression(lambdaParam.Dir, new CodeVariableReferenceExpression(lambdaParam.Name)));
            }

            foreach (var child in mChildNodes)
            {
                // 获取连线参数的数值
                var paramNode = child as MethodInvokeParameterControl;
                var linkOI    = paramNode.ParamPin;
                var fromNode  = linkOI.GetLinkedObject(0, true);
                var exp       = fromNode.GCode_CodeDom_GetValue(linkOI.GetLinkedPinControl(0, true), context);
                methodInvokeExp.Parameters.Add(exp);
            }

            lambdaExp.MethodInvoke = methodInvokeExp;

            if (method.ReturnType != typeof(void))
            {
                lambdaExp.NeedReturn = true;
            }

            return(lambdaExp);
        }
コード例 #6
0
ファイル: ExpandNode.cs プロジェクト: huangdonghai/titan3d
 public override CodeExpression GCode_CodeDom_GetValue(LinkPinControl element, GenerateCodeContext_Method context, GenerateCodeContext_PreNode preNodeContext = null)
 {
     if (element == null || element == mCtrlTarget || element == mCtrlTargetOut)
     {
         return(mCtrlTarget.GetLinkedObject(0).GCode_CodeDom_GetValue(mCtrlTarget.GetLinkedPinControl(0), context, null));
     }
     else
     {
         throw new InvalidOperationException();
     }
 }
コード例 #7
0
 public override string GCode_GetTypeString(LinkPinControl element, GenerateCodeContext_Method context)
 {
     if (element == null || element == mCountOutPin)
     {
         return("System.Int32");
     }
     else
     {
         throw new InvalidOperationException();
     }
 }
コード例 #8
0
ファイル: MakeList.xaml.cs プロジェクト: huangdonghai/titan3d
        public override bool CanLink(LinkPinControl linkPin, LinkPinControl pinInfo)
        {
            if ((pinInfo.LinkType & enLinkType.Enumerable) != enLinkType.Enumerable)
            {
                return(false);
            }

            // todo: 类型判断
            //pinInfo.ClassType

            return(true);
        }
コード例 #9
0
 public override CodeExpression GCode_CodeDom_GetValue(LinkPinControl element, GenerateCodeContext_Method context, GenerateCodeContext_PreNode preNodeContext = null)
 {
     if (element == null || element == mCountOutPin)
     {
         var arrayValue = mArrayInPin.GetLinkedObject(0, true).GCode_CodeDom_GetValue(mArrayInPin.GetLinkedPinControl(0, true), context);
         return(new CodePropertyReferenceExpression(arrayValue, "Count"));
     }
     else
     {
         throw new InvalidOperationException();
     }
 }
コード例 #10
0
 public override bool CanLink(LinkPinControl selfLinkPin, LinkPinControl otherLinkPin)
 {
     if (selfLinkPin == mActiveLinkHandle)
     {
         var type = otherLinkPin.HostNodeControl.GCode_GetType(otherLinkPin, null);
         if (type.IsEnum)
         {
             return(true);
         }
         return(false);
     }
     return(true);
 }
コード例 #11
0
ファイル: MakeList.xaml.cs プロジェクト: huangdonghai/titan3d
 public override void RefreshFromLink(LinkPinControl pin, int linkIndex)
 {
     if (OrigionType == typeof(object))
     {
         if (pin == mArrayOutPin)
         {
             OrigionType = GetElementTypeFromArrayLink();
         }
         else
         {
             OrigionType = GetElementTypeFromElementChildren();
         }
     }
 }
コード例 #12
0
        protected override void EndLink(LinkPinControl linkObj)
        {
            bool alreadyLink = false;
            var  pinInfo     = GetLinkPinInfo("AnimStateLinkHandle");

            if (HostNodesContainer.StartLinkObj == linkObj)
            {
                //base.EndLink(null);
                if (HostNodesContainer.PreviewLinkCurve != null)
                {
                    HostNodesContainer.PreviewLinkCurve.Visibility = System.Windows.Visibility.Hidden;
                }
                return;
            }
            var count = pinInfo.GetLinkInfosCount();

            for (int index = 0; index < count; ++index)
            {
                AnimStateLinkInfoForUndoRedo undoRedoLinkInfo = new AnimStateLinkInfoForUndoRedo();
                var linkInfo = pinInfo.GetLinkInfo(index);
                if (linkInfo.m_linkFromObjectInfo == HostNodesContainer.StartLinkObj && linkInfo.m_linkToObjectInfo == linkObj)
                {
                    alreadyLink = true;
                    undoRedoLinkInfo.linkInfo = linkInfo as AnimStateLinkInfo;
                    NodesContainer.TransitionStaeBaseNodeForUndoRedo transCtrl = new NodesContainer.TransitionStaeBaseNodeForUndoRedo();
                    var redoAction = new Action <Object>((obj) =>
                    {
                        transCtrl.TransitionStateNode = undoRedoLinkInfo.linkInfo.AddTransition();
                    });
                    redoAction.Invoke(null);
                    EditorCommon.UndoRedo.UndoRedoManager.Instance.AddCommand(HostNodesContainer.HostControl.UndoRedoKey, null, redoAction, null,
                                                                              (obj) =>
                    {
                        undoRedoLinkInfo.linkInfo.RemoveTransition(transCtrl.TransitionStateNode);
                    }, "Create StateTransition");
                }

                if (HostNodesContainer.PreviewLinkCurve != null)
                {
                    HostNodesContainer.PreviewLinkCurve.Visibility = System.Windows.Visibility.Hidden;
                }
                //base.EndLink(null,false);
            }
            if (!alreadyLink)
            {
                base.EndLink(linkObj);
            }
        }
コード例 #13
0
        void InitializeLinkControl(LASelectPoseByIntControlConstructionParams csParam)
        {
            mActiveLinkHandle = ActiveValueHandle;

            mOutLinkHandle           = OutPoseHandle;
            mOutLinkHandle.MultiLink = false;

            mActiveLinkHandle.NameStringVisible = Visibility.Visible;
            mActiveLinkHandle.NameString        = "ActiveValue";
            mActiveLinkHandle.OnAddLinkInfo    += ActiveValueLinkHandle_OnAddLinkInfo;
            mActiveLinkHandle.OnDelLinkInfo    += ActiveValueLinkHandle_OnDelLinkInfo;


            AddLinkPinInfo("ActiveValueHandle", mActiveLinkHandle, null);

            AddLinkPinInfo("OutLinkHandle", mOutLinkHandle, null);
        }
コード例 #14
0
 public override void RefreshFromLink(LinkPinControl pin, int linkIndex)
 {
     if (ElementType == typeof(object))
     {
         if (pin == mArrayInPin)
         {
             var listType = pin.GetLinkedObject(0, true).GCode_GetType(pin.GetLinkedPinControl(0, true), null);
             ElementType = listType.GetGenericArguments()[0];
         }
         else if (pin == mValueInPin)
         {
             ElementType = pin.GetLinkedObject(0, true).GCode_GetType(pin.GetLinkedPinControl(0, true), null);
         }
         else
         {
             throw new InvalidOperationException();
         }
     }
 }
コード例 #15
0
        void InitializeLinkControl(LASelectPoseByBoolControlConstructionParams csParam)
        {
            mActiveLinkHandle                    = ActiveValueHandle;
            mTrueLinkHandle                      = TruePoseHandle;
            mFalseLinkHandle                     = FalsePoseHandle;
            mTrueBlendValueLinkHandle            = TrueBlendValueHandle;
            mFalseBlendValueLinkHandle           = FalseBlendValueHandle;
            mOutLinkHandle                       = OutPoseHandle;
            mTrueLinkHandle.MultiLink            = false;
            mFalseBlendValueLinkHandle.MultiLink = false;
            mTrueBlendValueLinkHandle.MultiLink  = false;
            mFalseBlendValueLinkHandle.MultiLink = false;
            mOutLinkHandle.MultiLink             = false;

            mActiveLinkHandle.NameStringVisible = Visibility.Visible;
            mActiveLinkHandle.NameString        = "ActiveValue";
            mActiveLinkHandle.OnAddLinkInfo    += BoolValueLinkHandle_OnAddLinkInfo;
            mActiveLinkHandle.OnDelLinkInfo    += BoolValueLinkHandle_OnDelLinkInfo;

            mTrueLinkHandle.NameStringVisible  = Visibility.Visible;
            mTrueLinkHandle.NameString         = "TruePose";
            mFalseLinkHandle.NameStringVisible = Visibility.Visible;
            mFalseLinkHandle.NameString        = "FalsePose";

            mTrueBlendValueLinkHandle.NameStringVisible = Visibility.Visible;
            mTrueBlendValueLinkHandle.NameString        = "TrueBlendTime";
            TrueBlendTextBlock.Visibility            = Visibility.Visible;
            mTrueBlendValueLinkHandle.OnAddLinkInfo += TrueBlendValueLinkHandle_OnAddLinkInfo;
            mTrueBlendValueLinkHandle.OnDelLinkInfo += TrueBlendValueLinkHandle_OnDelLinkInfo;

            mFalseBlendValueLinkHandle.NameStringVisible = Visibility.Visible;
            mFalseBlendValueLinkHandle.NameString        = "FalseBlendTime";
            FalseBlendTextBlock.Visibility            = Visibility.Visible;
            mFalseBlendValueLinkHandle.OnAddLinkInfo += FalseBlendValueLinkHandle_OnAddLinkInfo;
            mFalseBlendValueLinkHandle.OnDelLinkInfo += FalseBlendValueLinkHandle_OnDelLinkInfo;

            AddLinkPinInfo("ActiveValueHandle", mActiveLinkHandle, null);
            AddLinkPinInfo("TrueLinkHandle", mTrueLinkHandle, null);
            AddLinkPinInfo("FalseLinkHandle", mFalseLinkHandle, null);
            AddLinkPinInfo("TrueBlendValueLinkHandle", mTrueBlendValueLinkHandle, null);
            AddLinkPinInfo("FalseBlendValueLinkHandle", mFalseBlendValueLinkHandle, null);
            AddLinkPinInfo("OutLinkHandle", mOutLinkHandle, null);
        }
コード例 #16
0
 public override Type GCode_GetType(LinkPinControl element, CodeGenerateSystem.Base.GenerateCodeContext_Method context)
 {
     if (element == null || element == mCountOutPin)
     {
         return(typeof(Int32));
     }
     else if (element == mArrayInPin)
     {
         if (mArrayInPin.HasLink)
         {
             return(mArrayInPin.GetLinkedObject(0).GCode_GetType(mArrayInPin.GetLinkedPinControl(0), context));
         }
         return(typeof(object));
     }
     else
     {
         throw new InvalidOperationException();
     }
 }
コード例 #17
0
        void _OnNodeListItemSelected(NodeListAttributeClass item)
        {
            IsOpenContextMenu = false;
            var node = CreateNodeFromNodeListItem(item, mContextMenuOpenMousePos);

            if (node != null && item.FilterData.StartLinkObj != null)
            {
                var nodePins = node.GetLinkPinInfos();

                LinkPinControl nodeLink = null;
                foreach (var pin in nodePins)
                {
                    if (pin.Visibility != Visibility.Visible)
                    {
                        continue;
                    }
                    if (CodeGenerateSystem.Base.LinkInfo.CanLinkWith(item.FilterData.StartLinkObj, pin))
                    {
                        nodeLink = pin;
                        break;
                    }
                }
                if (nodeLink != null)
                {
                    if (nodeLink.Visibility == Visibility.Visible)
                    {
                        LinkPinControl startLink, endLink;
                        if (item.FilterData.StartLinkObj.LinkOpType == enLinkOpType.Start)
                        {
                            startLink = item.FilterData.StartLinkObj;
                            endLink   = nodeLink;
                        }
                        else
                        {
                            startLink = nodeLink;
                            endLink   = item.FilterData.StartLinkObj;
                        }
                        var linkInfo = LinkInfo.CreateLinkInfo(nodeLink.LinkCurveType, MainDrawCanvas, startLink, endLink);
                    }
                }
            }
        }
コード例 #18
0
        public static bool CanLinkWith2(LinkPinControl startObj, LinkPinControl endObj)
        {
            if (startObj == endObj)
            {
                return(false);
            }
            //if (endObj.LinkInfos.Count > 0)
            //    return false;
            if (startObj.HostNodeControl == endObj.HostNodeControl)
            {
                return(false);
            }
            else
            {
                CheckLinkObject(startObj, endObj);
            }


            return(true);
        }
コード例 #19
0
 public override Type GCode_GetType(LinkPinControl element, GenerateCodeContext_Method context)
 {
     if (element == mCtrlArrayElement)
     {
         return(ElementType);
     }
     else if (element == mCtrlArrayIndex)
     {
         return(typeof(int));
     }
     else if (element == mCtrlDicKey)
     {
         return(KeyType);
     }
     else if (element == mCtrlDicValue)
     {
         return(ElementType);
     }
     return(base.GCode_GetType(element, context));
 }
コード例 #20
0
        public override string GCode_GetTypeString(LinkPinControl element, GenerateCodeContext_Method context)
        {
            if (element == mCtrlArrayElement)
            {
                return(EngineNS.Rtti.RttiHelper.GetAppTypeString(ElementType));
            }
            else if (element == mCtrlArrayIndex)
            {
                return(EngineNS.Rtti.RttiHelper.GetAppTypeString(typeof(int)));
            }
            else if (element == mCtrlDicKey)
            {
                return(EngineNS.Rtti.RttiHelper.GetAppTypeString(KeyType));
            }
            else if (element == mCtrlDicValue)
            {
                return(EngineNS.Rtti.RttiHelper.GetAppTypeString(ElementType));
            }

            return(base.GCode_GetTypeString(element, context));
        }
コード例 #21
0
        void InitializeLinkControl(LASelectPoseByEnumControlConstructionParams csParam)
        {
            mActiveLinkHandle = ActiveValueHandle;

            mOutLinkHandle           = OutPoseHandle;
            mOutLinkHandle.MultiLink = false;

            mActiveLinkHandle.NameStringVisible = Visibility.Visible;
            mActiveLinkHandle.NameString        = "ActiveValue";
            mActiveLinkHandle.OnAddLinkInfo    += ActiveValueLinkHandle_OnAddLinkInfo;
            mActiveLinkHandle.OnDelLinkInfo    += ActiveValueLinkHandle_OnDelLinkInfo;


            AddLinkPinInfo("EnumActiveValueHandle", mActiveLinkHandle, null);

            AddLinkPinInfo("OutLinkHandle", mOutLinkHandle, null);

            var childPoseNodeCP = new LASPChildPoseLinkNodeControlConstructionParams()
            {
                IndexValue         = "Default",
                CSType             = CSParam.CSType,
                HostNodesContainer = this.HostNodesContainer,
            };

            mDefaultCtrl = new LASPChildPoseLinkNodeControl(childPoseNodeCP);
            AddChildNode(mDefaultCtrl, LinkNodeStackPanel);

            var childBlendTimeNodeCP = new LASPChildBlendTimeNodeControlConstructionParams()
            {
                IndexValue         = "Default",
                BlendTimeValue     = 0.1f,
                CSType             = CSParam.CSType,
                HostNodesContainer = this.HostNodesContainer,
            };

            mDefaultBlendTimeCtrl        = new LASPChildBlendTimeNodeControl(childBlendTimeNodeCP);
            mDefaultBlendTimeCtrl.Margin = new Thickness(4, 0, 0, 0);
            AddChildNode(mDefaultBlendTimeCtrl, LinkNodeStackPanel);
        }
コード例 #22
0
        public override bool CanLink(LinkPinControl selfLinkPin, LinkPinControl otherLinkPin)
        {
            if (selfLinkPin == mCasePin)
            {
                var switchNode = ParentNode as SwitchNode;
                if (!switchNode.SwitchItemPin.HasLink)
                {
                    return(false);
                }

                if (mOrigionType == typeof(string))
                {
                    return(otherLinkPin.LinkType == enLinkType.String);
                }
                else if (mOrigionType != typeof(string) && mOrigionType.IsValueType && mOrigionType.IsPrimitive)
                {
                    return((otherLinkPin.LinkType & enLinkType.NumbericalValue) == otherLinkPin.LinkType);
                }

                var type = EngineNS.Rtti.RttiHelper.GetTypeFromTypeFullName(otherLinkPin.ClassType);
                if (type == null)
                {
                    return(false);
                }
                if (type == mOrigionType)
                {
                    return(true);
                }
                if (type.IsSubclassOf(mOrigionType))
                {
                    return(true);
                }

                return(false);
            }

            return(true);
        }
コード例 #23
0
        public static void InitNodePinTypes(CodeGenerateSystem.Base.ConstructionParams smParam)
        {
            CollectLinkPinInfo(smParam, "mAlbedo", LinkPinControl.GetLinkTypeFromTypeString("float3"), enBezierType.Left, enLinkOpType.End, false);
            CollectLinkPinInfo(smParam, "mNormal", LinkPinControl.GetLinkTypeFromTypeString("float3"), enBezierType.Left, enLinkOpType.End, false);
            CollectLinkPinInfo(smParam, "mMetallic", LinkPinControl.GetLinkTypeFromTypeString("float"), enBezierType.Left, enLinkOpType.End, false);
            CollectLinkPinInfo(smParam, "mRough", LinkPinControl.GetLinkTypeFromTypeString("float"), enBezierType.Left, enLinkOpType.End, false);
            CollectLinkPinInfo(smParam, "mAbsSpecular", LinkPinControl.GetLinkTypeFromTypeString("float"), enBezierType.Left, enLinkOpType.End, false);
            CollectLinkPinInfo(smParam, "mTransmit", LinkPinControl.GetLinkTypeFromTypeString("float"), enBezierType.Left, enLinkOpType.End, false);
            CollectLinkPinInfo(smParam, "mEmissive", LinkPinControl.GetLinkTypeFromTypeString("float3"), enBezierType.Left, enLinkOpType.End, false);
            CollectLinkPinInfo(smParam, "mFuzz", LinkPinControl.GetLinkTypeFromTypeString("float"), enBezierType.Left, enLinkOpType.End, false);
            CollectLinkPinInfo(smParam, "mIridescence", LinkPinControl.GetLinkTypeFromTypeString("float"), enBezierType.Left, enLinkOpType.End, false);
            CollectLinkPinInfo(smParam, "mDistortion", LinkPinControl.GetLinkTypeFromTypeString("float"), enBezierType.Left, enLinkOpType.End, false);
            CollectLinkPinInfo(smParam, "mAlpha", LinkPinControl.GetLinkTypeFromTypeString("float"), enBezierType.Left, enLinkOpType.End, false);
            CollectLinkPinInfo(smParam, "mAlphaTest", LinkPinControl.GetLinkTypeFromTypeString("float"), enBezierType.Left, enLinkOpType.End, false);
            CollectLinkPinInfo(smParam, "mVertexOffset", LinkPinControl.GetLinkTypeFromTypeString("float3"), enBezierType.Left, enLinkOpType.End, false);
            CollectLinkPinInfo(smParam, "mSubAlbedo", LinkPinControl.GetLinkTypeFromTypeString("float3"), enBezierType.Left, enLinkOpType.End, false);
            CollectLinkPinInfo(smParam, "mAO", LinkPinControl.GetLinkTypeFromTypeString("float"), enBezierType.Left, enLinkOpType.End, false);
            CollectLinkPinInfo(smParam, "mMask", LinkPinControl.GetLinkTypeFromTypeString("float"), enBezierType.Left, enLinkOpType.End, false);

            CollectLinkPinInfo(smParam, "mShadowColor", LinkPinControl.GetLinkTypeFromTypeString("float3"), enBezierType.Left, enLinkOpType.End, false);
            CollectLinkPinInfo(smParam, "mDeepShadow", LinkPinControl.GetLinkTypeFromTypeString("float"), enBezierType.Left, enLinkOpType.End, false);
            CollectLinkPinInfo(smParam, "mMoodColor", LinkPinControl.GetLinkTypeFromTypeString("float3"), enBezierType.Left, enLinkOpType.End, false);
        }
コード例 #24
0
        public static bool CheckLinkObject(LinkPinControl startObj, LinkPinControl endObj)
        {
            var basenode = endObj.HostNodeControl as StructNodeControl;

            if (basenode != null && basenode.CtrlValueLinkHandleDown.LinkInfos.Count > 0)
            {
                var infos = basenode.CtrlValueLinkHandleDown.LinkInfos;
                for (int i = 0; i < infos.Count; i++)
                {
                    if (infos[i].m_linkToObjectInfo.HostNodeControl == startObj.HostNodeControl)
                    {
                        return(false);
                    }

                    if (CheckLinkObject(startObj, infos[i].m_linkToObjectInfo))
                    {
                        return(false);
                    }
                }
            }

            return(true);
        }
コード例 #25
0
 protected override void FilterContextMenu(LinkPinControl startLinkObj)
 {
     mContextMenuOpenMousePos = Mouse.GetPosition(MainDrawCanvas);
     ContextMenuNodeList.NodesList.FilterString = "";
     if (startLinkObj != null)
     {
         var data = new ContextMenuFilterData()
         {
             StartLinkObj         = startLinkObj,
             CSType               = CSType,
             HostContainerControl = this,
         };
         OnFilterContextMenu?.Invoke(ContextMenuNodeList, data);
     }
     else
     {
         var data = new ContextMenuFilterData()
         {
             CSType = CSType,
             HostContainerControl = this,
         };
         OnFilterContextMenu?.Invoke(ContextMenuNodeList, data);
     }
 }
コード例 #26
0
 public override async System.Threading.Tasks.Task GCode_CodeDom_GenerateCode(CodeTypeDeclaration codeClass, CodeStatementCollection codeStatementCollection, LinkPinControl element, GenerateCodeContext_Method context)
 {
     var inPoseLinkObj = mInPoseLinkHandle.GetLinkedObject(0, true);
     var inPoseLinkElm = mInPoseLinkHandle.GetLinkedPinControl(0, true);
     await inPoseLinkObj.GCode_CodeDom_GenerateCode(codeClass, codeStatementCollection, inPoseLinkElm, context);
 }
コード例 #27
0
 public override CodeExpression GCode_CodeDom_GetSelfRefrence(LinkPinControl element, GenerateCodeContext_Method context, GenerateCodeContext_PreNode preNodeContext = null)
 {
     return(new CodeVariableReferenceExpression(ValidName));
 }
コード例 #28
0
        public override async System.Threading.Tasks.Task GCode_CodeDom_GenerateCode(CodeTypeDeclaration codeClass, CodeStatementCollection codeStatementCollection, LinkPinControl element, GenerateCodeContext_Method context)
        {
            var baseLinkObj = mBaseLinkHandle.GetLinkedObject(0, true);
            var baseLinkElm = mBaseLinkHandle.GetLinkedPinControl(0, true);

            if (baseLinkObj != null)
            {
                await baseLinkObj.GCode_CodeDom_GenerateCode(codeClass, codeStatementCollection, baseLinkElm, context);
            }
            var additiveLinkObj = mAdditiveLinkHandle.GetLinkedObject(0, true);
            var additiveLinkElm = mAdditiveLinkHandle.GetLinkedPinControl(0, true);

            if (additiveLinkObj != null)
            {
                await additiveLinkObj.GCode_CodeDom_GenerateCode(codeClass, codeStatementCollection, additiveLinkElm, context);
            }

            Type nodeType = typeof(EngineNS.Bricks.Animation.BlendTree.Node.BlendTree_AdditivePose);
            CodeVariableDeclarationStatement stateVarDeclaration = new CodeVariableDeclarationStatement(nodeType, ValidName, new CodeObjectCreateExpression(new CodeTypeReference(nodeType)));

            codeStatementCollection.Add(stateVarDeclaration);
            if (baseLinkObj != null)
            {
                var baseAssign = new CodeAssignStatement();
                baseAssign.Left  = new CodeFieldReferenceExpression(new CodeVariableReferenceExpression(ValidName), "BaseNode");
                baseAssign.Right = baseLinkObj.GCode_CodeDom_GetSelfRefrence(null, null);
                codeStatementCollection.Add(baseAssign);
            }
            if (additiveLinkObj != null)
            {
                var additiveAssign = new CodeAssignStatement();
                additiveAssign.Left  = new CodeFieldReferenceExpression(new CodeVariableReferenceExpression(ValidName), "AdditiveNode");
                additiveAssign.Right = additiveLinkObj.GCode_CodeDom_GetSelfRefrence(null, null);
                codeStatementCollection.Add(additiveAssign);
            }

            var valueEvaluateMethod = new CodeMemberMethod();

            valueEvaluateMethod.Name       = ValidName + "_AlphaEvaluate";
            valueEvaluateMethod.Attributes = MemberAttributes.Public | MemberAttributes.Final;
            valueEvaluateMethod.ReturnType = new CodeTypeReference(typeof(float));
            var            valueEvaluateMethodContex = new GenerateCodeContext_Method(context.ClassContext, valueEvaluateMethod);
            CodeExpression alphaValue = await Helper.GetEvaluateValueExpression(codeClass, valueEvaluateMethodContex, valueEvaluateMethod, mAlphaValueLinkHandle, Alpha);

            valueEvaluateMethod.Statements.Add(new CodeMethodReturnStatement(alphaValue));
            codeClass.Members.Add(valueEvaluateMethod);

            var alphaAssign = new CodeAssignStatement();

            alphaAssign.Left  = new CodeFieldReferenceExpression(new CodeVariableReferenceExpression(ValidName), "EvaluateAlpha");
            alphaAssign.Right = new CodeVariableReferenceExpression(valueEvaluateMethod.Name);
            codeStatementCollection.Add(alphaAssign);
            return;
        }
コード例 #29
0
 protected override void EndLink(LinkPinControl linkObj)
 {
     return;
 }
コード例 #30
0
 public override async System.Threading.Tasks.Task GCode_CodeDom_GenerateCode(CodeTypeDeclaration codeClass, CodeStatementCollection codeStatementCollection, LinkPinControl element, GenerateCodeContext_Method context)
 {
     //subMacross
     if (mLinkedNodesContainer != null)
     {
         foreach (var ctrl in mLinkedNodesContainer.CtrlNodeList)
         {
             if (ctrl is CodeGenerateSystem.Controls.FinalTransitionResultControl)
             {
                 await ctrl.GCode_CodeDom_GenerateCode(codeClass, codeStatementCollection, element, context);
             }
         }
     }
 }