public override void OnInspectorGUI() { rtObject me = target as rtObject; GUILayout.Space(20); EditorGUILayout.PropertyField(mat, new GUIContent("mat")); EditorGUILayout.PropertyField(type, new GUIContent("type")); if (me.type == rtObject.ObjType.Sphere) { me.isPlane = GUILayout.Toggle(me.isPlane, "isPlane"); me.isMoving = GUILayout.Toggle(me.isMoving, "isMoving"); } else { } if (GUILayout.Button("preview")) { me.DoPreview(); } //if(GUILayout.Button("Test")) //{ // me.test(); //} serializedObject.ApplyModifiedProperties(); }
public sealed override object Clone() { LinkSystemObject lobj = (LinkSystemObject)value; rtObject clone = new rtObject((lobj).Clone(), null ); RunTimeScope scope = new RunTimeScope(null, objScope.blockId, null, clone, RunTimeScopeType.objectinstance); clone.objScope = scope; return(clone); }
public override void execute3(RunTimeValueBase thisObj, FunctionDefine functionDefine, SLOT returnSlot,SourceToken token,StackFrame stackframe,out bool success) { // //((rtObject)thisObj).value.memberData[0].directSet(newvalue); string pattern = TypeConverter.ConvertToString(argements[0],stackframe,token); string options = TypeConverter.ConvertToString(argements[1],stackframe,token); string pv = "/"; if (pattern != null) { pv = pv + pattern; } pv = pv + "/"; var Options = System.Text.RegularExpressions.RegexOptions.None; if (options != null) { pv = pv + options; if (options.IndexOf('s') >= 0) { ((rtObjectBase)thisObj).value.memberData[1].directSet(rtBoolean.True); Options |= System.Text.RegularExpressions.RegexOptions.Singleline; } if (options.IndexOf('x') >= 0) { ((rtObjectBase)thisObj).value.memberData[2].directSet(rtBoolean.True); Options |= System.Text.RegularExpressions.RegexOptions.IgnorePatternWhitespace; } if (options.IndexOf('g') >= 0) { ((rtObjectBase)thisObj).value.memberData[3].directSet(rtBoolean.True); } if (options.IndexOf('i') >= 0) { ((rtObjectBase)thisObj).value.memberData[4].directSet(rtBoolean.True); Options |= System.Text.RegularExpressions.RegexOptions.IgnoreCase; } if (options.IndexOf('m') >= 0) { ((rtObjectBase)thisObj).value.memberData[5].directSet(rtBoolean.True); Options |= System.Text.RegularExpressions.RegexOptions.Multiline; } } ((rtObjectBase)thisObj).value.memberData[0].directSet(new rtString(pv)); if (pattern != null) { ((rtObjectBase)thisObj).value.memberData[6].directSet(new rtString(pattern)); } else { ((rtObjectBase)thisObj).value.memberData[6].directSet(rtNull.nullptr); } ((rtObjectBase)thisObj).value.memberData[7].directSet(new rtNumber(0)); try { System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(pattern, Options); HostedObject hobj = new HostedObject(stackframe.player.swc.ObjectClass); hobj.hosted_object = regex; rtObject rtobj = new rtObject(hobj, null); ((rtObjectBase)thisObj).value.memberData[8].directSet(rtobj); success = true; returnSlot.directSet(rtUndefined.undefined); } catch (ArgumentException ex) { success = false; stackframe.throwArgementException(token, ex.Message); } //((HostedObject)((rtObject)thisObj).value).hosted_object = regex; }
public static void forin_get_enumerator(StackFrame frame, OpStep step, RunTimeScope scope) { var player = frame.player; SLOT slot = step.reg.getSlot(scope,frame); ASBinCode.rtti.HostedDynamicObject saveObj = new HostedDynamicObject(player.swc.ObjectClass); rtObject save = new rtObject(saveObj,null); slot.directSet(save); var obj = step.arg1.getValue(scope,frame); if (obj.rtType > RunTimeDataType.unknown) { rtObject rtObj = (rtObject)obj; if (ClassMemberFinder.isInherits(rtObj.value._class, player.swc.primitive_to_class_table[RunTimeDataType.rt_array])) { rtArray arr = (rtArray)rtObj.value.memberData[0].getValue(); saveObj.hosted_object = getArrayForIn(arr.innerArray); } else if (player.swc.dict_Vector_type.ContainsKey(rtObj.value._class)) { saveObj.hosted_object = getArrayForIn(((Vector_Data)((HostedObject)rtObj.value).hosted_object).innnerList); } else if (ClassMemberFinder.isImplements(rtObj.value._class,player.swc.IEnumerableInterface)) { //***调用getIEnumerator方法**** var movenext = ClassMemberFinder.find( frame.player.swc.IEnumerableInterface,"getEnumerator", frame.player.swc.IEnumerableInterface); var method = ((InterfaceMethodGetter)movenext.bindField).getMethod( rtObj); //***调用方法*** var funCaller = player.funcCallerPool.create(frame,step.token); //funCaller.releaseAfterCall = true; funCaller.SetFunction((rtFunction)method); ((rtFunction)method).Clear(); funCaller.loadDefineFromFunction(); if (!funCaller.createParaScope()) { return; } funCaller._tempSlot = frame._tempSlot1; funCaller.returnSlot = frame._tempSlot1; BlockCallBackBase cb = frame.player.blockCallBackPool.create(); cb.setCallBacker(D_getEnumerator_callbacker); cb.step = step; cb.args = frame; cb.scope = scope; funCaller.callbacker = cb; funCaller.call(); return; } else if (ClassMemberFinder.isImplements( rtObj.value._class,player.swc.IEnumeratorInterface)) { saveObj.hosted_object = rtObj; } else { IEnumerator <RunTimeValueBase> forinenum = getForinIEnumerator(player,rtObj.value,frame,step,scope); saveObj.hosted_object = forinenum; } } frame.endStep(); }